views:

133

answers:

1

Where are good and current resources for anyone hacking on the CDT (C/C++ development toolkit) for Eclipse? In particular, I would like to know more about the internal architecture and structure of the C++ parser, and how the AST, DOM, PDOM, Models, and UI interrelate and interact. My interest is in adding support for extensions to C++ to the CDT environment.

Many of the resources that are found via google are obsolete: I would like information about the current state of CDT e.g. CDT 6.0.x or 6.1.x, roughly Eclipse 3.5 and 3.6. The code base, while seemingly well structured, is large, complex and sparsely commented / documented.

Any sort of information useful to a programmer working on the CDT C++ support with respect to the CDT editor and outline views would be appreciated.

Resources I have found are: The blog of CDT developer Doug Schaefer is one. The CDT-dev mailing list is another, and the homepage of the CDT project has a developer section too. Getting started with CDT development. and a section on programming against the CDT in the User FAQ. There is also an overview of parsing.

+1  A: 

My first stop on anything like this I want to do has always been:

The Eclipse Corner Articles

Here you will find the best articles on any subject within eclipse. However, it is not extensive, and articles may be outdated (but not often). Do remember that even old articles for previous versions of Eclipse may still give an accurate representation of the current situation, and often just a few minor things have changed.

If I remember correctly from a plug-in I wrote my self several years back, the architecture of the CDT AST and family is very similar to the JDT so it may help to expand your search to include the Java equivalents.

I do wish you good luck, because as you said the CDT is sparsely documented, and you will have to figure some things out on your own. Also the quality of the code in Eclipse varies wildly, although the central modules (of which JDT and CDT are two) are quite good if I remember correctly.

NomeN