[cfe-dev] Decl iterators

silhape2 at fel.cvut.cz silhape2 at fel.cvut.cz
Mon Feb 14 05:06:28 PST 2011


Dear clang developers,

I have a problem when I am trying to do some analysis with clang. I  
need to get all typedef decls that are inside the class or struct. I  
need this for my bachelor thesis. The part of source code of the file  
I want to analyse is:

class state_1 : sc :: simple_state< state_1, DU>
{
     state_1() { cout<<"Chcete zformatovat vas disk (a/n) ? \n";}
     ~state_1() {}
     typedef sc::transition< EvN, state_2 > reactions;
};

It is no problem to get constructor and destructor and other methods  
in the class. The problem is to reach the typedef decl.

The only way I found was to create my own iterator and to put it into  
the header files of clang(DeclCXX.h). I created the iterator by using  
this code:

typedef specific_decl_iterator<TypedefDecl> typedef_iterator;

   /// it_begin - Typedef begin iterator.  Iterates in the order the Typedefs
   /// were declared.
   typedef_iterator td_begin() const {
     return typedef_iterator(decls_begin());
   }
   /// it_end - Typedef end iterator.
   typedef_iterator td_end() const {
     return typedef_iterator(decls_end());
   }

My question is whether there is a better way how to iterate through  
all typedef decls inside the class without updating header files of  
clang? If it isn't could I ask your to add this part of code to your  
header files?(To header file DeclCXX.h).

Best regards

Petr Silhavik




More information about the cfe-dev mailing list