mirror of https://github.com/libAthena/athena.git
Ignore unqualified template types in atdna
This commit is contained in:
parent
a87832e357
commit
80e03dbe12
|
@ -710,8 +710,10 @@ class ATDNAEmitVisitor : public clang::RecursiveASTVisitor<ATDNAEmitVisitor>
|
||||||
for (const clang::FieldDecl* field : decl->fields())
|
for (const clang::FieldDecl* field : decl->fields())
|
||||||
{
|
{
|
||||||
clang::QualType qualType = field->getType();
|
clang::QualType qualType = field->getType();
|
||||||
clang::TypeInfo regTypeInfo = context.getTypeInfo(qualType);
|
|
||||||
const clang::Type* regType = qualType.getTypePtrOrNull();
|
const clang::Type* regType = qualType.getTypePtrOrNull();
|
||||||
|
if (!regType || regType->getTypeClass() == clang::Type::TemplateTypeParm)
|
||||||
|
continue;
|
||||||
|
clang::TypeInfo regTypeInfo = context.getTypeInfo(qualType);
|
||||||
while (regType->getTypeClass() == clang::Type::Elaborated ||
|
while (regType->getTypeClass() == clang::Type::Elaborated ||
|
||||||
regType->getTypeClass() == clang::Type::Typedef)
|
regType->getTypeClass() == clang::Type::Typedef)
|
||||||
regType = regType->getUnqualifiedDesugaredType();
|
regType = regType->getUnqualifiedDesugaredType();
|
||||||
|
@ -1068,8 +1070,10 @@ class ATDNAEmitVisitor : public clang::RecursiveASTVisitor<ATDNAEmitVisitor>
|
||||||
for (const clang::FieldDecl* field : decl->fields())
|
for (const clang::FieldDecl* field : decl->fields())
|
||||||
{
|
{
|
||||||
clang::QualType qualType = field->getType();
|
clang::QualType qualType = field->getType();
|
||||||
clang::TypeInfo regTypeInfo = context.getTypeInfo(qualType);
|
|
||||||
const clang::Type* regType = qualType.getTypePtrOrNull();
|
const clang::Type* regType = qualType.getTypePtrOrNull();
|
||||||
|
if (!regType || regType->getTypeClass() == clang::Type::TemplateTypeParm)
|
||||||
|
continue;
|
||||||
|
clang::TypeInfo regTypeInfo = context.getTypeInfo(qualType);
|
||||||
while (regType->getTypeClass() == clang::Type::Elaborated ||
|
while (regType->getTypeClass() == clang::Type::Elaborated ||
|
||||||
regType->getTypeClass() == clang::Type::Typedef)
|
regType->getTypeClass() == clang::Type::Typedef)
|
||||||
regType = regType->getUnqualifiedDesugaredType();
|
regType = regType->getUnqualifiedDesugaredType();
|
||||||
|
@ -1842,8 +1846,10 @@ class ATDNAEmitVisitor : public clang::RecursiveASTVisitor<ATDNAEmitVisitor>
|
||||||
for (const clang::FieldDecl* field : decl->fields())
|
for (const clang::FieldDecl* field : decl->fields())
|
||||||
{
|
{
|
||||||
clang::QualType qualType = field->getType();
|
clang::QualType qualType = field->getType();
|
||||||
clang::TypeInfo regTypeInfo = context.getTypeInfo(qualType);
|
|
||||||
const clang::Type* regType = qualType.getTypePtrOrNull();
|
const clang::Type* regType = qualType.getTypePtrOrNull();
|
||||||
|
if (!regType || regType->getTypeClass() == clang::Type::TemplateTypeParm)
|
||||||
|
continue;
|
||||||
|
clang::TypeInfo regTypeInfo = context.getTypeInfo(qualType);
|
||||||
while (regType->getTypeClass() == clang::Type::Elaborated ||
|
while (regType->getTypeClass() == clang::Type::Elaborated ||
|
||||||
regType->getTypeClass() == clang::Type::Typedef)
|
regType->getTypeClass() == clang::Type::Typedef)
|
||||||
regType = regType->getUnqualifiedDesugaredType();
|
regType = regType->getUnqualifiedDesugaredType();
|
||||||
|
|
|
@ -539,23 +539,24 @@ public:
|
||||||
inline const YAMLNode* getRootNode() const {return m_rootNode.get();}
|
inline const YAMLNode* getRootNode() const {return m_rootNode.get();}
|
||||||
std::unique_ptr<YAMLNode> releaseRootNode() {return std::move(m_rootNode);}
|
std::unique_ptr<YAMLNode> releaseRootNode() {return std::move(m_rootNode);}
|
||||||
|
|
||||||
void enterSubRecord(const char* name)
|
bool enterSubRecord(const char* name)
|
||||||
{
|
{
|
||||||
YAMLNode* curSub = m_subStack.back();
|
YAMLNode* curSub = m_subStack.back();
|
||||||
if (curSub->m_type == YAML_SEQUENCE_NODE)
|
if (curSub->m_type == YAML_SEQUENCE_NODE)
|
||||||
{
|
{
|
||||||
int& seqIdx = m_seqTrackerStack.back();
|
int& seqIdx = m_seqTrackerStack.back();
|
||||||
m_subStack.push_back(curSub->m_seqChildren[seqIdx++].get());
|
m_subStack.push_back(curSub->m_seqChildren[seqIdx++].get());
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
for (const auto& item : curSub->m_mapChildren)
|
for (const auto& item : curSub->m_mapChildren)
|
||||||
{
|
{
|
||||||
if (!item.first.compare(name))
|
if (!item.first.compare(name))
|
||||||
{
|
{
|
||||||
m_subStack.push_back(item.second.get());
|
m_subStack.push_back(item.second.get());
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void leaveSubRecord()
|
void leaveSubRecord()
|
||||||
|
@ -572,7 +573,7 @@ public:
|
||||||
leaveSubRecord();
|
leaveSubRecord();
|
||||||
}
|
}
|
||||||
|
|
||||||
void enterSubVector(const char* name)
|
bool enterSubVector(const char* name)
|
||||||
{
|
{
|
||||||
YAMLNode* curSub = m_subStack.back();
|
YAMLNode* curSub = m_subStack.back();
|
||||||
for (const auto& item : curSub->m_mapChildren)
|
for (const auto& item : curSub->m_mapChildren)
|
||||||
|
@ -582,9 +583,10 @@ public:
|
||||||
YAMLNode* nextSub = item.second.get();
|
YAMLNode* nextSub = item.second.get();
|
||||||
m_subStack.push_back(nextSub);
|
m_subStack.push_back(nextSub);
|
||||||
m_seqTrackerStack.push_back(0);
|
m_seqTrackerStack.push_back(0);
|
||||||
break;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void leaveSubVector()
|
void leaveSubVector()
|
||||||
|
|
Loading…
Reference in New Issue