[cfe-dev] Clang API: specialise a class template and all its members

Vassil Vassilev via cfe-dev cfe-dev at lists.llvm.org
Mon Mar 14 09:31:39 PDT 2016

On 14/03/16 17:22, Dimitar Dobrev wrote:
> Thank you for your reply. Have you ever used this API? If so, I would 
> really appreciate a few lines of code because some of the parameters I 
> have no idea how to get. Some, such as "/TemplateParameterLists/", are 
> all clear but where would I get Scope from, for example?
That's the tricky part. One way to do this: construct a valid C++ 
example; compile it with a debug version of clang; attach gdb to it; set 
a breakpoint and investigate how those parameters get created.
>> -------- Original Message --------
>> Subject: Re: [cfe-dev] Clang API: specialise a class template and all 
>> its members
>> Local Time: 14 март 2016 6:14 PM
>> UTC Time: 14 март 2016 16:14
>> From: v.g.vassilev at gmail.com
>> To: dpldobrev at protonmail.com,cfe-dev at lists.llvm.org
>> On 12/03/16 00:53, Dimitar Dobrev via cfe-dev wrote:
>>> Hello all,
>>> I have a clang::ClassTemplateDecl object with a single template 
>>> argument. I want to specialise it for a certain type (void*). I use 
>>> the following code:
>>>         clang::TemplateArgument t(C->getASTContext().VoidPtrTy);
>>>         auto CTSVoidStar = 
>>> clang::ClassTemplateSpecializationDecl::Create(C->getASTContext(),
>>>             clang::TagTypeKind::TTK_Class, CTS->getDeclContext(), 
>>> clang::SourceLocation(), clang::SourceLocation(),
>>>             CTS->getSpecializedTemplate(), &t, 
>>> CTS->getTemplateArgs().size(), CTS);
>>> where CTS->getSpecializedTemplate() is my ClassTemplateDecl. The 
>>> problem with it is while according to CTSVoidStar->dump() it looks 
>>> correct, it lacks any functions, and it's the functions that I need 
>>> - their mangled names in particular. I know for sure that my 
>>> ClassTemplateDecl does have functions. My question is how to get a 
>>> complete specialisation, with all members and not just the class 
>>> itself. Thank you.
>> Perhaps you could have a look at 
>> http://clang.llvm.org/doxygen/classclang_1_1Sema.html#a959c3ea985edf81ee649c0325ad623f8
>> Ideally calling this interface with the right set of arguments would 
>> create a proper specialization or a diagnostic.
>> --Vassil
>>> Regards,
>>> Dimitar Dobrev
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160314/8eadf17d/attachment.html>

More information about the cfe-dev mailing list