[cfe-dev] accessing template arguments from libclang

Geoffrey Irving irving at naml.us
Thu Aug 15 10:36:09 PDT 2013


In case the previous email was too long, here's a quick summary:

I am trying to parse the code

    class Toaster : Base<int,7> { ... };

I can get to the base specifier corresponding to Base<int,7> and from there
to a RECORD type, but there appears to be no way to access the template
arguments of a template reference from either the Python or C bindings to
clang.  If I'm correct that this isn't exposed yet, what's the right way to
do it?

Thanks,
Geoffrey

On Tue, Aug 13, 2013 at 12:26 PM, Geoffrey Irving <irving at naml.us> wrote:

> I am trying to parse the following code with the Python interface to
> libclang (full listing attached):
>
>     class Toaster : Base<int,7> { ... };
>
> Unfortunately, traversing cursors via getChildren gives me the following
> tree (see clang_dump() in autodescribe.py for the code that generated this
> tree):
>
> CLASS_DECL Toaster
>   CXX_BASE_SPECIFIER None : Base<int,7>
>     TEMPLATE_REF None : Base
>     INTEGER_LITERAL None : 7
>   CXX_ACCESS_SPEC_DECL  PUBLIC : public:
>   ...
>
> The base specifier only seems to mention "Base" and "7", not "int".
> Should I be able to fully inspect Base<int,7> using cursors?
>
> I also tried traversing the Type object corresponding to Base<int,7>, but
> I don't see any methods for accessing template parameters either in
> libclang's Python bindings or in the original C.  If I'm correct that the
> functionality is missing from the C layer, what's the easiest way to add
> it?  The C++ structure of template references seems quite complicated (I
> imagine by necessity :)).
>
> Background: I'm working on a clang-based front end for the xdress Python
> binding generator project.  I've already made a couple minor improvements
> to the libclang Python bindings (exposing formatDiagnostic and the details
> of access specifiers), and am happy to contribute these back once I'm done.
>
> Thanks for any suggestions!
> Geoffrey
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130815/a89ca49b/attachment.html>


More information about the cfe-dev mailing list