[cfe-dev] abort calling getTypeSize

Peeter Joot peeter.joot at gmail.com
Mon Feb 25 10:32:34 PST 2013


On Mon, Feb 25, 2013 at 12:35 PM, Dmitri Gribenko <gribozavr at gmail.com>wrote:

> You might want to examine the layout of an instantiation instead.


Okay, that makes sense.  I can drive this from a CXXRecordDecl visitor,
something like:

bool VisitCXXRecordDecl( CXXRecordDecl * r )
{
   if ( r->isThisDeclarationADefinition() )
   {
      for ( CXXRecordDecl::field_iterator b = r->field_begin(), e =
r->field_end() ;
            b != e ; ++b )
      {
         const FieldDecl * a = *b ;

         myVisitFieldDecl( a ) ;
      }
   }

   return true ;
}

I found getInstantiatedFromMemberClass() in the docs, and it appears I can
use this to see if the template is an instantiation.  However I'm having
trouble figuring out how to tell if the CXXRecordDecl is a template or not
(since I want to visit the fields of all instantanted template class decls
and all the fields of the plain old non-template classes).

I don't see a isTemplateClass() or anything like that?  How would such a
check be done?

-- 
Peeter
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130225/1c64c3aa/attachment.html>


More information about the cfe-dev mailing list