clang: clang::TypeLoc Class Reference (original) (raw)
Base wrapper for a particular "section" of type source info. More...
#include "[clang/AST/TypeLoc.h](TypeLoc%5F8h%5Fsource.html)"
Public Member Functions | |
---|---|
TypeLoc ()=default | |
TypeLoc (QualType ty, void *opaqueData) | |
TypeLoc (const Type *ty, void *opaqueData) | |
template<typename T > | |
T | castAs () const |
Convert to the specified [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") type, asserting that this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is of the desired type. | |
template<typename T > | |
T | getAs () const |
Convert to the specified [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") type, returning a null [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") if this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is not of the desired type. | |
template<typename T > | |
T | getAsAdjusted () const |
Convert to the specified [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") type, returning a null [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") if this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is not of the desired type. | |
TypeLocClass | getTypeLocClass () const |
bool | isNull () const |
operator bool () const | |
QualType | getType () const |
Get the type for which this source info wrapper provides information. | |
const Type * | getTypePtr () const |
void * | getOpaqueData () const |
Get the pointer where source information is stored. | |
SourceLocation | getBeginLoc () const |
Get the begin source location. | |
SourceLocation | getEndLoc () const |
Get the end source location. | |
SourceRange | getSourceRange () const LLVM_READONLY |
Get the full source range. | |
SourceRange | getLocalSourceRange () const |
Get the local source range. | |
unsigned | getFullDataSize () const |
Returns the size of the type source info data block. | |
TypeLoc | getNextTypeLoc () const |
Get the next [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") pointed by this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info."), e.g for "int*" the [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is a PointerLoc and next [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is for "int". | |
UnqualTypeLoc | getUnqualifiedLoc () const |
Skips past any qualifiers, if this is qualified. | |
TypeLoc | IgnoreParens () const |
TypeLoc | findExplicitQualifierLoc () const |
Find a type with the location of an explicit type qualifier. | |
AutoTypeLoc | getContainedAutoTypeLoc () const |
Get the typeloc of an AutoType whose type will be deduced for a variable with an initializer of this type. | |
SourceLocation | getTemplateKeywordLoc () const |
Get the SourceLocation of the template keyword (if any). | |
void | initialize (ASTContext &Context, SourceLocation Loc) const |
Initializes this to state that every location in this type is the given location. | |
void | initializeFullCopy (TypeLoc Other) |
Initializes this by copying its information from another [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") of the same type. | |
void | initializeFullCopy (TypeLoc Other, unsigned Size) |
Initializes this by copying its information from another [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") of the same type. | |
void | copy (TypeLoc other) |
Copies the other type loc into this one. | |
SourceLocation | findNullabilityLoc () const |
Find the location of the nullability specifier (__nonnull, __nullable, or __null_unspecifier), if there is one. | |
void | dump () const |
void | dump (llvm::raw_ostream &, const ASTContext &) const |
Static Public Member Functions | |
---|---|
static unsigned | getFullDataSizeForType (QualType Ty) |
Returns the size of type source info data block for the given type. | |
static unsigned | getLocalAlignmentForType (QualType Ty) |
Returns the alignment of type source info data block for the given type. | |
Protected Attributes | |
---|---|
const void * | Ty = nullptr |
void * | Data = nullptr |
Base wrapper for a particular "section" of type source info.
A client should use the [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") subclasses through castAs()/getAs() in order to get at the actual information.
Definition at line 59 of file TypeLoc.h.
◆ TypeLocClass
The kinds of TypeLocs.
Equivalent to the Type::TypeClass enum, except it also defines a Qualified enum that corresponds to the QualifiedLoc class.
Enumerator |
---|
Qualified |
Definition at line 108 of file TypeLoc.h.
◆ TypeLoc() [1/3]
clang::TypeLoc::TypeLoc ( ) | default |
---|
◆ TypeLoc() [2/3]
clang::TypeLoc::TypeLoc ( QualType ty, void * opaqueData ) | inline |
---|
◆ TypeLoc() [3/3]
clang::TypeLoc::TypeLoc ( const Type * ty, void * opaqueData ) | inline |
---|
◆ castAs()
template<typename T >
T clang::TypeLoc::castAs ( ) const | inline |
---|
Convert to the specified [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") type, asserting that this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is of the desired type.
Precondition
T::isKind(*this)
Definition at line 78 of file TypeLoc.h.
References clang::T.
Referenced by clang::SemaObjC::actOnObjCProtocolQualifierType(), clang::SemaObjC::actOnObjCTypeArgsAndProtocolQualifiers(), clang::Sema::ActOnTemplatedFriendTag(), clang::TemplateDeclInstantiator::adjustForRewrite(), clang::Sema::BuildMemInitializer(), clang::Sema::CheckTypenameType(), clang::Sema::findInheritingConstructor(), FixInvalidVariablyModifiedTypeLoc(), getBeginLoc(), getEndLoc(), getPointeeTypeText(), clang::Sema::getTemplateArgumentPackExpansionPattern(), clang::ASTContext::getTemplateSpecializationTypeInfo(), GetTypeSourceInfoForDeclarator(), NeedsInstantiationAsFunctionType(), clang::TypeLocBuilder::push(), clang::TypeLocBuilder::pushTypeSpec(), clang::TemplateDeclInstantiator::SubstFunctionType(), clang::TreeTransform< Derived >::TransformFunctionTypeParam(), clang::TreeTransform< Derived >::TransformFunctionTypeParams(), and clang::TreeTransform< Derived >::TransformTypeWithDeducedTST().
◆ copy()
void TypeLoc::copy | ( | TypeLoc | other | ) |
---|
◆ dump() [1/2]
LLVM_DUMP_METHOD void TypeLoc::dump | ( | ) | const |
---|
◆ dump() [2/2]
LLVM_DUMP_METHOD void TypeLoc::dump | ( | llvm::raw_ostream & | OS, |
---|---|---|---|
const ASTContext & | Context | ||
) | const |
◆ findExplicitQualifierLoc()
TypeLoc TypeLoc::findExplicitQualifierLoc | ( | ) | const |
---|
◆ findNullabilityLoc()
◆ getAs()
template<typename T >
T clang::TypeLoc::getAs ( ) const | inline |
---|
Convert to the specified [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") type, returning a null [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") if this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is not of the desired type.
Definition at line 89 of file TypeLoc.h.
References clang::T.
Referenced by clang::Sema::ActOnFinishFunctionBody(), clang::SemaObjC::actOnObjCTypeArgsAndProtocolQualifiers(), clang::SemaObjC::actOnObjCTypeParam(), clang::Sema::ActOnTemplateTypeArgument(), addFunctionPointerConversion(), checkAllAtProps(), clang::Sema::CheckEquivalentExceptionSpec(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::checkThisInStaticMemberFunctionExceptionSpec(), clang::Sema::checkThisInStaticMemberFunctionType(), convertTypeTemplateArgumentToTemplate(), clang::Sema::createLambdaInitCaptureVarDecl(), DiagnoseCalleeStaticArrayParam(), findExplicitQualifierLoc(), findTypeLocationForBlockDecl(), FixInvalidVariablyModifiedTypeLoc(), getAsAdjusted(), getContainedAutoTypeLoc(), clang::FunctionDecl::getFunctionTypeLoc(), clang::comments::getFunctionTypeLoc(), GetTypeSourceInfoForDeclarator(), isEnableIf(), clang::Decl::isFlexibleArrayMemberLike(), clang::comments::lookThroughTypedefOrTypeAliasLocs(), NeedsInstantiationAsFunctionType(), clang::InitializationSequence::Perform(), clang::Sema::SubstFunctionDeclType(), clang::TemplateDeclInstantiator::SubstFunctionType(), clang::Sema::SubstParmVarDecl(), clang::TreeTransform< Derived >::TransformNestedNameSpecifierLoc(), and clang::TreeTransform< Derived >::TransformTypeWithDeducedTST().
◆ getAsAdjusted()
template<typename T >
T clang::TypeLoc::getAsAdjusted | inline |
---|
Convert to the specified [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") type, returning a null [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") if this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is not of the desired type.
It will consider type adjustments from a type that was written as a T to another type that is still canonically a T (ignores parens, attributes, elaborated types, etc).
Definition at line 2716 of file TypeLoc.h.
References getAs(), and clang::T.
Referenced by clang::Sema::ActOnBlockArguments(), clang::TemplateDeclInstantiator::adjustForRewrite(), clang::Sema::CheckDeductionGuideDeclarator(), checkLifetimeBoundAttr(), clang::Sema::checkLifetimeCaptureBy(), findTypeLocationForBlockDecl(), clang::Sema::getReturnTypeLoc(), clang::sema::implicitObjectParamIsLifetimeBound(), clang::Decl::isFlexibleArrayMemberLike(), clang::Sema::LazyProcessLifetimeCaptureByParams(), and clang::TreeTransform< Derived >::TransformNestedNameSpecifierLoc().
◆ getBeginLoc()
Get the begin source location.
Definition at line 192 of file TypeLoc.cpp.
References castAs(), clang::SourceRange::getBegin(), getLocalSourceRange(), getNextTypeLoc(), getTypeLocClass(), clang::InheritingConcreteTypeLoc< Base, Derived, TypeClass >::getTypePtr(), clang::FunctionProtoType::hasTrailingReturn(), isNull(), clang::SourceLocation::isValid(), and Qualified.
Referenced by clang::Sema::ActOnAliasDeclaration(), clang::Sema::ActOnCXXTypeConstructExpr(), clang::Sema::ActOnFriendTypeDecl(), clang::SemaObjC::ActOnMethodParmDeclaration(), clang::SemaObjC::actOnObjCTypeParam(), clang::SemaOpenMP::ActOnOMPIteratorExpr(), clang::Sema::ActOnTag(), clang::Sema::ActOnTemplateTypeArgument(), clang::Sema::ActOnVariableDeclarator(), clang::applyObjCTypeArgs(), clang::Sema::AttachTypeConstraint(), clang::Sema::BuildBaseInitializer(), clang::Sema::BuildBuiltinBitCastExpr(), clang::Sema::BuildCXXTypeConstructExpr(), clang::Sema::BuildPseudoDestructorExpr(), clang::Sema::BuildVAArgExpr(), clang::Sema::CheckBaseSpecifier(), CheckConstexprDeclStmt(), CheckConvertibilityForTypeTraits(), clang::Sema::CheckDeductionGuideDeclarator(), clang::Sema::CheckEnumUnderlyingType(), clang::SemaObjC::CreatePropertyDecl(), clang::Sema::DeduceTemplateSpecializationFromInitializer(), clang::Sema::deduceVarTypeFromInitializer(), EvaluateBinaryTypeTrait(), EvaluateUnaryTypeTrait(), clang::CXXScopeSpec::Extend(), clang::CXXBaseSpecifier::getBaseTypeLoc(), clang::CXXFunctionalCastExpr::getBeginLoc(), clang::CXXTemporaryObjectExpr::getBeginLoc(), GetFullTypeForDeclarator(), clang::NestedNameSpecifierLoc::getLocalSourceRange(), clang::DependentNameTypeLoc::getLocalSourceRange(), clang::DependentTemplateSpecializationTypeLoc::getLocalSourceRange(), getPointeeTypeText(), getSourceRange(), clang::DeclaratorDecl::getTypeSpecStartLoc(), handleAlignedAttr(), handlePreferredTypeAttr(), clang::SemaHLSL::handleResourceTypeAttr(), clang::ASTImporter::Import(), clang::Sema::IsPointerInterconvertibleBaseOf(), clang::PseudoDestructorTypeStorage::PseudoDestructorTypeStorage(), clang::TreeTransform< Derived >::RebuildQualifiedType(), ReplaceWithClasstype(), ReplaceWithInstancetype(), clang::TreeTransform< Derived >::TransformFunctionProtoType(), clang::TreeTransform< Derived >::TransformNestedNameSpecifierLoc(), clang::TreeTransform< Derived >::TransformType(), clang::TreeTransform< Derived >::TransformTypeWithDeducedTST(), and clang::tooling::RecursiveSymbolVisitor< T >::VisitTypedefTypeLoc().
◆ getContainedAutoTypeLoc()
◆ getEndLoc()
Get the end source location.
Definition at line 235 of file TypeLoc.cpp.
References castAs(), getNextTypeLoc(), clang::ObjCObjectPointerTypeLoc::getStarLoc(), getTypeLocClass(), clang::InheritingConcreteTypeLoc< Base, Derived, TypeClass >::getTypePtr(), clang::FunctionProtoType::hasTrailingReturn(), clang::SourceLocation::isInvalid(), clang::Last, Paren, Pointer, Qualified, and TypeLoc().
Referenced by clang::SemaObjC::actOnObjCTypeParam(), clang::SemaObjC::ActOnSuperClassOfClassInterface(), clang::Sema::BuildBuiltinBitCastExpr(), clang::Sema::CheckConversionDeclarator(), clang::Sema::CheckParameter(), clang::SemaObjC::CreatePropertyDecl(), clang::Sema::DeduceTemplateSpecializationFromInitializer(), GetFullTypeForDeclarator(), clang::ElaboratedTypeLoc::getLocalSourceRange(), getPointeeTypeText(), getSourceRange(), clang::DeclaratorDecl::getTypeSpecEndLoc(), ReplaceWithClasstype(), ReplaceWithInstancetype(), and clang::Sema::SubstExceptionSpec().
◆ getFullDataSize()
unsigned clang::TypeLoc::getFullDataSize ( ) const | inline |
---|
Returns the size of the type source info data block.
Definition at line 164 of file TypeLoc.h.
References getFullDataSizeForType(), and getType().
Referenced by clang::AutoTypeLoc::copy(), clang::DependentNameTypeLoc::copy(), clang::DependentTemplateSpecializationTypeLoc::copy(), clang::ElaboratedTypeLoc::copy(), clang::TemplateSpecializationTypeLoc::copy(), copy(), GetTypeSourceInfoForDeclarator(), initializeFullCopy(), clang::TypeLocBuilder::pushFullCopy(), clang::Sema::SubstFunctionDeclType(), clang::Sema::SubstType(), clang::TreeTransform< Derived >::TransformFunctionTypeParam(), clang::TreeTransform< Derived >::TransformType(), and clang::TreeTransform< Derived >::TransformTypeWithDeducedTST().
◆ getFullDataSizeForType()
◆ getLocalAlignmentForType()
◆ getLocalSourceRange()
SourceRange clang::TypeLoc::getLocalSourceRange ( ) const | inline |
---|
◆ getNextTypeLoc()
TypeLoc clang::TypeLoc::getNextTypeLoc ( ) const | inline |
---|
◆ getOpaqueData()
void * clang::TypeLoc::getOpaqueData ( ) const | inline |
---|
◆ getSourceRange()
SourceRange clang::TypeLoc::getSourceRange ( ) const | inline |
---|
Get the full source range.
Definition at line 153 of file TypeLoc.h.
References getBeginLoc(), and getEndLoc().
Referenced by clang::Sema::ActOnConversionDeclarator(), clang::Sema::ActOnFriendTypeDecl(), clang::SemaObjC::actOnObjCTypeArgsAndProtocolQualifiers(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::AddAlignedAttr(), clang::SemaObjC::AdjustParameterTypeForObjCAutoRefCount(), AnalyzeBitFieldAssignment(), clang::applyObjCTypeArgs(), clang::Sema::AttachTypeConstraint(), clang::Sema::BuildBaseInitializer(), clang::SemaObjC::BuildClassMessage(), clang::Sema::BuildCStyleCastExpr(), clang::Sema::BuildCXXFunctionalCastExpr(), clang::Sema::BuildCXXNew(), clang::Sema::BuildDelegatingInitializer(), clang::SemaObjC::BuildObjCBridgedCast(), clang::Sema::BuildPseudoDestructorExpr(), clang::Sema::BuildVAArgExpr(), clang::Sema::CheckBaseSpecifier(), CheckConstexprDeclStmt(), clang::Sema::CheckConversionDeclarator(), clang::Sema::CheckDeductionGuideDeclarator(), clang::Sema::CheckPackExpansion(), clang::Sema::CheckParameter(), clang::Sema::CheckTemplateArgument(), checkTypeParamListConsistency(), clang::Sema::CreateGenericSelectionExpr(), clang::Sema::DeduceTemplateSpecializationFromInitializer(), clang::Sema::diagnoseQualifiedDeclaration(), findTemplateParameter(), getPointeeTypeText(), clang::Sema::getPrintable(), getRangeOfTypeInNestedNameSpecifier(), clang::ObjCMessageExpr::getReceiverRange(), clang::FunctionDecl::getReturnTypeSourceRange(), getTypeRange(), clang::Sema::InstantiateMemInitializers(), clang::TreeTransform< Derived >::TransformFunctionTypeParam(), clang::JSONNodeDumper::Visit(), and clang::TextNodeDumper::Visit().
◆ getTemplateKeywordLoc()
◆ getType()
QualType clang::TypeLoc::getType ( ) const | inline |
---|
Get the type for which this source info wrapper provides information.
Definition at line 133 of file TypeLoc.h.
References clang::QualType::getFromOpaquePtr(), and Ty.
Referenced by clang::ASTRecordWriter::AddNestedNameSpecifierLoc(), AddObjCBlockCall(), clang::Sema::AttachTypeConstraint(), CheckConstexprDeclStmt(), copy(), clang::Sema::DeduceFunctionTypeFromReturnExpr(), clang::comments::DeclInfo::fill(), findTemplateParameter(), getFullDataSize(), getFullDataSizeForType(), clang::Sema::getTemplateArgumentPackExpansionPattern(), getTypeLocClass(), initializeFullCopy(), clang::TreeTransform< Derived >::RebuildQualifiedType(), clang::Sema::SubstType(), clang::TreeTransform< Derived >::TransformFunctionProtoType(), clang::TreeTransform< Derived >::TransformNestedNameSpecifierLoc(), clang::JSONNodeDumper::Visit(), clang::TextNodeDumper::Visit(), and clang::ASTNodeTraverser< Derived, NodeDelegateType >::VisitDependentSizedExtVectorTypeLoc().
◆ getTypeLocClass()
TypeLocClass clang::TypeLoc::getTypeLocClass ( ) const | inline |
---|
Definition at line 116 of file TypeLoc.h.
References getType(), clang::Type::getTypeClass(), and Qualified.
Referenced by getBeginLoc(), getEndLoc(), getPointeeTypeText(), clang::TypeLocBuilder::pushFullCopy(), clang::RecursiveASTVisitor< Derived >::TraverseTypeLoc(), clang::JSONNodeDumper::Visit(), clang::TypeLocVisitor< ImplClass, RetTy >::Visit(), and clang::TextNodeDumper::Visit().
◆ getTypePtr()
const Type * clang::TypeLoc::getTypePtr ( ) const | inline |
---|
◆ getUnqualifiedLoc()
◆ IgnoreParens()
TypeLoc clang::TypeLoc::IgnoreParens ( ) const | inline |
---|
◆ initialize()
◆ initializeFullCopy() [1/2]
void clang::TypeLoc::initializeFullCopy ( TypeLoc Other) | inline |
---|
◆ initializeFullCopy() [2/2]
void clang::TypeLoc::initializeFullCopy ( TypeLoc Other, unsigned Size ) | inline |
---|
◆ isNull()
bool clang::TypeLoc::isNull ( ) const | inline |
---|
Definition at line 121 of file TypeLoc.h.
References Ty.
Referenced by clang::ASTRecordWriter::AddTypeLoc(), clang::Sema::BuildMemInitializer(), getBeginLoc(), getContainedAutoTypeLoc(), getFullDataSizeForType(), getPointeeTypeText(), clang::index::IndexingContext::indexTypeLoc(), clang::index::IndexingContext::indexTypeSourceInfo(), clang::transformer::name(), clang::ASTRecordReader::readTypeLoc(), clang::RecursiveASTVisitor< Derived >::TraverseTypeLoc(), and clang::JSONNodeDumper::Visit().
◆ operator bool()
clang::TypeLoc::operator bool ( ) const | inlineexplicit |
---|
◆ operator!=
◆ operator==
◆ Data
void* clang::TypeLoc::Data = nullptr | protected |
---|
◆ Ty
const void* clang::TypeLoc::Ty = nullptr | protected |
---|
The documentation for this class was generated from the following files:
- include/clang/AST/TypeLoc.h
- lib/AST/ASTDumper.cpp
- lib/AST/TypeLoc.cpp