[cfe-dev] Adding C++ code with a plugin

Benjamin Orgogozo benjamin.orgogozo at normalesup.org
Thu Jul 21 08:50:36 PDT 2011


I'm new to this mailing-list and to CLANG in general so please forgive me if I
ask a quite stupid question...

I've been reading a few mailing lists and webpages on CLANG now but I can't find
a clear answer to my question so I hope someone here could at least point me to
the correct resource.

My goal is simple: I want to compile a C++ code but after automatically adding a
few lines of code. Here are my question:

- can (or want) I do that with a plugin? At the beginning I wanted to write a
plugin to the front-end and change the AST but it seems (but I hope I'm wrong)
that when I use the "load" and "plugin" command line option, I can't generate
code at the end. Is it true or not?

- How should I do this transformation? The code I want to add is really simple:
I just want to add function calls in the constructor of classes with specific
class members as parameters.
For example, I want to transform:

class A {
  float f;
class foo {
  int bar;
  foo() {}


class A {
  float f;
class foo {
  int bar;

  foo() {baz(bar);}

It seems that I have two options:
  * use a rewriter to add nodes within the AST, but it seems that it's only for
source to source transformation (and I would like to avoid that if possible).
  * use a TreeTransform which looks fine but I think I read somewhere that it
modifiying the AST for compiling it later wasn't always a good idea.

>From what I understood, it seems that I want to use treetransform, but I wonder
if I can use it within a plugin *and* generate code with only one call to clang.

Any comment and pointer is more than welcome!


 Benjamin Orgogozo 

More information about the cfe-dev mailing list