<div dir="ltr"><div>My guess is get the initializer for the variable declaration, cast it to appropriate expression class, get the value from that.</div><div><br></div><div>// Enum e = One;</div><div><br></div><div>VarDecl *Var = // declaration for 'e'</div>

<div>DeclRefExpr *Expr = dyn_cast<DeclRefExpr>(Var->getInit());<br></div><div>EnumConstantDecl *ED = dyn_cast<EnumConstantDecl>(Expr->getFoundDecl());</div><div>int N = ED->getInitVal();</div></div><div class="gmail_extra">

<br><br><div class="gmail_quote">On Thu, Aug 7, 2014 at 4:47 PM, Manasij Mukherjee <span dir="ltr"><<a href="mailto:manasij7479@gmail.com" target="_blank">manasij7479@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr"><div><div><div>That makes sense.<br></div>How do I get the value of 'One' from the VarDecl.<br></div>I ultimately want to do:<br></div>Enum e = 0; // if the enum constant One is defaulted to 0 <br>
<br>


</div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Aug 7, 2014 at 5:14 AM, Nikola Smiljanic <span dir="ltr"><<a href="mailto:popizdeh@gmail.com" target="_blank">popizdeh@gmail.com</a>></span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">enum Enum { One, Two };<div>Enum e = One;<br></div><div><br></div><div>'One' and 'Two' are EnumConstantDecls but 'e' is a VarDecl whose type is Enum (EnumType).</div>



<div><br></div></div>

<div class="gmail_extra"><br><br><div class="gmail_quote"><div><div>On Thu, Aug 7, 2014 at 5:37 AM, Manasij Mukherjee <span dir="ltr"><<a href="mailto:manasij7479@gmail.com" target="_blank">manasij7479@gmail.com</a>></span> wrote:<br>





</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr"><div><div><div><div><div><div><div>Hi,<br></div>I want to transform a source file so that Enum constants are replaced by their respective integral values.<br>





</div>More specifically, this should work on variable initializations and function or template default argument values.<br>

<br></div>I can obtain a VarDecl for functions and variables and a <br>NonTypeTemplateParmDecl for the templates.<br></div><div>(By using DeclVisitor)<br></div><br></div>How can I detect if these represent Enum Constants ?<br>







</div>And then get their value, possibly.<br><br></div><div>I tried implementing VisitEnumConstantDecl, but that doesn't seem to get called for these cases.<br> <br></div><div><div><div><div>Thanks,<br></div><div>Manasij Mukherjee<br>







</div><div><br></div></div></div></div></div>
<br></div></div>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">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>
<br></blockquote></div><br></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>