<div dir="ltr">Hi List,<div><br></div><div>I'm trying to write a header file preprocessor with dependency tracking for LuaJIT.</div><div>Unfortunately LuaJIT does not have C preprocessor, but it's able to parse C</div>

<div>sturcture and function declarations (as lua strings) using FFI interface.</div><div><br></div><div>All i need to do is given a `root' header file, track down all of it's dependencies</div><div>(includes), and generate wrapper lua module with preprocessed declarations for each</div>

<div>header file (and make sure it's not `included' twice in lua since LuaJIT prohibits multiple</div><div>declarations of the same entity the same way C compilers do).</div><div><br></div><div>I'm trying to traverse AST nodes that are interesting to me, printing out pretty much the</div>
<div>same as input, but without macros, with typedefs resolved, etc. libclang does a great job</div><div>of building include tree, checking if header is guarded, finding all interesting declarations!</div><div>But looks like it's missing support for anonymous structs and unions. For a simple header</div>
<div>file like this:</div><div><br></div><div><div>struct mystruct {<br></div><div><span style="white-space:pre-wrap">      </span>union {</div><div><span style="white-space:pre-wrap">          </span>int a;</div>
<div><span style="white-space:pre-wrap">          </span>float c;</div><div><span style="white-space:pre-wrap"> </span>};</div><div><span style="white-space:pre-wrap">       </span>struct {</div><div><span style="white-space:pre-wrap">         </span>const char *str1;</div>

<div><span style="white-space:pre-wrap">          </span>char *str2;</div><div><span style="white-space:pre-wrap">      </span>} anon_struct;</div><div><span style="white-space:pre-wrap">   </span>int d;</div><div><span style="white-space:pre-wrap">   </span>char e;</div>

<div>};</div><div><br></div><div>I get an Unexposed type kind with the following spelling:</div><div><span style="white-space:pre-wrap">        </span>struct <anonymous struct at test.h:8:2> anon_struct;<br></div>
<div><br></div><div>Does Clang itself provides all necessary information about those constructs? Is this</div><div>information simply not exposed via libclang? Or I'm missing something?</div><div><br></div><div>Thanks!</div>
<div><br></div>-- <br><div>Regards,</div><div>Konstantin<br></div>
</div></div>