<div dir="ltr">David:<div><br></div><div>Thank you very much for your help. Now I can get the the information of a structure's fields.   :-)</div><div><br></div><div>By the way, I want to know that does Clang provide us the methods to get the length of some data type? For examples, the length of int is 4 bytes, the length of char is one byte and so on. </div>
<div>And is there any method that can provide me the information of alignment for some structure type? </div><div><br></div><div>Thank you.</div><div><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/8/15 David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Wed, Aug 14, 2013 at 7:09 AM, Arthur Yoo <<a href="mailto:phjy007@gmail.com">phjy007@gmail.com</a>> wrote:<br>

</div><div><div class="h5">> Hi all,<br>
><br>
> I can use isStructureType() and isUnionType() to check whether an Expr is<br>
> structure type or union type. Now I want to get the structure/union type's<br>
> detailed information, such as the fields and their types of a structure. How<br>
> can I get these information? Thanks a lot.<br>
<br>
</div></div>So you have a Type already (since isStructureType isn't a member of<br>
Expr, it's a member of Type), so looking at the Type documentation:<br>
<br>
<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html" target="_blank">http://clang.llvm.org/doxygen/classclang_1_1Type.html</a><br>
<br>
& then follow through to the source of isStructureType (<br>
<a href="http://clang.llvm.org/doxygen/Type_8cpp_source.html#l00366" target="_blank">http://clang.llvm.org/doxygen/Type_8cpp_source.html#l00366</a> ) you'll<br>
see it's simply:<br>
<br>
if (const RecordType *RT = getAs<RecordType>())<br>
  return RT->getDecl()->isStruct();<br>
return false;<br>
<br>
So you can do something similar -<br>
cast<RecordDecl>(cast<RecordType>(T)->getDecl()) and then once you've<br>
got the RecordDecl you can use its API to access the list of members,<br>
etc. (you may need to make sure it's a definition of a record, not<br>
just a declaration, etc)<div class="im">
><br>
> --<br>
> Best regards,<br>
> Arthur Yoo<br>
><br>
</div>> _______________________________________________<br>
> cfe-dev mailing list<br>
> <a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
></blockquote></div><div><br></div>-- <br><div dir="ltr"><font color="#999999">Best regards,</font><div><font color="#999999">Arthur Yoo</font></div></div>
</div></div>