[cfe-dev] RFC: missing libclang query functions / features

Douglas Gregor dgregor at apple.com
Tue Feb 15 13:14:20 PST 2011

On Feb 15, 2011, at 12:29 PM, Stefan Seefeld wrote:

> Here is a list of queries I'd like to express via libclang, but 
> presumably can't.
> Could you please confirm that these aren't yet implemented ? (I may 
> start working on patches in that case.)
> * clang_CXXMethod_isStatic() queries whether a member function is 
> static. There appears to be no such thing for 'virtual' and 'const'. 

Correct. The API should expose information about 'virtual', cv-qualifiers, and ref-qualifiers on C++ member functions.

> Also, a similar query (for static) would be useful for non-function 
> members ("fields").

It's actually not needed. Non-static data members are fields; static data members are described as variables.

> * clang_getCXXAccessSpecifiers() is documented to report the access 
> control for a base class (which the cursor argument is referring to). 
> May this function be extended to also report access level for members.

I think that's a great idea.

> * There doesn't appear to be any function to query a function's 
> exception specifier.

Correct; we don't expose that information.

> * Would it be possible to report dependent types / expressions with a 
> new cursor type, instead of the common "UnexposedExpr" ?

Dependent types and expressions can take many forms, including forms that already have "exposed" cursor kinds (e.g., a declaration reference expression can be type-dependent). If you need type- and value-dependence information, I suggest adding clang_isTypeDependent()/clang_isValueDependent() that operates on expression cursors.

	- Doug

More information about the cfe-dev mailing list