//--------------------------------------------------------------------------------------// // возвращает полное им¤ у типов, если они наход¤тс¤ в неймспейсе //--------------------------------------------------------------------------------------// 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; }
//--------------------------------------------------------------------------------------// // возвращает полное им¤ у типов, которые пр¤чутьс¤ за тайпдифом //--------------------------------------------------------------------------------------// 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())); return type.toString(); } } return _type; }