<div dir="ltr"><div>Hello All, </div><div><br></div>Any guidance that you can provide would be most beneficial since we really need this feature for <a href="http://xdress.org/">the xdress project</a>.  Thanks!<div><br></div>

<div>Be Well</div><div>Anthony<br><div><br></div><div><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

Another ping for this message: let me know if this is the wrong forum<br>for questions about libclang.<br>
Geoffrey<br>
On Thu, Aug 15, 2013 at 10:36 AM, Geoffrey Irving <<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">irving at naml.us</a>> wrote:<br>><i> In case the previous email was too long, here's a quick summary:<br>


</i>><br>><i> I am trying to parse the code<br>
</i>><br>><br>><i>     class Toaster : Base<int,7> { ... };<br>
</i>><br>><i> I can get to the base specifier corresponding to Base<int,7> and from there<br>
</i>><i> to a RECORD type, but there appears to be no way to access the template<br>
</i>><i> arguments of a template reference from either the Python or C bindings to<br>
</i>><i> clang.  If I'm correct that this isn't exposed yet, what's the right way to<br>
</i>><i> do it?<br>
</i>><br>><i> Thanks,<br>
</i>><i> Geoffrey<br>
</i>><br>><br>><i> On Tue, Aug 13, 2013 at 12:26 PM, Geoffrey Irving <<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">irving at naml.us</a>> wrote:<br>
</i>>><br>>><i> I am trying to parse the following code with the Python interface to<br>
</i>>><i> libclang (full listing attached):<br>
</i>>><br>>><i>     class Toaster : Base<int,7> { ... };<br>
</i>>><br>>><i> Unfortunately, traversing cursors via getChildren gives me the following<br>
</i>>><i> tree (see clang_dump() in autodescribe.py for the code that generated this<br>
</i>>><i> tree):<br>
</i>>><br>>><i> CLASS_DECL Toaster<br>
</i>>><i>   CXX_BASE_SPECIFIER None : Base<int,7><br>
</i>>><i>     TEMPLATE_REF None : Base<br>
</i>>><i>     INTEGER_LITERAL None : 7<br>
</i>>><i>   CXX_ACCESS_SPEC_DECL  PUBLIC : public:<br>
</i>>><i>   ...<br>
</i>>><br>>><i> The base specifier only seems to mention "Base" and "7", not "int".<br>
</i>>><i> Should I be able to fully inspect Base<int,7> using cursors?<br>
</i>>><br>>><i> I also tried traversing the Type object corresponding to Base<int,7>, but<br>
</i>>><i> I don't see any methods for accessing template parameters either in<br>
</i>>><i> libclang's Python bindings or in the original C.  If I'm correct that the<br>
</i>>><i> functionality is missing from the C layer, what's the easiest way to add it?<br>
</i>>><i> The C++ structure of template references seems quite complicated (I imagine<br>
</i>>><i> by necessity :)).<br>
</i>>><br>>><i> Background: I'm working on a clang-based front end for the xdress Python<br>
</i>>><i> binding generator project.  I've already made a couple minor improvements to<br>
</i>>><i> the libclang Python bindings (exposing formatDiagnostic and the details of<br>
</i>>><i> access specifiers), and am happy to contribute these back once I'm done.<br>
</i>>><br>>><i> Thanks for any suggestions!<br>
</i>>><i> Geoffrey</i></blockquote></div></div></div>