[cfe-dev] extracting name of type with cindex

Mark Moreno kramonerom at gmail.com
Tue May 8 16:02:07 PDT 2012


BTW, ... am I doing something fundamentally wrong here? eg, is this
something that is explicitly not supported by the API? just lack of
python bindings? did I miss something obvious on how to do this?
should I open a bug?

Thanks,
Mark

On Tue, May 8, 2012 at 8:52 AM, Mark Moreno <kramonerom at gmail.com> wrote:
> Hello,
>
> let's say I have:
>
> class Test {
>  int foo;
>  vector<string> bar;
>  char* ptr;
> };
>
> with cindex, I want to extract the variable name and data type from
> this class, eg, I want to have 'int', 'foo', 'vector<string>', 'bar',
> 'char*', 'ptr'.
>
> Getting into the class with a cursor seems easy, as getting the
> variable, but how do I get the original representation of the type?
>
> If I use something like:
>
> print >>output, cursor.type.kind.spelling,
> cursor.type.get_declaration().spelling, cursor.spelling, cursor.kind,
> cursor.kind.name
>
> I get back:
>
> Int None foo CursorKind.FIELD_DECL FIELD_DECL
> Unexposed vector bar CursorKind.FIELD_DECL FIELD_DECL
> Pointer None ptr CursorKind.FIELD_DECL FIELD_DECL
>
> Any easy way to get the original representation of the type? or at
> least reconstruct what it should be like?
> Is this a shortcoming of the python API? would I have better luck
> using the C++ one? anyone who can point me in the right direction?
>
> Instead of Int, I'd like int, instead of Unexposed vector, I'd like
> vector<string>, ...
>
> (trying to build a tool for serialization, that needs the original
> data type for diagnostic purposes and to generate code)
>
> Thank you in advance,
> Mark




More information about the cfe-dev mailing list