I’m using clang 3.0 library for some analysis of C/C++ code, and I need to get location of variable declaration, I tried this code:
clang::VarDecl * vd = ...;
clang::SourceManager & srcMgr = ...;
clang::SourceRange loc = vd->getSourceRange();
clang::PresumedLoc locStart = srcMgr.getPresumedLoc(loc.getBegin());
clang::PresumedLoc locEnd = srcMgr.getPresumedLoc(loc.getEnd());
But locStart and locEnd points to the beginning (and ending) of declaration variable (with type, and, possibly initialiser). For example:
const char * ptr = 0;
^ ^ ^ ^
locStart will point at the first pointer(^) , and locEnd will point at the last pointer. How can I get the location of the second and third pointers (only name, without type and initialiser)?
I’m currently not in the position to test it but I think you want to extract the
SourceLocationobtained bygetLocation()from yourVarDecl. This function is actually defined by theDeclbase class. Although it seems to identify just one location it seems to be usable to identify the entire name (I haven’t tried to extract its individual ends, however, just used it to indicate the variable).