<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Aug 3, 2014 at 12:13 AM, Peter Stirling <span dir="ltr"><<a href="mailto:peter@pjstirling.plus.com" target="_blank">peter@pjstirling.plus.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
I've got plans to write a clang tool to automatically generate universal foreign function interface definitions, to allow usage of c++ libraries from non-c++ languages. As part of that I need to pull out correct function and type names from the AST to go into a new .cc file.<br>
<br>
clang::NamedDecl::<u></u>getQualifiedNameAsString() sounds like it should be what I want, but I'm having a couple of problems with it so far:<br>
<br>
a) for EnumConstantDecl it returns a name including the name of the EnumDecl (which is arguably correct, but is invalid in c++ code). I think it would be better if there was a second method that produced the syntactically correct version.<br>
b) the attached file is a cut-down example from the system headers on my machine (gcc-4.8.3 if it matters). When you call getQualifiedNameAsString() on the __uselocale function declaration (I was surprised to learn that it WAS a function declaration), clang returns "__uselocale" and not "__gnu_cxx::__uselocale". Is this a bug, or some misunderstanding on my part?<br>
<br>
I've been using the RecursiveASTVisitor to do the tree walking, and can I ask whether there is some convenient way to prune a node's children, without aborting the whole traversal? For example: I want to visit CXXRecordDecl, but not the ones inside function bodies. At the moment I am walking up the parent DeclContext chain, which (to me) seems less than ideal.<br>
</blockquote><div><br></div><div>You can implement your own Traverse* methods that prune the traversal...</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
<br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div></div>