<div dir="ltr"><div><div><div><div>As a follow up to this question, I am now generating the (forward)declarations manually, not having found anything in the API to do it.<br></div>The only thing that I can't get working is the way to get the type name of a non-type template parameter.<br>

If I have:<br>template<typename T, typename U, int V> class foo<br>{};<br></div>From where do I get the string "int" when overriding VisitClassTemplateDecl ?<br><br></div>I can get the names of the identifiers T, U, V as:<br>

<br>    clang::TemplateParameterList* tl=Declaration->getTemplateParameters();<br>    for(auto it=tl->begin();it!=tl->end();++it) {<br>        p->getName();<br>    }<br><br></div>But I can't find any obvious way to get its type as a string.<br>

p->getDeclKindName() only returns "TemplateTypeParm" or "NonTypeTemplateParm"<br><br><div><div><div><div><div><br><div><div><br></div></div></div></div></div></div></div></div><div class="gmail_extra">

<br><br><div class="gmail_quote">On Thu, Jun 5, 2014 at 2:19 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><div><div><div><div>Hi,<br></div>I am writing a tool that has to generate forward declarations of the classes, functions and templates.<br></div>So, if it encounters,<br></div>class Foo {<br>

};<br>
</div>The output should be:<br></div>class Foo;<br><br></div>I am just trying to consider a specific case first by overriding VisitCXXRecordDecl .<br><br></div><div>The print method of the declaration seems to print the whole definition.<br>


Declaration->print(llvm::outs(),clang::PrintingPolicy(clang::LangOptions()));<br><br><br></div><div>Is there a general way of doing this?<br></div><div>Or should I try to generate declaration in an adhoc way?<br></div>


<div>Something like...<br></div><div>llvm::outs()<< `GET TYPE` << `GET NAME` << `ATTRIBUTES` ; <br></div></div>
</blockquote></div><br></div>