[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| Re: [cdt-dev] Problem getting CFunctions when other headers are	included | 
  
  
    CFunction func = (CFunction)bind;
                            if(func.getPhysicalNode().isPartOfTranslationUnitFile())
    
    That piece of code helped me to check if function declaration is in the Header I built TransUnit for it.
    
    Problem solved.
    
    
    "patrick.schmitt@xxxxxxx" <patrick.schmitt@xxxxxxx> hat am 5. Oktober 2009 um 16:25 geschrieben:
    
    > I tried things like: 
    > transUnit.getAST(null,ITranslationUnit.AST_SKIP_INDEXED_HEADERS | 
    >                     ITranslationUnit.AST_SKIP_NONINDEXED_HEADERS);
    > 
    > But then i cannot resolve types defined in other headers....
    > 
    > "patrick.schmitt@xxxxxxx" <patrick.schmitt@xxxxxxx> hat am 5. Oktober 2009 um
    > 16:20 geschrieben:
    > 
    > > Hello guys,
    > > I have a problem with my CDT AST Parser Plugin.
    > > 
    > > I wanted to get all CFUnctions of a single header file. But when including
    > > other
    > > headers in that file,
    > > e.g. windows.h, i get thousands of functions declarations, even i just want
    > > the
    > > declaration of that single header file. I think I am doing something wrong
    > > basicly....
    > > 
    > > Here is my code:
    > > // object when right click on header file
    > > IStructuredSelection sel = (IStructuredSelection) _select;
    > > // get the translation unit
    > > if (sel.getFirstElement() instanceof ITranslationUnit)
    > > {
    > >     // create transUnit
    > >     tUnit = (ITranslationUnit) sel.getFirstElement();
    > >     // get AST of the ITranslationUnit
    > >     _astUnit = tUnit .getAST();
    > >     decs = _astUnit.getDeclarations();
    > > 
    > >     for (IASTDeclaration dec : decs)
    > >         {
    > >             // if its a simple declaration
    > >             if (dec instanceof IASTSimpleDeclaration)
    > >             {
    > >                 // cast to simple declaration
    > >                 simplDec = (IASTSimpleDeclaration)dec;
    > > 
    > >                 // cast the declarator
    > >                 declas = simplDec.getDeclarators();
    > > 
    > >                 // only if its a functionDeclarator
    > >                 if (declas.length > 0
    > >                         && declas[0] instanceof IASTFunctionDeclarator)
    > >                 {
    > >                     // cast to function declarator
    > >                     IASTFunctionDeclarator funcDecl =
    > > (IASTFunctionDeclarator)declas[0];
    > >                     // HERE WE GO WITH THE FUNCTION
    > >                     // .....
    > >                   }
    > >             }
    > >     }
    > > 
    > > Maybe anybody has an idea ?
    > > 
    > > 
    > > Sincerly
    > > Patrick