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

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


Hello,

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() {}
  };

  into

  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!

Thanks,

-- 
 Benjamin Orgogozo 



More information about the cfe-dev mailing list