namespace na {
namespace nb {
namespace nc {
int val;
}
}
}
na::nb::nc::val = 42;
Есть ли способ извлечь все вложенные спецификаторы пространства имен, которые предшествуют val
отдельно (na
, nb
и nc
)?
bool VisitDeclRefExpr(clang::DeclRefExpr *DeclRef) {
if (DeclRef->hasQualifier()) {
clang::SourceLocation BeginLoc = DeclRef->getQualifierLoc().getBeginLoc(),
EndLoc = DeclRef->getQualifierLoc().getEndLoc();
const char *begin = SourceManager.getCharacterData(BeginLoc),
*end = SourceManager.getCharacterData(EndLoc);
llvm::outs() << std::string(begin, end - begin) << "\n";
}
return true;
}
Код предоставляет na::nb::nc
в качестве выходных данных, которые могут быть легко разделены ::
разделителем.
Я надеюсь выяснить, как решить эту проблему, используя только Clang
и LLVM
API. На что стоит обратить внимание и искать? Спасибо.