in facebook-clang-plugins/libtooling/ASTExporter.h [920:962]
void ASTExporter<ATDWriter>::dumpNestedNameSpecifierLoc(
NestedNameSpecifierLoc NNS) {
SmallVector<NestedNameSpecifierLoc, 8> NestedNames;
while (NNS) {
NestedNames.push_back(NNS);
NNS = NNS.getPrefix();
}
ArrayScope Scope(OF, NestedNames.size());
while (!NestedNames.empty()) {
NNS = NestedNames.pop_back_val();
NestedNameSpecifier::SpecifierKind Kind =
NNS.getNestedNameSpecifier()->getKind();
ObjectScope Scope(OF, 2);
OF.emitTag("kind");
switch (Kind) {
case NestedNameSpecifier::Identifier:
OF.emitSimpleVariant("Identifier");
break;
case NestedNameSpecifier::Namespace:
OF.emitSimpleVariant("Namespace");
OF.emitTag("ref");
dumpDeclRef(*NNS.getNestedNameSpecifier()->getAsNamespace());
break;
case NestedNameSpecifier::NamespaceAlias:
OF.emitSimpleVariant("NamespaceAlias");
OF.emitTag("ref");
dumpDeclRef(*NNS.getNestedNameSpecifier()->getAsNamespaceAlias());
break;
case NestedNameSpecifier::TypeSpec:
OF.emitSimpleVariant("TypeSpec");
break;
case NestedNameSpecifier::TypeSpecWithTemplate:
OF.emitSimpleVariant("TypeSpecWithTemplate");
break;
case NestedNameSpecifier::Global:
OF.emitSimpleVariant("Global");
break;
case NestedNameSpecifier::Super:
OF.emitSimpleVariant("Super");
break;
}
}
}