<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Hello,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’m using libclang and its Python bindings to build a binding generator to a large C++ library using pybind11. All is going well but I am experiencing a strange issue and I’m hoping someone on this list has an idea. Unfortunately, I’m not able to reproduce the issue on a small scale so I’ll just describe it as best I can and if anyone has any thoughts please share.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I have a single include file (“all_includes.h”) that includes all the headers of the C++ library. This file is parsed by libclang and I use the results to write pybind11 code via the libclang Python bindings. I don’t get any translation errors or warnings. In some cases, certain types (usually parameter declarations) get resolved to “int” instead of the actual type like “std::list<TypeA>”.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>If my “all_inlcudes.h” has only the header file where the issue occurs, the types are resolved correctly. It’s only when I include all my headers (or a large number of them) does this strange behavior start to appear. I can’t figure out a root reason or pattern for it happening, the only thing I’ve noticed is it seems to happen with things in a namespace liked “std::list<>” or “TypeA::value”.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>One other thing, the C++ library makes heavy use of class templates. In libclang, these class declarations have no children (i.e., constructors, methods, etc.). In order to generate the binding code I have to retrieve the cursor to the class template, write its code then replace the template parameters with a string replace method. Is there a reason these class declarations from class templates don’t resolve the children of the class template with the template parameters already in place? It would make the binding generation process much easier and robust.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>For either of these issues, my next step is to rewrite my binding generation tool in C++ and use the clang libraries like LibTooling. They seem to provide more functionality anyway, but the Python version is so close I’d thought it’d be worth asking before I go down that path.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,<o:p></o:p></p><p class=MsoNormal>Trevor<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>