in facebook-clang-plugins/libtooling/ASTExporter.h [865:905]
void ASTExporter<ATDWriter>::dumpDeclarationName(const DeclarationName &Name) {
ObjectScope Scope(OF, 2); // not covered by tests
OF.emitTag("kind");
switch (Name.getNameKind()) {
case DeclarationName::Identifier:
OF.emitSimpleVariant("Identifier");
break;
case DeclarationName::ObjCZeroArgSelector:
OF.emitSimpleVariant("ObjCZeroArgSelector");
break;
case DeclarationName::ObjCOneArgSelector:
OF.emitSimpleVariant("ObjCOneArgSelector");
break;
case DeclarationName::ObjCMultiArgSelector:
OF.emitSimpleVariant("ObjCMultiArgSelector");
break;
case DeclarationName::CXXConstructorName:
OF.emitSimpleVariant("CXXConstructorName");
break;
case DeclarationName::CXXDestructorName:
OF.emitSimpleVariant("CXXDestructorName");
break;
case DeclarationName::CXXConversionFunctionName:
OF.emitSimpleVariant("CXXConversionFunctionName");
break;
case DeclarationName::CXXOperatorName:
OF.emitSimpleVariant("CXXOperatorName");
break;
case DeclarationName::CXXLiteralOperatorName:
OF.emitSimpleVariant("CXXLiteralOperatorName");
break;
case DeclarationName::CXXUsingDirective:
OF.emitSimpleVariant("CXXUsingDirective");
break;
case DeclarationName::CXXDeductionGuideName:
OF.emitSimpleVariant("CXXDeductionGuideName");
break;
}
OF.emitTag("name");
OF.emitString(Name.getAsString());
}