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