Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] CDT DOM Usage


A couple of comments:
1.  Use the interfaces instead of the implementing classes, ie ICPPClassType instead of CPPClassType.  This becomes a bigger issue when dealing with code that has templates.
2.  You can check IASTName.isDeclaration(), isDefinition, isReference, to determine the relationship between the IASTName and the resulting binding.  There is one binding for a class A, and all declarations and references to A will return the same binding.
3.  Realize you are parsing the entire translation unit (including headers) and not just your file.  IASTNode (which IASTName extends) has methods for getting the the containg file or location of the IASTName.


-Andrew

cdt-dev-bounces@xxxxxxxxxxx wrote on 09/28/2005 02:54:52 PM:

> On Wed, 2005-09-28 at 14:39 -0400, Nick Allen wrote:
> > BTW, for now I am simply trying to parse a file and determine the C++
> > classes which have been declared in that file.
>
> At this point, I have found that I can do the following.  Any criticisms
> on the following code would be appreciated.  
>
> IFile file = ...
> IASTTranslationUnit ast = CDOM.getInstance().getTranslationUnit(file);
> CPPNameCollector col = new CPPNameCollector();
> ast.accept(col);
>            
> Iterator i = col.nameList.iterator();
> while (i.hasNext()) {
>    IASTName n = (IASTName) i.next();
>    IBinding binding = n.resolveBinding();
>    
>    if(binding instanceof CPPClassType) {
>       // do something with the class
>    }
> }
>
> Small code examples like this would certainly help those unfamaliar with
> the new CDT DOM become familiar.
>
> Thanks
> Nick
>
>
> Nick Allen <nwa@xxxxxxxxxxxxxxxx>
>
> _______________________________________________
> cdt-dev mailing list
> cdt-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/cdt-dev

Back to the top