accessing if-condition from if-statement node in libclang


I’m using libclang for a visual documentation tool for C++ codes, Flowgen, under current development.

I’d like Flowgen to access automatically the condition of an if-statement. Example:

if ( varMax == 4 &&
varOther ==2 ) {
std::cout << “test”;
} else if{
std::cout << “test1”;
} else {
std::cout << “test2”;

Imagine that I have accessed the if-statement node/Cursor with libclang
#clang node types (CursorKind)
#205: if statement

I’d like to have (direct) access to the string “varMax == 4 && varOther ==2”.
I’d like to have (direct) access as well to the else-if node and the else node.
Anyone knows how? Thank you and best regards,

Juan J. Lopez-Villarejo

Hi Juan,

The easiest way to get the actual text is to simply get the tokens belonging to the respective cursors (e.g. ‘’.join(cursor.get_tokens())). I think this should get you what you want.

Sorry, that example should have been ’ '.join([t.spelling for t in cursor.get_tokens()])

I just tried this, and it seems that tokens can be off by one, I had to shave off the last one to get a correct representation.

Thank you, I’ll try this out.