<div dir="ltr"><div dir="ltr"><div>Hi Nathan, I found that this example is based on clang11, my clang10 libraries do not have corresponding classes. I read the clang11 release note, which is in progressing, and found that in <a href="https://clang.llvm.org/docs/ReleaseNotes.html#attribute-changes-in-clang">https://clang.llvm.org/docs/ReleaseNotes.html#attribute-changes-in-clang</a>, attribute plugin is a new feature.</div><div><br></div><div>So does it mean:</div><div>1. Even if I implemented an attribute plugin (with the code on master branch), I have to wait until Clang11 has released? </div><div>2. Or, the attribute plugin can be used in older versions of Clang?</div></div></div><br><div class="gmail_quote"><div class="gmail_attr" dir="ltr">On Sun, Jul 5, 2020 at 12:34 AM Nathan James <<a href="mailto:n.james93@hotmail.co.uk">n.james93@hotmail.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">Hi Yafei,<br>
<br>
You can use the Attribute system to decorate AST nodes, they can also<br>
be loaded via plugins. See `clang/examples/Attrbiute/` to see how they<br>
are created and registered.<br>
<br>
Then you can add an attribute to the class decl, for example<br>
> class [[convert]] MyVector {};<br>
<br>
Hope this helps,<br>
Nathan James<br>
<br>
On Sun, 2020-07-05 at 00:05 +0800, Yafei Liu via cfe-dev wrote:<br>
> Hi, all.<br>
> I'm writing some tools to convert a C++ class to something else, and<br>
> I want to add  some custom information to the AST.<br>
> <br>
> At first, I decided to add some comments to mark some classes, but I<br>
> found that the AST does not contain comments.<br>
> <br>
> Secondly, I want to customize an attribute, but I found that it needs<br>
> to recompile the Clang, I didn't find a "plug-in" way.  Since my<br>
> tools are designed for public usage, a customized compiler is not<br>
> very considerable.<br>
> <br>
> Currently I have to force the user to declare their class names and<br>
> field names with some special rules, but this is not very acceptable<br>
> to me.<br>
> <br>
> So anyone knows if there's a better way to add some custom<br>
> information to the AST?<br>
> _______________________________________________<br>
> cfe-dev mailing list<br>
> <a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
> <a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" target="_blank" rel="noreferrer">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
<br>
</blockquote></div>