clang API Documentation
#include <TypeLoc.h>
Classes | |
struct | HasNoInnerType |
Public Member Functions | |
unsigned | getLocalDataAlignment () const |
unsigned | getLocalDataSize () const |
TypeLoc | getNextTypeLoc () const |
const TypeClass * | getTypePtr () const |
Protected Member Functions | |
unsigned | getExtraLocalDataSize () const |
unsigned | getExtraLocalDataAlignment () const |
LocalData * | getLocalData () const |
void * | getExtraLocalData () const |
void * | getNonLocalData () const |
HasNoInnerType | getInnerType () const |
TypeLoc | getInnerTypeLoc () const |
Friends | |
class | TypeLoc |
A metaprogramming base class for TypeLoc classes which correspond to a particular Type subclass. It is accepted for a single TypeLoc class to correspond to multiple Type classes.
Base | a class from which to derive |
Derived | the class deriving from this one |
TypeClass | the concrete Type subclass associated with this location type |
LocalData | the structure type of local location data for this type |
TypeLocs with non-constant amounts of local data should override getExtraLocalDataSize(); getExtraLocalData() will then point to this extra memory.
TypeLocs with an inner type should define QualType getInnerType() const and getInnerTypeLoc() will then point to this inner type's location data.
A word about hierarchies: this template is not designed to be derived from multiple times in a hierarchy. It is also not designed to be used for classes where subtypes might provide different amounts of source information. It should be subclassed only at the deepest portion of the hierarchy where all children have identical source information; if that's an abstract type, then further descendents should inherit from InheritingConcreteTypeLoc instead.
void* clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getExtraLocalData | ( | ) | const [inline, protected] |
Gets a pointer past the Info structure; useful for classes with local data that can't be captured in the Info (e.g. because it's of variable size).
Reimplemented in clang::ConcreteTypeLoc< ObjCObjectTypeLoc, ObjCInterfaceTypeLoc, ObjCInterfaceType, ObjCInterfaceLocInfo >.
unsigned clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getExtraLocalDataAlignment | ( | ) | const [inline, protected] |
Reimplemented in clang::DependentTemplateSpecializationTypeLoc, clang::TemplateSpecializationTypeLoc, clang::FunctionTypeLoc, clang::ObjCObjectTypeLoc, clang::BuiltinTypeLoc, and clang::ConcreteTypeLoc< ObjCObjectTypeLoc, ObjCInterfaceTypeLoc, ObjCInterfaceType, ObjCInterfaceLocInfo >.
Definition at line 355 of file TypeLoc.h.
Referenced by clang::ConcreteTypeLoc< UnqualTypeLoc, ReferenceTypeLoc, ReferenceType, PointerLikeLocInfo >::getLocalDataAlignment().
unsigned clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getExtraLocalDataSize | ( | ) | const [inline, protected] |
HasNoInnerType clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getInnerType | ( | ) | const [inline, protected] |
Reimplemented in clang::AtomicTypeLoc, clang::PackExpansionTypeLoc, clang::ElaboratedTypeLoc, clang::ArrayTypeLoc, clang::FunctionTypeLoc, clang::ReferenceTypeLoc, clang::PointerLikeTypeLoc< Derived, TypeClass, LocalData >, clang::PointerLikeTypeLoc< PointerTypeLoc, PointerType >, clang::PointerLikeTypeLoc< BlockPointerTypeLoc, BlockPointerType >, clang::PointerLikeTypeLoc< ReferenceTypeLoc, ReferenceType >, clang::PointerLikeTypeLoc< MemberPointerTypeLoc, MemberPointerType, MemberPointerLocInfo >, clang::PointerLikeTypeLoc< ObjCObjectPointerTypeLoc, ObjCObjectPointerType >, clang::AdjustedTypeLoc, clang::ParenTypeLoc, clang::ObjCObjectTypeLoc, clang::AttributedTypeLoc, and clang::ConcreteTypeLoc< ObjCObjectTypeLoc, ObjCInterfaceTypeLoc, ObjCInterfaceType, ObjCInterfaceLocInfo >.
Definition at line 381 of file TypeLoc.h.
Referenced by clang::ConcreteTypeLoc< UnqualTypeLoc, ReferenceTypeLoc, ReferenceType, PointerLikeLocInfo >::getInnerTypeLoc(), and clang::ConcreteTypeLoc< UnqualTypeLoc, ReferenceTypeLoc, ReferenceType, PointerLikeLocInfo >::getNextTypeLoc().
TypeLoc clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getInnerTypeLoc | ( | ) | const [inline, protected] |
LocalData* clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getLocalData | ( | ) | const [inline, protected] |
unsigned clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getLocalDataAlignment | ( | ) | const [inline] |
unsigned clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getLocalDataSize | ( | ) | const [inline] |
TypeLoc clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getNextTypeLoc | ( | ) | const [inline] |
Reimplemented in clang::ConcreteTypeLoc< ObjCObjectTypeLoc, ObjCInterfaceTypeLoc, ObjCInterfaceType, ObjCInterfaceLocInfo >.
Definition at line 342 of file TypeLoc.h.
Referenced by clang::ConcreteTypeLoc< UnqualTypeLoc, ReferenceTypeLoc, ReferenceType, PointerLikeLocInfo >::getNextTypeLoc(), clang::ASTReader::GetTypeSourceInfo(), and clang::Sema::GetTypeSourceInfoForDeclarator().
void* clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getNonLocalData | ( | ) | const [inline, protected] |
Reimplemented in clang::ConcreteTypeLoc< ObjCObjectTypeLoc, ObjCInterfaceTypeLoc, ObjCInterfaceType, ObjCInterfaceLocInfo >.
Definition at line 373 of file TypeLoc.h.
Referenced by clang::ConcreteTypeLoc< UnqualTypeLoc, ReferenceTypeLoc, ReferenceType, PointerLikeLocInfo >::getInnerTypeLoc().
const TypeClass* clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getTypePtr | ( | ) | const [inline] |
Reimplemented in clang::InheritingConcreteTypeLoc< ArrayTypeLoc, VariableArrayTypeLoc, VariableArrayType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, TagTypeLoc, TagType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, SubstTemplateTypeParmTypeLoc, SubstTemplateTypeParmType >, clang::InheritingConcreteTypeLoc< ArrayTypeLoc, ConstantArrayTypeLoc, ConstantArrayType >, clang::InheritingConcreteTypeLoc< ArrayTypeLoc, DependentSizedArrayTypeLoc, DependentSizedArrayType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, TemplateTypeParmTypeLoc, TemplateTypeParmType >, clang::InheritingConcreteTypeLoc< TagTypeLoc, RecordTypeLoc, RecordType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, InjectedClassNameTypeLoc, InjectedClassNameType >, clang::InheritingConcreteTypeLoc< VectorTypeLoc, ExtVectorTypeLoc, ExtVectorType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, DependentSizedExtVectorTypeLoc, DependentSizedExtVectorType >, clang::InheritingConcreteTypeLoc< TagTypeLoc, EnumTypeLoc, EnumType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, UnresolvedUsingTypeLoc, UnresolvedUsingType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, SubstTemplateTypeParmPackTypeLoc, SubstTemplateTypeParmPackType >, clang::InheritingConcreteTypeLoc< AdjustedTypeLoc, DecayedTypeLoc, DecayedType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, ComplexTypeLoc, ComplexType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, VectorTypeLoc, VectorType >, clang::InheritingConcreteTypeLoc< ArrayTypeLoc, IncompleteArrayTypeLoc, IncompleteArrayType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, AutoTypeLoc, AutoType >, clang::InheritingConcreteTypeLoc< FunctionTypeLoc, FunctionNoProtoTypeLoc, FunctionNoProtoType >, clang::InheritingConcreteTypeLoc< FunctionTypeLoc, FunctionProtoTypeLoc, FunctionProtoType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, TypedefTypeLoc, TypedefType >, clang::InheritingConcreteTypeLoc< ReferenceTypeLoc, RValueReferenceTypeLoc, RValueReferenceType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, DecltypeTypeLoc, DecltypeType >, clang::InheritingConcreteTypeLoc< ReferenceTypeLoc, LValueReferenceTypeLoc, LValueReferenceType >, and clang::ConcreteTypeLoc< ObjCObjectTypeLoc, ObjCInterfaceTypeLoc, ObjCInterfaceType, ObjCInterfaceLocInfo >.
Definition at line 346 of file TypeLoc.h.
Referenced by FormatFunctionParameter(), clang::Sema::getTemplateArgumentPackExpansionPattern(), clang::ConcreteTypeLoc< UnqualTypeLoc, ReferenceTypeLoc, ReferenceType, PointerLikeLocInfo >::getTypePtr(), isEnableIf(), clang::TreeTransform< Derived >::TransformDependentTemplateSpecializationType(), clang::TreeTransform< Derived >::TransformFunctionTypeParams(), clang::TreeTransform< Derived >::TransformReferenceType(), and clang::TreeTransform< Derived >::TransformTemplateSpecializationType().
friend class TypeLoc [friend] |
Reimplemented in clang::TypeSpecTypeLoc, clang::InheritingConcreteTypeLoc< ArrayTypeLoc, VariableArrayTypeLoc, VariableArrayType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, TagTypeLoc, TagType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, SubstTemplateTypeParmTypeLoc, SubstTemplateTypeParmType >, clang::InheritingConcreteTypeLoc< ArrayTypeLoc, ConstantArrayTypeLoc, ConstantArrayType >, clang::InheritingConcreteTypeLoc< ArrayTypeLoc, DependentSizedArrayTypeLoc, DependentSizedArrayType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, TemplateTypeParmTypeLoc, TemplateTypeParmType >, clang::InheritingConcreteTypeLoc< TagTypeLoc, RecordTypeLoc, RecordType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, InjectedClassNameTypeLoc, InjectedClassNameType >, clang::InheritingConcreteTypeLoc< VectorTypeLoc, ExtVectorTypeLoc, ExtVectorType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, DependentSizedExtVectorTypeLoc, DependentSizedExtVectorType >, clang::InheritingConcreteTypeLoc< TagTypeLoc, EnumTypeLoc, EnumType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, UnresolvedUsingTypeLoc, UnresolvedUsingType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, SubstTemplateTypeParmPackTypeLoc, SubstTemplateTypeParmPackType >, clang::InheritingConcreteTypeLoc< AdjustedTypeLoc, DecayedTypeLoc, DecayedType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, ComplexTypeLoc, ComplexType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, VectorTypeLoc, VectorType >, clang::InheritingConcreteTypeLoc< ArrayTypeLoc, IncompleteArrayTypeLoc, IncompleteArrayType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, AutoTypeLoc, AutoType >, clang::InheritingConcreteTypeLoc< FunctionTypeLoc, FunctionNoProtoTypeLoc, FunctionNoProtoType >, clang::InheritingConcreteTypeLoc< FunctionTypeLoc, FunctionProtoTypeLoc, FunctionProtoType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, TypedefTypeLoc, TypedefType >, clang::InheritingConcreteTypeLoc< ReferenceTypeLoc, RValueReferenceTypeLoc, RValueReferenceType >, clang::InheritingConcreteTypeLoc< TypeSpecTypeLoc, DecltypeTypeLoc, DecltypeType >, clang::InheritingConcreteTypeLoc< ReferenceTypeLoc, LValueReferenceTypeLoc, LValueReferenceType >, and clang::ConcreteTypeLoc< ObjCObjectTypeLoc, ObjCInterfaceTypeLoc, ObjCInterfaceType, ObjCInterfaceLocInfo >.
Definition at line 319 of file TypeLoc.h.
Referenced by clang::ConcreteTypeLoc< UnqualTypeLoc, ReferenceTypeLoc, ReferenceType, PointerLikeLocInfo >::getInnerTypeLoc().