[cfe-dev] Filtering declarations based on the a file with the C API

Jacob Carlborg doob at me.com
Mon Jan 30 13:22:58 PST 2012

I'm creating a tool that visits all the declarations in a file and 
collects some information about them. I'm only interested in the 
declarations that are actually written in the file and not coming from 
an include. I got help here doing this before with the C++ API, I'm 
trying to do the same thing now with the C API.

This is the code I have that uses the C++ API:

bool shouldSkipDeclaration (Decl* declaration)
     if (!declaration || declaration->getLocation().isInvalid())
         return true;

     FileID fileId = sourceManager->getFileID(declaration->getLocation());

     if (sourceManager->getMainFileID() != fileId)
         return true;

     return false;

This method is used in a class which is a subclass to ASTConsumer. 
"sourceManager" is the SourceManager from the ASTContext received in the 
"Initialize" method.

I think this is code quite old now and I don't know if it's still valid.

/Jacob Carlborg

More information about the cfe-dev mailing list