Beispiel #1
0
	//--------------------------------------------------------------------------------------//
	// возвращает полное им¤ у типов, если они наход¤тс¤ в неймспейсе
	//--------------------------------------------------------------------------------------//
	std::string getTypeNamespace(const std::string& _type, Compound * _root, const std::string& _namespace)
	{
		TypeInfo type(_type);
		type.setOnlyType(_namespace + "::" + type.getType());

		Compound::Enumerator enumerator = _root->getEnumerator();
		while (enumerator.next())
		{
			if (enumerator->getType() != "compound" ||
				enumerator->getName() != type.getType()) continue;
			return type.toString();
		}

		return _type;
	}
Beispiel #2
0
	//--------------------------------------------------------------------------------------//
	// возвращает полное им¤ у типов, которые пр¤чутьс¤ за тайпдифом
	//--------------------------------------------------------------------------------------//
	std::string getTypedef(const std::string& _type, Compound* _root)
	{
		TypeInfo type(_type);

		Compound::Enumerator enumerator = _root->getEnumerator();
		while (enumerator.next())
		{
			if (enumerator->getType() != "compound" ||
				enumerator->getKind() != "namespace") continue;

			Compound::Enumerator enumerator2 = enumerator->getEnumerator();
			while (enumerator2.next())
			{
				if (enumerator2->getKind() != "typedef" ||
					enumerator2->getName() != type.getType()) continue;

				Member* member = getByRef(enumerator->getId(), enumerator2->getId());
				type.setOnlyType(correctPlatformType(enumerator->getName(), member->getType()));
				delete member;
				member = 0;

				return type.toString();
			}
		}

		return _type;
	}
Beispiel #3
0
	//--------------------------------------------------------------------------------------//
	// возвращает информацию по типу и по имени
	//--------------------------------------------------------------------------------------//
	Compound* getCompound(const std::string& _kind, const std::string& _name, Compound * _root)
	{
		Compound::Enumerator enumerator = _root->getEnumerator();
		while (enumerator.next())
		{
			if (enumerator->getType() != "compound" ||
				enumerator->getKind() != _kind ||
				enumerator->getName() != _name) continue;

			return enumerator.current();
		}
		return nullptr;
	}