Comment obtenir l’emplacement du nom de la variable dans clang :: VarDecl

J’utilise la bibliothèque Clang 3.0 pour une parsing du code C / C ++, et je dois obtenir l’emplacement de la déclaration de variable, j’ai essayé ce 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()); 

Mais locStart et locEnd pointe vers le début (et la fin) de la variable de déclaration (avec le type et, éventuellement, l’initialiseur). Par exemple:

 const char * ptr = 0; ^ ^ ^ ^ 

locStart pointera vers le premier pointeur ( ^ ) et locEnd pointera vers le dernier pointeur. Comment puis-je obtenir l’emplacement des deuxième et troisième pointeurs (seul nom, sans type ni initialiseur)?

Je ne suis actuellement pas en mesure de le tester, mais je pense que vous souhaitez extraire le SourceLocation obtenu par getLocation() de votre VarDecl . Cette fonction est en réalité définie par la classe de base Decl . Bien qu’il semble n’identifier qu’un seul emplacement, il semble être utilisable pour identifier le nom complet (je n’ai pas essayé d’extraire ses extrémités individuelles, mais je l’ai simplement utilisé pour indiquer la variable).