clang 20.0.0git
|
Represents a class template specialization, which refers to a class template with a given set of template arguments. More...
#include "clang/AST/DeclTemplate.h"
Public Member Functions | |
void | getNameForDiagnostic (raw_ostream &OS, const PrintingPolicy &Policy, bool Qualified) const override |
Appends a human-readable name for this declaration into the given stream. | |
ClassTemplateSpecializationDecl * | getMostRecentDecl () |
ClassTemplateDecl * | getSpecializedTemplate () const |
Retrieve the template that this specialization specializes. | |
const TemplateArgumentList & | getTemplateArgs () const |
Retrieve the template arguments of the class template specialization. | |
void | setTemplateArgs (TemplateArgumentList *Args) |
TemplateSpecializationKind | getSpecializationKind () const |
Determine the kind of specialization that this declaration represents. | |
bool | isExplicitSpecialization () const |
bool | isClassScopeExplicitSpecialization () const |
Is this an explicit specialization at class scope (within the class that owns the primary template)? For example: | |
bool | isExplicitInstantiationOrSpecialization () const |
True if this declaration is an explicit specialization, explicit instantiation declaration, or explicit instantiation definition. | |
void | setSpecializedTemplate (ClassTemplateDecl *Specialized) |
void | setSpecializationKind (TemplateSpecializationKind TSK) |
SourceLocation | getPointOfInstantiation () const |
Get the point of instantiation (if any), or null if none. | |
void | setPointOfInstantiation (SourceLocation Loc) |
llvm::PointerUnion< ClassTemplateDecl *, ClassTemplatePartialSpecializationDecl * > | getInstantiatedFrom () const |
If this class template specialization is an instantiation of a template (rather than an explicit specialization), return the class template or class template partial specialization from which it was instantiated. | |
llvm::PointerUnion< ClassTemplateDecl *, ClassTemplatePartialSpecializationDecl * > | getSpecializedTemplateOrPartial () const |
Retrieve the class template or class template partial specialization which was specialized by this. | |
const TemplateArgumentList & | getTemplateInstantiationArgs () const |
Retrieve the set of template arguments that should be used to instantiate members of the class template or class template partial specialization from which this class template specialization was instantiated. | |
void | setInstantiationOf (ClassTemplatePartialSpecializationDecl *PartialSpec, const TemplateArgumentList *TemplateArgs) |
Note that this class template specialization is actually an instantiation of the given class template partial specialization whose template arguments have been deduced. | |
void | setInstantiationOf (ClassTemplateDecl *TemplDecl) |
Note that this class template specialization is an instantiation of the given class template. | |
const ASTTemplateArgumentListInfo * | getTemplateArgsAsWritten () const |
Retrieve the template argument list as written in the sources, if any. | |
void | setTemplateArgsAsWritten (const ASTTemplateArgumentListInfo *ArgsWritten) |
Set the template argument list as written in the sources. | |
void | setTemplateArgsAsWritten (const TemplateArgumentListInfo &ArgsInfo) |
Set the template argument list as written in the sources. | |
SourceLocation | getExternKeywordLoc () const |
Gets the location of the extern keyword, if present. | |
void | setExternKeywordLoc (SourceLocation Loc) |
Sets the location of the extern keyword. | |
SourceLocation | getTemplateKeywordLoc () const |
Gets the location of the template keyword, if present. | |
void | setTemplateKeywordLoc (SourceLocation Loc) |
Sets the location of the template keyword. | |
SourceRange | getSourceRange () const override LLVM_READONLY |
Source range that this declaration covers. | |
void | Profile (llvm::FoldingSetNodeID &ID) const |
![]() | |
CXXRecordDecl * | getCanonicalDecl () override |
Retrieves the "canonical" declaration of the given declaration. | |
const CXXRecordDecl * | getCanonicalDecl () const |
CXXRecordDecl * | getPreviousDecl () |
const CXXRecordDecl * | getPreviousDecl () const |
CXXRecordDecl * | getMostRecentDecl () |
const CXXRecordDecl * | getMostRecentDecl () const |
CXXRecordDecl * | getMostRecentNonInjectedDecl () |
const CXXRecordDecl * | getMostRecentNonInjectedDecl () const |
CXXRecordDecl * | getDefinition () const |
bool | hasDefinition () const |
bool | isDynamicClass () const |
bool | mayBeDynamicClass () const |
bool | mayBeNonDynamicClass () const |
void | setIsParsingBaseSpecifiers () |
bool | isParsingBaseSpecifiers () const |
unsigned | getODRHash () const |
void | setBases (CXXBaseSpecifier const *const *Bases, unsigned NumBases) |
Sets the base classes of this struct or class. | |
unsigned | getNumBases () const |
Retrieves the number of base classes of this class. | |
base_class_range | bases () |
base_class_const_range | bases () const |
base_class_iterator | bases_begin () |
base_class_const_iterator | bases_begin () const |
base_class_iterator | bases_end () |
base_class_const_iterator | bases_end () const |
unsigned | getNumVBases () const |
Retrieves the number of virtual base classes of this class. | |
base_class_range | vbases () |
base_class_const_range | vbases () const |
base_class_iterator | vbases_begin () |
base_class_const_iterator | vbases_begin () const |
base_class_iterator | vbases_end () |
base_class_const_iterator | vbases_end () const |
bool | hasAnyDependentBases () const |
Determine whether this class has any dependent base classes which are not the current instantiation. | |
method_range | methods () const |
method_iterator | method_begin () const |
Method begin iterator. | |
method_iterator | method_end () const |
Method past-the-end iterator. | |
ctor_range | ctors () const |
ctor_iterator | ctor_begin () const |
ctor_iterator | ctor_end () const |
friend_range | friends () const |
friend_iterator | friend_begin () const |
friend_iterator | friend_end () const |
void | pushFriendDecl (FriendDecl *FD) |
bool | hasFriends () const |
Determines whether this record has any friends. | |
bool | defaultedCopyConstructorIsDeleted () const |
true if a defaulted copy constructor for this class would be deleted. | |
bool | defaultedMoveConstructorIsDeleted () const |
true if a defaulted move constructor for this class would be deleted. | |
bool | defaultedDestructorIsDeleted () const |
true if a defaulted destructor for this class would be deleted. | |
bool | hasSimpleCopyConstructor () const |
true if we know for sure that this class has a single, accessible, unambiguous copy constructor that is not deleted. | |
bool | hasSimpleMoveConstructor () const |
true if we know for sure that this class has a single, accessible, unambiguous move constructor that is not deleted. | |
bool | hasSimpleCopyAssignment () const |
true if we know for sure that this class has a single, accessible, unambiguous copy assignment operator that is not deleted. | |
bool | hasSimpleMoveAssignment () const |
true if we know for sure that this class has a single, accessible, unambiguous move assignment operator that is not deleted. | |
bool | hasSimpleDestructor () const |
true if we know for sure that this class has an accessible destructor that is not deleted. | |
bool | hasDefaultConstructor () const |
Determine whether this class has any default constructors. | |
bool | needsImplicitDefaultConstructor () const |
Determine if we need to declare a default constructor for this class. | |
bool | hasUserDeclaredConstructor () const |
Determine whether this class has any user-declared constructors. | |
bool | hasUserProvidedDefaultConstructor () const |
Whether this class has a user-provided default constructor per C++11. | |
bool | hasUserDeclaredCopyConstructor () const |
Determine whether this class has a user-declared copy constructor. | |
bool | needsImplicitCopyConstructor () const |
Determine whether this class needs an implicit copy constructor to be lazily declared. | |
bool | needsOverloadResolutionForCopyConstructor () const |
Determine whether we need to eagerly declare a defaulted copy constructor for this class. | |
bool | implicitCopyConstructorHasConstParam () const |
Determine whether an implicit copy constructor for this type would have a parameter with a const-qualified reference type. | |
bool | hasCopyConstructorWithConstParam () const |
Determine whether this class has a copy constructor with a parameter type which is a reference to a const-qualified type. | |
bool | hasUserDeclaredMoveOperation () const |
Whether this class has a user-declared move constructor or assignment operator. | |
bool | hasUserDeclaredMoveConstructor () const |
Determine whether this class has had a move constructor declared by the user. | |
bool | hasMoveConstructor () const |
Determine whether this class has a move constructor. | |
void | setImplicitCopyConstructorIsDeleted () |
Set that we attempted to declare an implicit copy constructor, but overload resolution failed so we deleted it. | |
void | setImplicitMoveConstructorIsDeleted () |
Set that we attempted to declare an implicit move constructor, but overload resolution failed so we deleted it. | |
void | setImplicitDestructorIsDeleted () |
Set that we attempted to declare an implicit destructor, but overload resolution failed so we deleted it. | |
bool | needsImplicitMoveConstructor () const |
Determine whether this class should get an implicit move constructor or if any existing special member function inhibits this. | |
bool | needsOverloadResolutionForMoveConstructor () const |
Determine whether we need to eagerly declare a defaulted move constructor for this class. | |
bool | hasUserDeclaredCopyAssignment () const |
Determine whether this class has a user-declared copy assignment operator. | |
void | setImplicitCopyAssignmentIsDeleted () |
Set that we attempted to declare an implicit copy assignment operator, but overload resolution failed so we deleted it. | |
bool | needsImplicitCopyAssignment () const |
Determine whether this class needs an implicit copy assignment operator to be lazily declared. | |
bool | needsOverloadResolutionForCopyAssignment () const |
Determine whether we need to eagerly declare a defaulted copy assignment operator for this class. | |
bool | implicitCopyAssignmentHasConstParam () const |
Determine whether an implicit copy assignment operator for this type would have a parameter with a const-qualified reference type. | |
bool | hasCopyAssignmentWithConstParam () const |
Determine whether this class has a copy assignment operator with a parameter type which is a reference to a const-qualified type or is not a reference. | |
bool | hasUserDeclaredMoveAssignment () const |
Determine whether this class has had a move assignment declared by the user. | |
bool | hasMoveAssignment () const |
Determine whether this class has a move assignment operator. | |
void | setImplicitMoveAssignmentIsDeleted () |
Set that we attempted to declare an implicit move assignment operator, but overload resolution failed so we deleted it. | |
bool | needsImplicitMoveAssignment () const |
Determine whether this class should get an implicit move assignment operator or if any existing special member function inhibits this. | |
bool | needsOverloadResolutionForMoveAssignment () const |
Determine whether we need to eagerly declare a move assignment operator for this class. | |
bool | hasUserDeclaredDestructor () const |
Determine whether this class has a user-declared destructor. | |
bool | needsImplicitDestructor () const |
Determine whether this class needs an implicit destructor to be lazily declared. | |
bool | needsOverloadResolutionForDestructor () const |
Determine whether we need to eagerly declare a destructor for this class. | |
bool | isLambda () const |
Determine whether this class describes a lambda function object. | |
bool | isGenericLambda () const |
Determine whether this class describes a generic lambda function object (i.e. | |
bool | lambdaIsDefaultConstructibleAndAssignable () const |
Determine whether this lambda should have an implicit default constructor and copy and move assignment operators. | |
CXXMethodDecl * | getLambdaCallOperator () const |
Retrieve the lambda call operator of the closure type if this is a closure type. | |
FunctionTemplateDecl * | getDependentLambdaCallOperator () const |
Retrieve the dependent lambda call operator of the closure type if this is a templated closure type. | |
CXXMethodDecl * | getLambdaStaticInvoker () const |
Retrieve the lambda static invoker, the address of which is returned by the conversion operator, and the body of which is forwarded to the lambda call operator. | |
CXXMethodDecl * | getLambdaStaticInvoker (CallingConv CC) const |
TemplateParameterList * | getGenericLambdaTemplateParameterList () const |
Retrieve the generic lambda's template parameter list. | |
ArrayRef< NamedDecl * > | getLambdaExplicitTemplateParameters () const |
Retrieve the lambda template parameters that were specified explicitly. | |
LambdaCaptureDefault | getLambdaCaptureDefault () const |
bool | isCapturelessLambda () const |
void | setCaptures (ASTContext &Context, ArrayRef< LambdaCapture > Captures) |
Set the captures for this lambda closure type. | |
void | getCaptureFields (llvm::DenseMap< const ValueDecl *, FieldDecl * > &Captures, FieldDecl *&ThisCapture) const |
For a closure type, retrieve the mapping from captured variables and this to the non-static data members that store the values or references of the captures. | |
capture_const_range | captures () const |
capture_const_iterator | captures_begin () const |
capture_const_iterator | captures_end () const |
unsigned | capture_size () const |
const LambdaCapture * | getCapture (unsigned I) const |
conversion_iterator | conversion_begin () const |
conversion_iterator | conversion_end () const |
void | removeConversion (const NamedDecl *Old) |
Removes a conversion function from this class. | |
llvm::iterator_range< conversion_iterator > | getVisibleConversionFunctions () const |
Get all conversion functions visible in current class, including conversion function templates. | |
bool | isAggregate () const |
Determine whether this class is an aggregate (C++ [dcl.init.aggr]), which is a class with no user-declared constructors, no private or protected non-static data members, no base classes, and no virtual functions (C++ [dcl.init.aggr]p1). | |
bool | hasInClassInitializer () const |
Whether this class has any in-class initializers for non-static data members (including those in anonymous unions or structs). | |
bool | hasUninitializedReferenceMember () const |
Whether this class or any of its subobjects has any members of reference type which would make value-initialization ill-formed. | |
bool | isPOD () const |
Whether this class is a POD-type (C++ [class]p4) | |
bool | isCLike () const |
True if this class is C-like, without C++-specific features, e.g. | |
bool | isEmpty () const |
Determine whether this is an empty class in the sense of (C++11 [meta.unary.prop]). | |
void | setInitMethod (bool Val) |
bool | hasInitMethod () const |
bool | hasPrivateFields () const |
bool | hasProtectedFields () const |
bool | hasDirectFields () const |
Determine whether this class has direct non-static data members. | |
const CXXRecordDecl * | getStandardLayoutBaseWithFields () const |
If this is a standard-layout class or union, any and all data members will be declared in the same type. | |
bool | isPolymorphic () const |
Whether this class is polymorphic (C++ [class.virtual]), which means that the class contains or inherits a virtual function. | |
bool | isAbstract () const |
Determine whether this class has a pure virtual function. | |
bool | isStandardLayout () const |
Determine whether this class is standard-layout per C++ [class]p7. | |
bool | isCXX11StandardLayout () const |
Determine whether this class was standard-layout per C++11 [class]p7, specifically using the C++11 rules without any DRs. | |
bool | hasMutableFields () const |
Determine whether this class, or any of its class subobjects, contains a mutable field. | |
bool | hasVariantMembers () const |
Determine whether this class has any variant members. | |
bool | hasTrivialDefaultConstructor () const |
Determine whether this class has a trivial default constructor (C++11 [class.ctor]p5). | |
bool | hasNonTrivialDefaultConstructor () const |
Determine whether this class has a non-trivial default constructor (C++11 [class.ctor]p5). | |
bool | hasConstexprNonCopyMoveConstructor () const |
Determine whether this class has at least one constexpr constructor other than the copy or move constructors. | |
bool | defaultedDefaultConstructorIsConstexpr () const |
Determine whether a defaulted default constructor for this class would be constexpr. | |
bool | hasConstexprDefaultConstructor () const |
Determine whether this class has a constexpr default constructor. | |
bool | hasTrivialCopyConstructor () const |
Determine whether this class has a trivial copy constructor (C++ [class.copy]p6, C++11 [class.copy]p12) | |
bool | hasTrivialCopyConstructorForCall () const |
bool | hasNonTrivialCopyConstructor () const |
Determine whether this class has a non-trivial copy constructor (C++ [class.copy]p6, C++11 [class.copy]p12) | |
bool | hasNonTrivialCopyConstructorForCall () const |
bool | hasTrivialMoveConstructor () const |
Determine whether this class has a trivial move constructor (C++11 [class.copy]p12) | |
bool | hasTrivialMoveConstructorForCall () const |
bool | hasNonTrivialMoveConstructor () const |
Determine whether this class has a non-trivial move constructor (C++11 [class.copy]p12) | |
bool | hasNonTrivialMoveConstructorForCall () const |
bool | hasTrivialCopyAssignment () const |
Determine whether this class has a trivial copy assignment operator (C++ [class.copy]p11, C++11 [class.copy]p25) | |
bool | hasNonTrivialCopyAssignment () const |
Determine whether this class has a non-trivial copy assignment operator (C++ [class.copy]p11, C++11 [class.copy]p25) | |
bool | hasTrivialMoveAssignment () const |
Determine whether this class has a trivial move assignment operator (C++11 [class.copy]p25) | |
bool | hasNonTrivialMoveAssignment () const |
Determine whether this class has a non-trivial move assignment operator (C++11 [class.copy]p25) | |
bool | defaultedDestructorIsConstexpr () const |
Determine whether a defaulted default constructor for this class would be constexpr. | |
bool | hasConstexprDestructor () const |
Determine whether this class has a constexpr destructor. | |
bool | hasTrivialDestructor () const |
Determine whether this class has a trivial destructor (C++ [class.dtor]p3) | |
bool | hasTrivialDestructorForCall () const |
bool | hasNonTrivialDestructor () const |
Determine whether this class has a non-trivial destructor (C++ [class.dtor]p3) | |
bool | hasNonTrivialDestructorForCall () const |
void | setHasTrivialSpecialMemberForCall () |
bool | allowConstDefaultInit () const |
Determine whether declaring a const variable with this type is ok per core issue 253. | |
bool | hasIrrelevantDestructor () const |
Determine whether this class has a destructor which has no semantic effect. | |
bool | hasNonLiteralTypeFieldsOrBases () const |
Determine whether this class has a non-literal or/ volatile type non-static data member or base class. | |
bool | hasInheritedConstructor () const |
Determine whether this class has a using-declaration that names a user-declared base class constructor. | |
bool | hasInheritedAssignment () const |
Determine whether this class has a using-declaration that names a base class assignment operator. | |
bool | isTriviallyCopyable () const |
Determine whether this class is considered trivially copyable per (C++11 [class]p6). | |
bool | isTriviallyCopyConstructible () const |
Determine whether this class is considered trivially copyable per. | |
bool | isTrivial () const |
Determine whether this class is considered trivial. | |
bool | isLiteral () const |
Determine whether this class is a literal type. | |
bool | isStructural () const |
Determine whether this is a structural type. | |
void | addedSelectedDestructor (CXXDestructorDecl *DD) |
Notify the class that this destructor is now selected. | |
void | addedEligibleSpecialMemberFunction (const CXXMethodDecl *MD, unsigned SMKind) |
Notify the class that an eligible SMF has been added. | |
CXXRecordDecl * | getInstantiatedFromMemberClass () const |
If this record is an instantiation of a member class, retrieves the member class from which it was instantiated. | |
MemberSpecializationInfo * | getMemberSpecializationInfo () const |
If this class is an instantiation of a member class of a class template specialization, retrieves the member specialization information. | |
void | setInstantiationOfMemberClass (CXXRecordDecl *RD, TemplateSpecializationKind TSK) |
Specify that this record is an instantiation of the member class RD . | |
ClassTemplateDecl * | getDescribedClassTemplate () const |
Retrieves the class template that is described by this class declaration. | |
void | setDescribedClassTemplate (ClassTemplateDecl *Template) |
TemplateSpecializationKind | getTemplateSpecializationKind () const |
Determine whether this particular class is a specialization or instantiation of a class template or member class of a class template, and how it was instantiated or specialized. | |
void | setTemplateSpecializationKind (TemplateSpecializationKind TSK) |
Set the kind of specialization or template instantiation this is. | |
const CXXRecordDecl * | getTemplateInstantiationPattern () const |
Retrieve the record declaration from which this record could be instantiated. | |
CXXRecordDecl * | getTemplateInstantiationPattern () |
CXXDestructorDecl * | getDestructor () const |
Returns the destructor decl for this class. | |
bool | isAnyDestructorNoReturn () const |
Returns true if the class destructor, or any implicitly invoked destructors are marked noreturn. | |
bool | isHLSLIntangible () const |
Returns true if the class contains HLSL intangible type, either as a field or in base class. | |
const FunctionDecl * | isLocalClass () const |
If the class is a local class [class.local], returns the enclosing function declaration. | |
FunctionDecl * | isLocalClass () |
bool | isCurrentInstantiation (const DeclContext *CurContext) const |
Determine whether this dependent class is a current instantiation, when viewed from within the given context. | |
bool | isDerivedFrom (const CXXRecordDecl *Base) const |
Determine whether this class is derived from the class Base . | |
bool | isDerivedFrom (const CXXRecordDecl *Base, CXXBasePaths &Paths) const |
Determine whether this class is derived from the type Base . | |
bool | isVirtuallyDerivedFrom (const CXXRecordDecl *Base) const |
Determine whether this class is virtually derived from the class Base . | |
bool | isProvablyNotDerivedFrom (const CXXRecordDecl *Base) const |
Determine whether this class is provably not derived from the type Base . | |
bool | forallBases (ForallBasesCallback BaseMatches) const |
Determines if the given callback holds for all the direct or indirect base classes of this type. | |
bool | lookupInBases (BaseMatchesCallback BaseMatches, CXXBasePaths &Paths, bool LookupInDependent=false) const |
Look for entities within the base classes of this C++ class, transitively searching all base class subobjects. | |
void | getFinalOverriders (CXXFinalOverriderMap &FinaOverriders) const |
Retrieve the final overriders for each virtual member function in the class hierarchy where this class is the most-derived class in the class hierarchy. | |
void | getIndirectPrimaryBases (CXXIndirectPrimaryBaseSet &Bases) const |
Get the indirect primary bases for this class. | |
bool | hasMemberName (DeclarationName N) const |
Determine whether this class has a member with the given name, possibly in a non-dependent base class. | |
std::vector< const NamedDecl * > | lookupDependentName (DeclarationName Name, llvm::function_ref< bool(const NamedDecl *ND)> Filter) |
Performs an imprecise lookup of a dependent name in this class. | |
void | viewInheritance (ASTContext &Context) const |
Renders and displays an inheritance diagram for this C++ class and all of its base classes (transitively) using GraphViz. | |
void | finishedDefaultedOrDeletedMember (CXXMethodDecl *MD) |
Indicates that the declaration of a defaulted or deleted special member function is now complete. | |
void | setTrivialForCallFlags (CXXMethodDecl *MD) |
void | completeDefinition () override |
Indicates that the definition of this class is now complete. | |
void | completeDefinition (CXXFinalOverriderMap *FinalOverriders) |
Indicates that the definition of this class is now complete, and provides a final overrider map to help determine. | |
bool | mayBeAbstract () const |
Determine whether this class may end up being abstract, even though it is not yet known to be abstract. | |
bool | isEffectivelyFinal () const |
Determine whether it's impossible for a class to be derived from this class. | |
unsigned | getLambdaManglingNumber () const |
If this is the closure type of a lambda expression, retrieve the number to be used for name mangling in the Itanium C++ ABI. | |
bool | hasKnownLambdaInternalLinkage () const |
The lambda is known to has internal linkage no matter whether it has name mangling number. | |
Decl * | getLambdaContextDecl () const |
Retrieve the declaration that provides additional context for a lambda, when the normal declaration context is not specific enough. | |
unsigned | getLambdaIndexInContext () const |
Retrieve the index of this lambda within the context declaration returned by getLambdaContextDecl(). | |
void | setLambdaNumbering (LambdaNumbering Numbering) |
Set the mangling numbers and context declaration for a lambda class. | |
LambdaNumbering | getLambdaNumbering () const |
unsigned | getDeviceLambdaManglingNumber () const |
Retrieve the device side mangling number. | |
MSInheritanceModel | getMSInheritanceModel () const |
Returns the inheritance model used for this record. | |
MSInheritanceModel | calculateInheritanceModel () const |
Calculate what the inheritance model would be for this class. | |
bool | nullFieldOffsetIsZero () const |
In the Microsoft C++ ABI, use zero for the field offset of a null data member pointer if we can guarantee that zero is not a valid field offset, or if the member pointer has multiple fields. | |
MSVtorDispMode | getMSVtorDispMode () const |
Controls when vtordisps will be emitted if this record is used as a virtual base. | |
bool | isDependentLambda () const |
Determine whether this lambda expression was known to be dependent at the time it was created, even if its context does not appear to be dependent. | |
bool | isNeverDependentLambda () const |
unsigned | getLambdaDependencyKind () const |
TypeSourceInfo * | getLambdaTypeInfo () const |
void | setLambdaTypeInfo (TypeSourceInfo *TS) |
void | setLambdaDependencyKind (unsigned Kind) |
void | setLambdaIsGeneric (bool IsGeneric) |
bool | isInterfaceLike () const |
void | markAbstract () |
![]() | |
RecordDecl * | getPreviousDecl () |
const RecordDecl * | getPreviousDecl () const |
RecordDecl * | getMostRecentDecl () |
const RecordDecl * | getMostRecentDecl () const |
bool | hasFlexibleArrayMember () const |
void | setHasFlexibleArrayMember (bool V) |
bool | isAnonymousStructOrUnion () const |
Whether this is an anonymous struct or union. | |
void | setAnonymousStructOrUnion (bool Anon) |
bool | hasObjectMember () const |
void | setHasObjectMember (bool val) |
bool | hasVolatileMember () const |
void | setHasVolatileMember (bool val) |
bool | hasLoadedFieldsFromExternalStorage () const |
void | setHasLoadedFieldsFromExternalStorage (bool val) const |
bool | isNonTrivialToPrimitiveDefaultInitialize () const |
Functions to query basic properties of non-trivial C structs. | |
void | setNonTrivialToPrimitiveDefaultInitialize (bool V) |
bool | isNonTrivialToPrimitiveCopy () const |
void | setNonTrivialToPrimitiveCopy (bool V) |
bool | isNonTrivialToPrimitiveDestroy () const |
void | setNonTrivialToPrimitiveDestroy (bool V) |
bool | hasNonTrivialToPrimitiveDefaultInitializeCUnion () const |
void | setHasNonTrivialToPrimitiveDefaultInitializeCUnion (bool V) |
bool | hasNonTrivialToPrimitiveDestructCUnion () const |
void | setHasNonTrivialToPrimitiveDestructCUnion (bool V) |
bool | hasNonTrivialToPrimitiveCopyCUnion () const |
void | setHasNonTrivialToPrimitiveCopyCUnion (bool V) |
bool | hasUninitializedExplicitInitFields () const |
void | setHasUninitializedExplicitInitFields (bool V) |
bool | canPassInRegisters () const |
Determine whether this class can be passed in registers. | |
RecordArgPassingKind | getArgPassingRestrictions () const |
void | setArgPassingRestrictions (RecordArgPassingKind Kind) |
bool | isParamDestroyedInCallee () const |
void | setParamDestroyedInCallee (bool V) |
bool | isRandomized () const |
void | setIsRandomized (bool V) |
void | reorderDecls (const SmallVectorImpl< Decl * > &Decls) |
bool | isInjectedClassName () const |
Determines whether this declaration represents the injected class name. | |
bool | isLambda () const |
Determine whether this record is a class describing a lambda function object. | |
bool | isCapturedRecord () const |
Determine whether this record is a record for captured variables in CapturedStmt construct. | |
void | setCapturedRecord () |
Mark the record as a record for captured variables in CapturedStmt construct. | |
RecordDecl * | getDefinition () const |
Returns the RecordDecl that actually defines this struct/union/class. | |
bool | isOrContainsUnion () const |
Returns whether this record is a union, or contains (at any nesting level) a union member. | |
field_range | fields () const |
field_iterator | field_begin () const |
field_iterator | field_end () const |
bool | field_empty () const |
virtual void | completeDefinition () |
Note that the definition of this type is now complete. | |
bool | isMsStruct (const ASTContext &C) const |
Get whether or not this is an ms_struct which can be turned on with an attribute, pragma, or -mms-bitfields commandline option. | |
bool | mayInsertExtraPadding (bool EmitRemark=false) const |
Whether we are allowed to insert extra padding between fields. | |
const FieldDecl * | findFirstNamedDataMember () const |
Finds the first data member which has a name. | |
unsigned | getODRHash () |
Get precomputed ODRHash or add a new one. | |
![]() | |
SourceRange | getBraceRange () const |
void | setBraceRange (SourceRange R) |
SourceLocation | getInnerLocStart () const |
Return SourceLocation representing start of source range ignoring outer template declarations. | |
SourceLocation | getOuterLocStart () const |
Return SourceLocation representing start of source range taking into account any outer template declarations. | |
SourceRange | getSourceRange () const override LLVM_READONLY |
Source range that this declaration covers. | |
TagDecl * | getCanonicalDecl () override |
Retrieves the "canonical" declaration of the given declaration. | |
const TagDecl * | getCanonicalDecl () const |
bool | isThisDeclarationADefinition () const |
Return true if this declaration is a completion definition of the type. | |
bool | isCompleteDefinition () const |
Return true if this decl has its body fully specified. | |
void | setCompleteDefinition (bool V=true) |
True if this decl has its body fully specified. | |
bool | isCompleteDefinitionRequired () const |
Return true if this complete decl is required to be complete for some existing use. | |
void | setCompleteDefinitionRequired (bool V=true) |
True if this complete decl is required to be complete for some existing use. | |
bool | isBeingDefined () const |
Return true if this decl is currently being defined. | |
bool | isEmbeddedInDeclarator () const |
True if this tag declaration is "embedded" (i.e., defined or declared for the very first time) in the syntax of a declarator. | |
void | setEmbeddedInDeclarator (bool isInDeclarator) |
True if this tag declaration is "embedded" (i.e., defined or declared for the very first time) in the syntax of a declarator. | |
bool | isFreeStanding () const |
True if this tag is free standing, e.g. "struct foo;". | |
void | setFreeStanding (bool isFreeStanding=true) |
True if this tag is free standing, e.g. "struct foo;". | |
bool | mayHaveOutOfDateDef () const |
Indicates whether it is possible for declarations of this kind to have an out-of-date definition. | |
bool | isDependentType () const |
Whether this declaration declares a type that is dependent, i.e., a type that somehow depends on template parameters. | |
bool | isThisDeclarationADemotedDefinition () const |
Whether this declaration was a definition in some module but was forced to be a declaration. | |
void | demoteThisDefinitionToDeclaration () |
Mark a definition as a declaration and maintain information it was a definition. | |
void | startDefinition () |
Starts the definition of this tag declaration. | |
TagDecl * | getDefinition () const |
Returns the TagDecl that actually defines this struct/union/class/enum. | |
StringRef | getKindName () const |
TagKind | getTagKind () const |
void | setTagKind (TagKind TK) |
bool | isStruct () const |
bool | isInterface () const |
bool | isClass () const |
bool | isUnion () const |
bool | isEnum () const |
bool | hasNameForLinkage () const |
Is this tag type named, either directly or via being defined in a typedef of this type? | |
TypedefNameDecl * | getTypedefNameForAnonDecl () const |
void | setTypedefNameForAnonDecl (TypedefNameDecl *TDD) |
NestedNameSpecifier * | getQualifier () const |
Retrieve the nested-name-specifier that qualifies the name of this declaration, if it was present in the source. | |
NestedNameSpecifierLoc | getQualifierLoc () const |
Retrieve the nested-name-specifier (with source-location information) that qualifies the name of this declaration, if it was present in the source. | |
void | setQualifierInfo (NestedNameSpecifierLoc QualifierLoc) |
unsigned | getNumTemplateParameterLists () const |
TemplateParameterList * | getTemplateParameterList (unsigned i) const |
void | printName (raw_ostream &OS, const PrintingPolicy &Policy) const override |
Pretty-print the unqualified name of this declaration. | |
void | setTemplateParameterListsInfo (ASTContext &Context, ArrayRef< TemplateParameterList * > TPLists) |
![]() | |
const Type * | getTypeForDecl () const |
void | setTypeForDecl (const Type *TD) |
SourceLocation | getBeginLoc () const LLVM_READONLY |
void | setLocStart (SourceLocation L) |
SourceRange | getSourceRange () const override LLVM_READONLY |
Source range that this declaration covers. | |
![]() | |
IdentifierInfo * | getIdentifier () const |
Get the identifier that names this declaration, if there is one. | |
StringRef | getName () const |
Get the name of identifier for this declaration as a StringRef. | |
std::string | getNameAsString () const |
Get a human-readable name for the declaration, even if it is one of the special kinds of names (C++ constructor, Objective-C selector, etc). | |
virtual void | printName (raw_ostream &OS, const PrintingPolicy &Policy) const |
Pretty-print the unqualified name of this declaration. | |
void | printName (raw_ostream &OS) const |
Calls printName() with the ASTContext printing policy from the decl. | |
DeclarationName | getDeclName () const |
Get the actual, stored name of the declaration, which may be a special name. | |
void | setDeclName (DeclarationName N) |
Set the name of this declaration. | |
void | printQualifiedName (raw_ostream &OS) const |
Returns a human-readable qualified name for this declaration, like A::B::i, for i being member of namespace A::B. | |
void | printQualifiedName (raw_ostream &OS, const PrintingPolicy &Policy) const |
void | printNestedNameSpecifier (raw_ostream &OS) const |
Print only the nested name specifier part of a fully-qualified name, including the '::' at the end. | |
void | printNestedNameSpecifier (raw_ostream &OS, const PrintingPolicy &Policy) const |
std::string | getQualifiedNameAsString () const |
virtual void | getNameForDiagnostic (raw_ostream &OS, const PrintingPolicy &Policy, bool Qualified) const |
Appends a human-readable name for this declaration into the given stream. | |
bool | declarationReplaces (const NamedDecl *OldD, bool IsKnownNewer=true) const |
Determine whether this declaration, if known to be well-formed within its context, will replace the declaration OldD if introduced into scope. | |
bool | hasLinkage () const |
Determine whether this declaration has linkage. | |
bool | isCXXClassMember () const |
Determine whether this declaration is a C++ class member. | |
bool | isCXXInstanceMember () const |
Determine whether the given declaration is an instance member of a C++ class. | |
ReservedIdentifierStatus | isReserved (const LangOptions &LangOpts) const |
Determine if the declaration obeys the reserved identifier rules of the given language. | |
Linkage | getLinkageInternal () const |
Determine what kind of linkage this entity has. | |
Linkage | getFormalLinkage () const |
Get the linkage from a semantic point of view. | |
bool | hasExternalFormalLinkage () const |
True if this decl has external linkage. | |
bool | isExternallyVisible () const |
bool | isExternallyDeclarable () const |
Determine whether this declaration can be redeclared in a different translation unit. | |
Visibility | getVisibility () const |
Determines the visibility of this entity. | |
LinkageInfo | getLinkageAndVisibility () const |
Determines the linkage and visibility of this entity. | |
std::optional< Visibility > | getExplicitVisibility (ExplicitVisibilityKind kind) const |
If visibility was explicitly specified for this declaration, return that visibility. | |
bool | isLinkageValid () const |
True if the computed linkage is valid. | |
bool | hasLinkageBeenComputed () const |
True if something has required us to compute the linkage of this declaration. | |
bool | isPlaceholderVar (const LangOptions &LangOpts) const |
NamedDecl * | getUnderlyingDecl () |
Looks through UsingDecls and ObjCCompatibleAliasDecls for the underlying named decl. | |
const NamedDecl * | getUnderlyingDecl () const |
NamedDecl * | getMostRecentDecl () |
const NamedDecl * | getMostRecentDecl () const |
ObjCStringFormatFamily | getObjCFStringFormattingFamily () const |
bool | isModulePrivate () const |
Whether this declaration was marked as being private to the module in which it was defined. | |
void | setModulePrivate () |
Specify that this declaration was marked as being private to the module in which it was defined. | |
![]() | |
Decl ()=delete | |
Decl (const Decl &)=delete | |
Decl (Decl &&)=delete | |
Decl & | operator= (const Decl &)=delete |
Decl & | operator= (Decl &&)=delete |
virtual SourceRange | getSourceRange () const LLVM_READONLY |
Source range that this declaration covers. | |
SourceLocation | getBeginLoc () const LLVM_READONLY |
SourceLocation | getEndLoc () const LLVM_READONLY |
SourceLocation | getLocation () const |
void | setLocation (SourceLocation L) |
Kind | getKind () const |
const char * | getDeclKindName () const |
Decl * | getNextDeclInContext () |
const Decl * | getNextDeclInContext () const |
DeclContext * | getDeclContext () |
const DeclContext * | getDeclContext () const |
DeclContext * | getNonTransparentDeclContext () |
Return the non transparent context. | |
const DeclContext * | getNonTransparentDeclContext () const |
Decl * | getNonClosureContext () |
Find the innermost non-closure ancestor of this declaration, walking up through blocks, lambdas, etc. | |
const Decl * | getNonClosureContext () const |
TranslationUnitDecl * | getTranslationUnitDecl () |
const TranslationUnitDecl * | getTranslationUnitDecl () const |
bool | isInAnonymousNamespace () const |
bool | isInStdNamespace () const |
bool | isFileContextDecl () const |
ASTContext & | getASTContext () const LLVM_READONLY |
const LangOptions & | getLangOpts () const LLVM_READONLY |
Helper to get the language options from the ASTContext. | |
void | setAccess (AccessSpecifier AS) |
AccessSpecifier | getAccess () const |
AccessSpecifier | getAccessUnsafe () const |
Retrieve the access specifier for this declaration, even though it may not yet have been properly set. | |
bool | hasAttrs () const |
void | setAttrs (const AttrVec &Attrs) |
AttrVec & | getAttrs () |
const AttrVec & | getAttrs () const |
void | dropAttrs () |
void | addAttr (Attr *A) |
attr_range | attrs () const |
attr_iterator | attr_begin () const |
attr_iterator | attr_end () const |
template<typename... Ts> | |
void | dropAttrs () |
template<typename T > | |
void | dropAttr () |
template<typename T > | |
llvm::iterator_range< specific_attr_iterator< T > > | specific_attrs () const |
template<typename T > | |
specific_attr_iterator< T > | specific_attr_begin () const |
template<typename T > | |
specific_attr_iterator< T > | specific_attr_end () const |
template<typename T > | |
T * | getAttr () const |
template<typename T > | |
bool | hasAttr () const |
unsigned | getMaxAlignment () const |
getMaxAlignment - return the maximum alignment specified by attributes on this decl, 0 if there are none. | |
void | setInvalidDecl (bool Invalid=true) |
setInvalidDecl - Indicates the Decl had a semantic error. | |
bool | isInvalidDecl () const |
bool | isImplicit () const |
isImplicit - Indicates whether the declaration was implicitly generated by the implementation. | |
void | setImplicit (bool I=true) |
bool | isUsed (bool CheckUsedAttr=true) const |
Whether any (re-)declaration of the entity was used, meaning that a definition is required. | |
void | setIsUsed () |
Set whether the declaration is used, in the sense of odr-use. | |
void | markUsed (ASTContext &C) |
Mark the declaration used, in the sense of odr-use. | |
bool | isReferenced () const |
Whether any declaration of this entity was referenced. | |
bool | isThisDeclarationReferenced () const |
Whether this declaration was referenced. | |
void | setReferenced (bool R=true) |
bool | isTopLevelDeclInObjCContainer () const |
Whether this declaration is a top-level declaration (function, global variable, etc.) that is lexically inside an objc container definition. | |
void | setTopLevelDeclInObjCContainer (bool V=true) |
ExternalSourceSymbolAttr * | getExternalSourceSymbolAttr () const |
Looks on this and related declarations for an applicable external source symbol attribute. | |
bool | isModulePrivate () const |
Whether this declaration was marked as being private to the module in which it was defined. | |
bool | isInExportDeclContext () const |
Whether this declaration was exported in a lexical context. | |
bool | isInvisibleOutsideTheOwningModule () const |
bool | isInAnotherModuleUnit () const |
Whether this declaration comes from another module unit. | |