[cfe-dev] Querying C++ function declarations

Oksana Tkachuk oksana.tkachuk at us.fujitsu.com
Wed Sep 22 18:29:33 PDT 2010


Hi Ted,
>
> If the FunctionDecl represents a C++ method, it actually will be an instance of CXXMethodDecl.  Try doing:
>
>   FunctionDecl *FD = ...
>   ...
>   if (CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD)) {
>
>
>   }
>
> Once you have a CXXMethodDecl*, you should be able to directly do most of the things you are asking for, including finding the enclosing class (via getParent()).  I don't know off the top of my head, however, how to get the access control (as it was declared) for the method.
>
Thank you for the detailed answer. For finding the enclosing class,
MD->getParent() works nicely.
For the access control, it's MD->getAccess().

Thanks,
Oksana.
> On Sep 20, 2010, at 5:13 PM, Oksana Tkachuk wrote:
>
>
>> Hello,
>> I am new to Clang and I would like to use it (as a library, not a
>> command-line tool) to perform some basic structural analysis of C++
>> functions.
>> Given a "FunctionDecl" object, I would like to find out the function's
>> declaring (enclosing) class and the function's access level
>> (public/private).
>> Which Clang APIs could be used to find this info? Code samples would be
>> very helpful.
>>
>> Thank you,
>> Oksana.
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>
>
>




More information about the cfe-dev mailing list