Skip to main content

[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

Back to the top