[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