[cfe-dev] Obtaining the parent of a given libclang CXCursor
    David Röthlisberger 
    david at rothlis.net
       
    Wed Aug  1 10:27:33 PDT 2012
    
    
  
On 1 Aug 2012, at 14:44, Nick Beer wrote:
> 
> Consider the following code: 
> 
> #include <stddef.h> 
> void foo() { 
>    size_t a; 
> } 
> 
> If I were to get the FunctionDecl cursor and then visit its children, I
> would get the following tree:
> 
> FunctionDecl 
> CompoundStmt 
>    DeclStmt 
>        VarDecl 
>            TypeRef 
> 
> What I really want is to be able to walk up the tree, instead of only down. 
I'm afraid I'm stumped. My suggestion of using
clang_getCursor{Lexical,Semantic}Parent won't work. With the example
code you gave, each cursor's parents are: (Lexical Parent, Semantic
Parent)
FunctionDecl  [TranslationUnit, TranslationUnit]
 CompoundStmt  [None, FunctionDecl]
   DeclStmt  [None, None]
     VarDecl  [FunctionDecl, FunctionDecl]
       TypeRef  [None, None]
I don't really know the AST API, so I can't say whether the above parent
values are correct or a bug. My (naive) expectation was that the lexical
parent was always the cursor immediately preceding in that hierarchy,
but maybe there's a reason it isn't so.
Cheers,
Dave.
    
    
More information about the cfe-dev
mailing list