Finding the name and position of a function/method is easy:
DeclarationNameInfo dni = fd -> getNameInfo();
SourceRange dniSr = dni.getSourceRange(); // dniSr is position and length of name in source file
std::string name = dni.getName().getAsString(); // name of function/method
But how can I get this information for variables? Both the name and
sourcerange.
I looked in getQualifier +Loc of DeclaratorDecl but they're always
missing it seems?
DeclarationNameInfo dni = fd -> getNameInfo();
SourceRange dniSr = dni.getSourceRange(); // dniSr is position and length of name in source file
std::string name = dni.getName().getAsString(); // name of function/method
But how can I get this information for variables? Both the name and
sourcerange.
I looked in getQualifier +Loc of DeclaratorDecl but they're always
missing it seems?
What I mean is:
DeclaratorDecl::getQualifierLoc().getNestedNameSpecifier() always
returns NULL while I expect a NestedNameSpecifier object.
Just run make and then ./parse and you'll see it saying that "! NO
NestedNameSpecifier".
The test-code is test.cpp and the file it parses is example.cpp.
> DeclarationNameInfo dni = fd -> getNameInfo();
> SourceRange dniSr = dni.getSourceRange(); // dniSr is position and length of name in source file
> std::string name = dni.getName().getAsString(); // name of function/method
>
> But how can I get this information for variables? Both the name and
> sourcerange.
> I looked in getQualifier +Loc of DeclaratorDecl but they're always
> missing it seems?
What I mean is:
DeclaratorDecl::getQualifierLoc().getNestedNameSpecifier() always
returns NULL while I expect a NestedNameSpecifier object.