clang: clang::ClassTemplatePartialSpecializationDecl Class Reference (original) (raw)

Public Member Functions

ClassTemplatePartialSpecializationDecl *

getMostRecentDecl ()

TemplateParameterList *

getTemplateParameters () const

Get the list of template parameters.

void

getAssociatedConstraints (llvm::SmallVectorImpl< AssociatedConstraint > &AC) const

All associated constraints of this partial specialization, including the requires clause and any constraints derived from constrained-parameters.

bool

hasAssociatedConstraints () const

ClassTemplatePartialSpecializationDecl *

getInstantiatedFromMember () const

Retrieve the member class template partial specialization from which this particular class template partial specialization was instantiated.

ClassTemplatePartialSpecializationDecl *

getInstantiatedFromMemberTemplate () const

void

setInstantiatedFromMember (ClassTemplatePartialSpecializationDecl *PartialSpec)

bool

isMemberSpecialization () const

Determines whether this class template partial specialization template was a specialization of a member partial specialization.

void

setMemberSpecialization ()

Note that this member template is a specialization.

CanQualType

getCanonicalInjectedSpecializationType (const ASTContext &Ctx) const

Retrieves the canonical injected specialization type for this partial specialization.

SourceRange

getSourceRange () const override LLVM_READONLY

Source range that this declaration covers.

void

Profile (llvm::FoldingSetNodeID &ID) const

Public Member Functions inherited from clang::ClassTemplateSpecializationDecl

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 ()

ClassTemplateSpecializationDecl *

getDefinitionOrSelf () const

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)?

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)

bool

hasStrictPackMatch () const

void

setStrictPackMatch (bool Val)

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

Public Member Functions inherited from clang::CXXRecordDecl

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 *

getDefinition () const

CXXRecordDecl *

getDefinitionOrSelf () 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

hasDeletedDestructor () 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](classBase.html).

bool

isDerivedFrom (const CXXRecordDecl *Base, CXXBasePaths &Paths) const

Determine whether this class is derived from the type [Base](classBase.html).

bool

isVirtuallyDerivedFrom (const CXXRecordDecl *Base) const

Determine whether this class is virtually derived from the class [Base](classBase.html).

bool

isProvablyNotDerivedFrom (const CXXRecordDecl *Base) const

Determine whether this class is provably not derived from the type [Base](classBase.html).

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.

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

isInjectedClassName () const

Determines whether this declaration represents the injected class name.

bool

hasInjectedClassType () const

Determines whether this declaration has is canonically of an injected class type.

CanQualType

getCanonicalTemplateSpecializationType (const ASTContext &Ctx) const

bool

isInterfaceLike () const

void

markAbstract ()

Public Member Functions inherited from clang::RecordDecl

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

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.

RecordDecl *

getDefinitionOrSelf () const

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

unsigned

getNumFields () const

Returns the number of fields (non-static data members) in this record.

field_range

noload_fields () const

noload_fields - Iterate over the fields stored in this record that are currently loaded; don't attempt to retrieve anything from an external source.

field_iterator

noload_field_begin () const

field_iterator

noload_field_end () const

bool

noload_field_empty () const

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.

Public Member Functions inherited from clang::TagDecl

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

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.

TagDecl *

getDefinitionOrSelf () const

bool

isEntityBeingDefined () const

Determines whether this entity is in the process of being defined.

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

isStructureOrClass () 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

const Type *

getTypeForDecl () const =delete

void

setTypeForDecl (const Type *TD)=delete

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)

redecl_iterator

redecls_begin () const

redecl_iterator

redecls_end () const

redecl_range

redecls () const

Returns an iterator range for all the redeclarations of the same decl.

TagDecl *

getPreviousDecl ()

Return the previous declaration of this declaration or NULL if this is the first declaration.

const TagDecl *

getPreviousDecl () const

TagDecl *

getMostRecentDecl ()

Returns the most recent (re)declaration of this declaration.

const TagDecl *

getMostRecentDecl () const

Returns the most recent (re)declaration of this declaration.

bool

isFirstDecl () const

True if this is the first declaration in its redeclaration chain.

Public Member Functions inherited from clang::TypeDecl

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.

Public Member Functions inherited from clang::NamedDecl

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).

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

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.

Public Member Functions inherited from clang::Decl

Decl ()=delete

Decl (const Decl &)=delete

Decl (Decl &&)=delete

Decl &

operator= (const Decl &)=delete

Decl &

operator= (Decl &&)=delete

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)

void

invalidateCachedLinkage ()

When doing manipulations which might change the computed linkage, such as changing the DeclContext after the declaration has already been used, invalidating the cache will make sure its linkage will be recomputed.

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

isModuleLocal () const

Whether this declaration was a local declaration to a C++20 named module.

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.

bool

isInCurrentModuleUnit () const

Whether this declaration comes from the same module unit being compiled.

bool

shouldEmitInExternalSource () const

Whether the definition of the declaration should be emitted in external sources.

bool

isFromExplicitGlobalModule () const

Whether this declaration comes from explicit global module.

bool

isFromGlobalModule () const

Whether this declaration comes from global module.

bool

isInNamedModule () const

Whether this declaration comes from a named module.

bool

isFromHeaderUnit () const

Whether this declaration comes from a header unit.

bool

hasDefiningAttr () const

Return true if this declaration has an attribute which acts as definition of the entity, such as 'alias' or 'ifunc'.

const Attr *

getDefiningAttr () const

Return this declaration's defining attribute if it has one.

void

setFromASTFile ()

Set the FromASTFile flag.

void

setOwningModuleID (unsigned ID)

Set the owning module ID.

AvailabilityResult

getAvailability (std::string *Message=nullptr, VersionTuple EnclosingVersion=VersionTuple(), StringRef *RealizedPlatform=nullptr) const

Determine the availability of the given declaration.

VersionTuple

getVersionIntroduced () const

Retrieve the version of the target platform in which this declaration was introduced.

bool

isDeprecated (std::string *Message=nullptr) const

Determine whether this declaration is marked 'deprecated'.

bool

isUnavailable (std::string *Message=nullptr) const

Determine whether this declaration is marked 'unavailable'.

bool

isWeakImported () const

Determine whether this is a weak-imported symbol.

bool

canBeWeakImported (bool &IsDefinition) const

Determines whether this symbol can be weak-imported, e.g., whether it would be well-formed to add the weak_import attribute.

bool

isFromASTFile () const

Determine whether this declaration came from an AST file (such as a precompiled header or module) rather than having been parsed.

GlobalDeclID

getGlobalID () const

Retrieve the global declaration ID associated with this declaration, which specifies where this Decl was loaded from.

unsigned

getOwningModuleID () const

Retrieve the global ID of the module that owns this particular declaration.

Module *

getImportedOwningModule () const

Get the imported owning module, if this decl is from an imported (non-local) module.

Module *

getLocalOwningModule () const

Get the local owning module, if known.

void

setLocalOwningModule (Module *M)

bool

hasOwningModule () const

Is this declaration owned by some module?

Module *

getOwningModule () const

Get the module that owns this declaration (for visibility purposes).

Module *

getTopLevelOwningNamedModule () const

Get the top level owning named module that owns this declaration if any.

Module *

getOwningModuleForLinkage () const

Get the module that owns this declaration for linkage purposes.

bool

isUnconditionallyVisible () const

Determine whether this declaration is definitely visible to name lookup, independent of whether the owning module is visible.

bool

isReachable () const

void

setVisibleDespiteOwningModule ()

Set that this declaration is globally visible, even if it came from a module that is not visible.

ModuleOwnershipKind

getModuleOwnershipKind () const

Get the kind of module ownership for this declaration.

void

setModuleOwnershipKind (ModuleOwnershipKind MOK)

Set whether this declaration is hidden from name lookup.

unsigned

getIdentifierNamespace () const

bool

isInIdentifierNamespace (unsigned NS) const

bool

hasTagIdentifierNamespace () const

DeclContext *

getLexicalDeclContext ()

getLexicalDeclContext - The declaration context where this Decl was lexically declared (LexicalDC).

const DeclContext *

getLexicalDeclContext () const

virtual bool

isOutOfLine () const

Determine whether this declaration is declared out of line (outside its semantic context).

void

setDeclContext (DeclContext *DC)

setDeclContext - Set both the semantic and lexical DeclContext to DC.

void

setLexicalDeclContext (DeclContext *DC)

bool

isTemplated () const

Determine whether this declaration is a templated entity (whether it is.

unsigned

getTemplateDepth () const

Determine the number of levels of template parameter surrounding this declaration.

bool

isDefinedOutsideFunctionOrMethod () const

isDefinedOutsideFunctionOrMethod - This predicate returns true if this scoped decl is defined outside the current function or method.

bool

isInLocalScopeForInstantiation () const

Determine whether a substitution into this declaration would occur as part of a substitution into a dependent local scope.

const DeclContext *

getParentFunctionOrMethod (bool LexicalParent=false) const

If this decl is defined inside a function/method/block it returns the corresponding DeclContext, otherwise it returns null.

DeclContext *

getParentFunctionOrMethod (bool LexicalParent=false)

const Decl *

getCanonicalDecl () const

bool

isCanonicalDecl () const

Whether this particular Decl is a canonical one.

redecl_range

redecls () const

Returns an iterator range for all the redeclarations of the same decl.

redecl_iterator

redecls_begin () const

redecl_iterator

redecls_end () const

Decl *

getPreviousDecl ()

Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration.

const Decl *

getPreviousDecl () const

Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration.

bool

isFirstDecl () const

True if this is the first declaration in its redeclaration chain.

Decl *

getMostRecentDecl ()

Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration).

const Decl *

getMostRecentDecl () const

Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration).

virtual Stmt *

getBody () const

getBody - If this Decl represents a declaration for a body of code, such as a function or method definition, this method returns the top-level Stmt* of that body.

virtual bool

hasBody () const

Returns true if this [Decl](classclang%5F1%5F1Decl.html "Decl - This represents one declaration (or definition), e.g.") represents a declaration for a body of code, such as a function or method definition.

SourceLocation

getBodyRBrace () const

getBodyRBrace - Gets the right brace of the body, if a body exists.

bool

isTemplateParameter () const

isTemplateParameter - Determines whether this declaration is a template parameter.

bool

isTemplateParameterPack () const

isTemplateParameter - Determines whether this declaration is a template parameter pack.

bool

isParameterPack () const

Whether this declaration is a parameter pack.

bool

isTemplateDecl () const

returns true if this declaration is a template

bool

isFunctionOrFunctionTemplate () const

Whether this declaration is a function or function template.

TemplateDecl *

getDescribedTemplate () const

If this is a declaration that describes some template, this method returns that template declaration.

const TemplateParameterList *

getDescribedTemplateParams () const

If this is a declaration that describes some template or partial specialization, this returns the corresponding template parameter list.

FunctionDecl *

getAsFunction () LLVM_READONLY

Returns the function itself, or the templated function if this is a function template.

const FunctionDecl *

getAsFunction () const

void

setLocalExternDecl ()

Changes the namespace of this declaration to reflect that it's a function-local extern declaration.

bool

isLocalExternDecl () const

Determine whether this is a block-scope declaration with linkage.

void

setObjectOfFriendDecl (bool PerformFriendInjection=false)

Changes the namespace of this declaration to reflect that it's the object of a friend declaration.

void

clearIdentifierNamespace ()

Clears the namespace of this declaration.

FriendObjectKind

getFriendObjectKind () const

Determines whether this declaration is the object of a friend declaration and, if so, what kind.

void

setNonMemberOperator ()

Specifies that this declaration is a C++ overloaded non-member.

void

print (raw_ostream &Out, unsigned Indentation=0, bool PrintInstantiation=false) const

void

print (raw_ostream &Out, const PrintingPolicy &Policy, unsigned Indentation=0, bool PrintInstantiation=false) const

void

dump () const

void

dumpColor () const

void

dump (raw_ostream &Out, bool Deserialize=false, ASTDumpOutputFormat OutputFormat=ADOF_Default) const

int64_t

getID () const

const FunctionType *

getFunctionType (bool BlocksToo=true) const

Looks through the Decl's underlying type to extract a FunctionType when possible.

bool

isFunctionPointerType () const

Public Member Functions inherited from clang::DeclContext

~DeclContext ()

bool

hasValidDeclKind () const

Decl::Kind

getDeclKind () const

const char *

getDeclKindName () const

DeclContext *

getParent ()

getParent - Returns the containing DeclContext.

const DeclContext *

getParent () const

DeclContext *

getLexicalParent ()

getLexicalParent - Returns the containing lexical DeclContext.

const DeclContext *

getLexicalParent () const

DeclContext *

getLookupParent ()

Find the parent context of this context that will be used for unqualified name lookup.

const DeclContext *

getLookupParent () const

ASTContext &

getParentASTContext () const

bool

isClosure () const

const BlockDecl *

getInnermostBlockDecl () const

Return this DeclContext if it is a BlockDecl.

bool

isObjCContainer () const

bool

isFunctionOrMethod () const

bool

isLookupContext () const

Test whether the context supports looking up names.

bool

isFileContext () const

bool

isTranslationUnit () const

bool

isRecord () const

bool

isRequiresExprBody () const

bool

isNamespace () const

bool

isStdNamespace () const

bool

isInlineNamespace () const

bool

isDependentContext () const

Determines whether this context is dependent on a template parameter.

bool

isTransparentContext () const

isTransparentContext - Determines whether this context is a "transparent" context, meaning that the members declared in this context are semantically declared in the nearest enclosing non-transparent (opaque) context but are lexically declared in this context.

bool

isExternCContext () const

Determines whether this context or some of its ancestors is a linkage specification context that specifies C linkage.

const LinkageSpecDecl *

getExternCContext () const

Retrieve the nearest enclosing C linkage specification context.

bool

isExternCXXContext () const

Determines whether this context or some of its ancestors is a linkage specification context that specifies C++ linkage.

bool

Equals (const DeclContext *DC) const

Determine whether this declaration context is equivalent to the declaration context DC.

bool

Encloses (const DeclContext *DC) const

Determine whether this declaration context semantically encloses the declaration context DC.

bool

LexicallyEncloses (const DeclContext *DC) const

Determine whether this declaration context lexically encloses the declaration context DC.

Decl *

getNonClosureAncestor ()

Find the nearest non-closure ancestor of this context, i.e.

const Decl *

getNonClosureAncestor () const

DeclContext *

getNonTransparentContext ()

const DeclContext *

getNonTransparentContext () const

DeclContext *

getPrimaryContext ()

getPrimaryContext - There may be many different declarations of the same entity (including forward declarations of classes, multiple definitions of namespaces, etc.), each with a different set of declarations.

const DeclContext *

getPrimaryContext () const

DeclContext *

getRedeclContext ()

getRedeclContext - Retrieve the context in which an entity conflicts with other entities of the same name, or where it is a redeclaration if the two entities are compatible.

const DeclContext *

getRedeclContext () const

DeclContext *

getEnclosingNamespaceContext ()

Retrieve the nearest enclosing namespace context.

const DeclContext *

getEnclosingNamespaceContext () const

RecordDecl *

getOuterLexicalRecordContext ()

Retrieve the outermost lexically enclosing record context.

const RecordDecl *

getOuterLexicalRecordContext () const

bool

InEnclosingNamespaceSetOf (const DeclContext *NS) const

Test if this context is part of the enclosing namespace set of the context NS, as defined in C++0x [namespace.def]p9.

void

collectAllContexts (SmallVectorImpl< DeclContext * > &Contexts)

Collects all of the declaration contexts that are semantically connected to this declaration context.

decl_range

decls () const

decls_begin/decls_end - Iterate over the declarations stored in this context.

decl_iterator

decls_begin () const

decl_iterator

decls_end () const

bool

decls_empty () const

decl_range

noload_decls () const

noload_decls_begin/end - Iterate over the declarations stored in this context that are currently loaded; don't attempt to retrieve anything from an external source.

decl_iterator

noload_decls_begin () const

decl_iterator

noload_decls_end () const

void

addDecl (Decl *D)

Add the declaration D into this context.

void

addDeclInternal (Decl *D)

Add the declaration D into this context, but suppress searches for external declarations with the same name.

void

addHiddenDecl (Decl *D)

Add the declaration D to this context without modifying any lookup tables.

void

removeDecl (Decl *D)

Removes a declaration from this context.

bool

containsDecl (Decl *D) const

Checks whether a declaration is in this context.

bool

containsDeclAndLoad (Decl *D) const

Checks whether a declaration is in this context.

lookup_result

lookup (DeclarationName Name) const

lookup - Find the declarations (if any) with the given Name in this context.

lookup_result

noload_lookup (DeclarationName Name)

Find the declarations with the given name that are visible within this context; don't attempt to retrieve anything from an external source.

void

localUncachedLookup (DeclarationName Name, SmallVectorImpl< NamedDecl * > &Results)

A simplistic name lookup mechanism that performs name lookup into this declaration context without consulting the external source.

void

makeDeclVisibleInContext (NamedDecl *D)

Makes a declaration visible within this context.

lookups_range

lookups () const

lookups_range

noload_lookups (bool PreserveInternalState) const

all_lookups_iterator

lookups_begin () const

Iterators over all possible lookups within this context.

all_lookups_iterator

lookups_end () const

all_lookups_iterator

noload_lookups_begin () const

Iterators over all possible lookups within this context that are currently loaded; don't attempt to retrieve anything from an external source.

all_lookups_iterator

noload_lookups_end () const

udir_range

using_directives () const

Returns iterator range [First, Last) of UsingDirectiveDecls stored within this context.

ddiag_range

ddiags () const

void

setMustBuildLookupTable ()

Mark that there are external lexical declarations that we need to include in our lookup table (and that are not available as external visible lookups).

StoredDeclsMap *

getLookupPtr () const

Retrieve the internal representation of the lookup structure.

StoredDeclsMap *

buildLookup ()

Ensure the lookup structure is fully-built and return it.

bool

hasExternalLexicalStorage () const

Whether this DeclContext has external storage containing additional declarations that are lexically in this context.

void

setHasExternalLexicalStorage (bool ES=true) const

State whether this DeclContext has external storage for declarations lexically in this context.

bool

hasExternalVisibleStorage () const

Whether this DeclContext has external storage containing additional declarations that are visible in this context.

void

setHasExternalVisibleStorage (bool ES=true) const

State whether this DeclContext has external storage for declarations visible in this context.

bool

isDeclInLexicalTraversal (const Decl *D) const

Determine whether the given declaration is stored in the list of declarations lexically within this context.

void

setUseQualifiedLookup (bool use=true) const

bool

shouldUseQualifiedLookup () const

void

dumpAsDecl () const

void

dumpAsDecl (const ASTContext *Ctx) const

void

dumpDeclContext () const

void

dumpLookups () const

void

dumpLookups (llvm::raw_ostream &OS, bool DumpDecls=false, bool Deserialize=false) const

Public Member Functions inherited from clang::Redeclarable< TagDecl >

Redeclarable (const ASTContext &Ctx)

TagDecl *

getPreviousDecl ()

Return the previous declaration of this declaration or NULL if this is the first declaration.

const TagDecl *

getPreviousDecl () const

TagDecl *

getFirstDecl ()

Return the first declaration of this declaration or itself if this is the only declaration.

const TagDecl *

getFirstDecl () const

Return the first declaration of this declaration or itself if this is the only declaration.

bool

isFirstDecl () const

True if this is the first declaration in its redeclaration chain.

TagDecl *

getMostRecentDecl ()

Returns the most recent (re)declaration of this declaration.

const TagDecl *

getMostRecentDecl () const

Returns the most recent (re)declaration of this declaration.

void

setPreviousDecl (TagDecl *PrevDecl)

Set the previous declaration.

redecl_range

redecls () const

Returns an iterator range for all the redeclarations of the same decl.

redecl_iterator

redecls_begin () const

redecl_iterator

redecls_end () const

Static Public Member Functions

static ClassTemplatePartialSpecializationDecl *

Create (ASTContext &Context, TagKind TK, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, TemplateParameterList *Params, ClassTemplateDecl *SpecializedTemplate, ArrayRef< TemplateArgument > Args, CanQualType CanonInjectedTST, ClassTemplatePartialSpecializationDecl *PrevDecl)

static ClassTemplatePartialSpecializationDecl *

CreateDeserialized (ASTContext &C, GlobalDeclID ID)

static void

Profile (llvm::FoldingSetNodeID &ID, ArrayRef< TemplateArgument > TemplateArgs, TemplateParameterList *TPL, const ASTContext &Context)

static bool

classof (const Decl *D)

static bool

classofKind (Kind K)

Static Public Member Functions inherited from clang::ClassTemplateSpecializationDecl

static ClassTemplateSpecializationDecl *

Create (ASTContext &Context, TagKind TK, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, ClassTemplateDecl *SpecializedTemplate, ArrayRef< TemplateArgument > Args, bool StrictPackMatch, ClassTemplateSpecializationDecl *PrevDecl)

static ClassTemplateSpecializationDecl *

CreateDeserialized (ASTContext &C, GlobalDeclID ID)

static void

Profile (llvm::FoldingSetNodeID &ID, ArrayRef< TemplateArgument > TemplateArgs, const ASTContext &Context)

static bool

classof (const Decl *D)

static bool

classofKind (Kind K)

Static Public Member Functions inherited from clang::CXXRecordDecl

static CXXRecordDecl *

Create (const ASTContext &C, TagKind TK, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, IdentifierInfo *Id, CXXRecordDecl *PrevDecl=nullptr)

static CXXRecordDecl *

CreateLambda (const ASTContext &C, DeclContext *DC, TypeSourceInfo *Info, SourceLocation Loc, unsigned DependencyKind, bool IsGeneric, LambdaCaptureDefault CaptureDefault)

static CXXRecordDecl *

CreateDeserialized (const ASTContext &C, GlobalDeclID ID)

static bool

FindBaseClass (const CXXBaseSpecifier *Specifier, CXXBasePath &Path, const CXXRecordDecl *BaseRecord)

Base-class lookup callback that determines whether the given base class specifier refers to a specific class declaration.

static bool

FindVirtualBaseClass (const CXXBaseSpecifier *Specifier, CXXBasePath &Path, const CXXRecordDecl *BaseRecord)

Base-class lookup callback that determines whether the given base class specifier refers to a specific class declaration and describes virtual derivation.

static AccessSpecifier

MergeAccess (AccessSpecifier PathAccess, AccessSpecifier DeclAccess)

Calculates the access of a decl that is reached along a path.

static bool

classof (const Decl *D)

static bool

classofKind (Kind K)

Static Public Member Functions inherited from clang::RecordDecl

static RecordDecl *

Create (const ASTContext &C, TagKind TK, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, IdentifierInfo *Id, RecordDecl *PrevDecl=nullptr)

static RecordDecl *

CreateDeserialized (const ASTContext &C, GlobalDeclID ID)

static bool

classof (const Decl *D)

static bool

classofKind (Kind K)

Static Public Member Functions inherited from clang::TagDecl

static bool

classof (const Decl *D)

static bool

classofKind (Kind K)

static DeclContext *

castToDeclContext (const TagDecl *D)

static TagDecl *

castFromDeclContext (const DeclContext *DC)

Static Public Member Functions inherited from clang::TypeDecl

static bool

classof (const Decl *D)

static bool

classofKind (Kind K)

Static Public Member Functions inherited from clang::NamedDecl

static bool

classof (const Decl *D)

static bool

classofKind (Kind K)

Static Public Member Functions inherited from clang::Decl

static bool

isFlexibleArrayMemberLike (const ASTContext &Context, const Decl *D, QualType Ty, LangOptions::StrictFlexArraysLevelKind StrictFlexArraysLevel, bool IgnoreTemplateOrMacroSubstitution)

Whether it resembles a flexible array member.

static unsigned

getIdentifierNamespaceForKind (Kind DK)

static bool

isTagIdentifierNamespace (unsigned NS)

static void

add (Kind k)

static void

EnableStatistics ()

static void

PrintStats ()

static bool

classofKind (Kind K)

static DeclContext *

castToDeclContext (const Decl *)

static Decl *

castFromDeclContext (const DeclContext *)

static void

printGroup (Decl **Begin, unsigned NumDecls, raw_ostream &Out, const PrintingPolicy &Policy, unsigned Indentation=0)

Static Public Member Functions inherited from clang::DeclContext

static bool

classof (const Decl *D)

static bool

classof (const DeclContext *D)

Additional Inherited Members

Public Types inherited from clang::CXXRecordDecl

enum

LambdaDependencyKind { LDK_Unknown = 0 , LDK_AlwaysDependent, LDK_NeverDependent }

using

base_class_iterator = CXXBaseSpecifier *

Iterator that traverses the base classes of a class.

using

base_class_const_iterator = const CXXBaseSpecifier *

Iterator that traverses the base classes of a class.

using

base_class_range = llvm::iterator_range<base_class_iterator>

using

base_class_const_range

using

method_iterator = specific_decl_iterator<CXXMethodDecl>

Iterator access to method members.

using

method_range

using

ctor_iterator = specific_decl_iterator<CXXConstructorDecl>

Iterator access to constructor members.

using

ctor_range

using

friend_range = llvm::iterator_range<friend_iterator>

using

capture_const_iterator = const LambdaCapture *

using

capture_const_range = llvm::iterator_range<capture_const_iterator>

using

conversion_iterator = UnresolvedSetIterator

using

ForallBasesCallback

Function type used by forallBases() as a callback.

using

BaseMatchesCallback

Function type used by lookupInBases() to determine whether a specific base class subobject matches the lookup criteria.

Public Types inherited from clang::RecordDecl

using

field_iterator = specific_decl_iterator<FieldDecl>

using

field_range = llvm::iterator_range<specific_decl_iterator<FieldDecl>>

Public Types inherited from clang::TagDecl

using

TagKind = TagTypeKind

using

redecl_range = redeclarable_base::redecl_range

using

redecl_iterator = redeclarable_base::redecl_iterator

Public Types inherited from clang::NamedDecl

enum

ExplicitVisibilityKind { VisibilityForType, VisibilityForValue }

Kinds of explicit visibility. More...

Public Types inherited from clang::Decl

enum

Kind

Lists the kind of concrete classes of Decl. More...

enum

IdentifierNamespace {
IDNS_Label = 0x0001 , IDNS_Tag = 0x0002 , IDNS_Type = 0x0004 , IDNS_Member = 0x0008 ,
IDNS_Namespace = 0x0010 , IDNS_Ordinary = 0x0020 , IDNS_ObjCProtocol = 0x0040 , IDNS_OrdinaryFriend = 0x0080 ,
IDNS_TagFriend = 0x0100 , IDNS_Using = 0x0200 , IDNS_NonMemberOperator = 0x0400 , IDNS_LocalExtern = 0x0800 ,
IDNS_OMPReduction = 0x1000 , IDNS_OMPMapper = 0x2000
}

IdentifierNamespace - The different namespaces in which declarations may appear. More...

enum

ObjCDeclQualifier {
OBJC_TQ_None = 0x0 , OBJC_TQ_In = 0x1 , OBJC_TQ_Inout = 0x2 , OBJC_TQ_Out = 0x4 ,
OBJC_TQ_Bycopy = 0x8 , OBJC_TQ_Byref = 0x10 , OBJC_TQ_Oneway = 0x20 , OBJC_TQ_CSNullability = 0x40
}

ObjCDeclQualifier - 'Qualifiers' written next to the return and parameter types in method declarations. More...

enum class

ModuleOwnershipKind : unsigned char {
Unowned, Visible, VisibleWhenImported, ReachableWhenImported,
ModulePrivate
}

The kind of ownership a declaration has, for visibility purposes. More...

enum

FriendObjectKind { FOK_None, FOK_Declared, FOK_Undeclared }

using

attr_iterator = AttrVec::const_iterator

using

attr_range = llvm::iterator_range<attr_iterator>

using

redecl_range = llvm::iterator_range<redecl_iterator>

Public Types inherited from clang::DeclContext

using

decl_range = llvm::iterator_range<decl_iterator>

using

lookup_result = DeclContextLookupResult

using

lookup_iterator = lookup_result::iterator

using

lookups_range = llvm::iterator_range<all_lookups_iterator>

using

udir_iterator_base

using

udir_range = llvm::iterator_range<udir_iterator>

using

ddiag_range = llvm::iterator_range<DeclContext::ddiag_iterator>

Public Types inherited from clang::Redeclarable< TagDecl >

using

redecl_range

Protected Types inherited from clang::TagDecl

using

redeclarable_base = Redeclarable<TagDecl>

Protected Types inherited from clang::DeclContext

enum

{ NumOdrHashBits = 25 }

enum

{ NumDeclContextBits = 13 }

Number of bits in DeclContextBitfields. More...

enum

{ NumNamespaceDeclBits = NumDeclContextBits + 2 }

Number of inherited and non-inherited bits in NamespaceDeclBitfields. More...

enum

{ NumTagDeclBits = NumDeclContextBits + 10 }

Number of inherited and non-inherited bits in TagDeclBitfields. More...

enum

{ NumEnumDeclBits = NumTagDeclBits + 20 }

Number of inherited and non-inherited bits in EnumDeclBitfields. More...

enum

{ NumRecordDeclBits = NumTagDeclBits + 41 }

Number of inherited and non-inherited bits in RecordDeclBitfields. More...

enum

{ NumOMPDeclareReductionDeclBits = NumDeclContextBits + 2 }

Number of inherited and non-inherited bits in OMPDeclareReductionDeclBitfields. More...

enum

{ NumFunctionDeclBits = NumDeclContextBits + 32 }

Number of inherited and non-inherited bits in FunctionDeclBitfields. More...

enum

{ NumCXXConstructorDeclBits = NumFunctionDeclBits + 19 }

Number of inherited and non-inherited bits in CXXConstructorDeclBitfields. More...

enum

{ NumObjCMethodDeclBits = NumDeclContextBits + 24 }

Number of inherited and non-inherited bits in ObjCMethodDeclBitfields. More...

enum

{ NumObjCContainerDeclBits = 64 }

Number of inherited and non-inherited bits in ObjCContainerDeclBitfields. More...

enum

{ NumLinkageSpecDeclBits = NumDeclContextBits + 4 }

Number of inherited and non-inherited bits in LinkageSpecDeclBitfields. More...

enum

{ NumBlockDeclBits = NumDeclContextBits + 5 }

Number of inherited and non-inherited bits in BlockDeclBitfields. More...

Protected Member Functions inherited from clang::ClassTemplateSpecializationDecl

ClassTemplateSpecializationDecl (ASTContext &Context, Kind DK, TagKind TK, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, ClassTemplateDecl *SpecializedTemplate, ArrayRef< TemplateArgument > Args, bool StrictPackMatch, ClassTemplateSpecializationDecl *PrevDecl)

ClassTemplateSpecializationDecl (ASTContext &C, Kind DK)

Protected Member Functions inherited from clang::CXXRecordDecl

CXXRecordDecl (Kind K, TagKind TK, const ASTContext &C, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, IdentifierInfo *Id, CXXRecordDecl *PrevDecl)

Protected Member Functions inherited from clang::RecordDecl

RecordDecl (Kind DK, TagKind TK, const ASTContext &C, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, IdentifierInfo *Id, RecordDecl *PrevDecl)

Protected Member Functions inherited from clang::TagDecl

TagDecl (Kind DK, TagKind TK, const ASTContext &C, DeclContext *DC, SourceLocation L, IdentifierInfo *Id, TagDecl *PrevDecl, SourceLocation StartL)

TagDecl *

getNextRedeclarationImpl () override

Returns the next redeclaration or itself if this is the only decl.

TagDecl *

getPreviousDeclImpl () override

Implementation of getPreviousDecl(), to be overridden by any subclass that has a redeclaration chain.

TagDecl *

getMostRecentDeclImpl () override

Implementation of getMostRecentDecl(), to be overridden by any subclass that has a redeclaration chain.

void

completeDefinition ()

Completes the definition of this tag declaration.

void

setBeingDefined (bool V=true)

True if this decl is currently being defined.

Protected Member Functions inherited from clang::TypeDecl

TypeDecl (Kind DK, DeclContext *DC, SourceLocation L, const IdentifierInfo *Id, SourceLocation StartL=SourceLocation())

Protected Member Functions inherited from clang::NamedDecl

NamedDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N)

Protected Member Functions inherited from clang::Decl

void *

operator new (std::size_t Size, const ASTContext &Ctx, GlobalDeclID ID, std::size_t Extra=0)

Allocate memory for a deserialized declaration.

void *

operator new (std::size_t Size, const ASTContext &Ctx, DeclContext *Parent, std::size_t Extra=0)

Allocate memory for a non-deserialized declaration.

Decl (Kind DK, DeclContext *DC, SourceLocation L)

Decl (Kind DK, EmptyShell Empty)

virtual

~Decl ()

Linkage

getCachedLinkage () const

void

setCachedLinkage (Linkage L) const

bool

hasCachedLinkage () const

void

setModulePrivate ()

Specify that this declaration was marked as being private to the module in which it was defined.

bool

hasLocalOwningModuleStorage () const

ASTMutationListener *

getASTMutationListener () const

Protected Member Functions inherited from clang::DeclContext

DeclContext (Decl::Kind K)

Protected Member Functions inherited from clang::Redeclarable< TagDecl >

TagDecl *

getNextRedeclaration () const

Static Protected Member Functions inherited from clang::DeclContext

static std::pair< Decl *, Decl * >

BuildDeclChain (ArrayRef< Decl * > Decls, bool FieldsAlreadyLoaded)

Build up a chain of declarations.

Static Protected Member Functions inherited from clang::Redeclarable< TagDecl >

static DeclLink

PreviousDeclLink (TagDecl *D)

static DeclLink

LatestDeclLink (const ASTContext &Ctx)

Protected Attributes inherited from clang::Decl

llvm::PointerIntPair< Decl *, 3, ModuleOwnershipKind >

NextInContextAndBits

The next declaration within the same lexical DeclContext.

unsigned

Access: 2

Access - Used by C++ decls for the access specifier.

unsigned

FromASTFile: 1

Whether this declaration was loaded from an AST file.

unsigned

IdentifierNamespace: 14

IdentifierNamespace - This specifies what IDNS_* namespace this lives in.

unsigned

CacheValidAndLinkage: 3

If 0, we have not computed the linkage of this declaration.

Protected Attributes inherited from clang::DeclContext

StoredDeclsMap *

LookupPtr = nullptr

Pointer to the data structure used to lookup declarations within this context (or a DependentStoredDeclsMap if this is a dependent context).

union {

DeclContextBitfields DeclContextBits

NamespaceDeclBitfields NamespaceDeclBits

TagDeclBitfields TagDeclBits

EnumDeclBitfields EnumDeclBits

RecordDeclBitfields RecordDeclBits

OMPDeclareReductionDeclBitfields OMPDeclareReductionDeclBits

FunctionDeclBitfields FunctionDeclBits

CXXConstructorDeclBitfields CXXConstructorDeclBits

ObjCMethodDeclBitfields ObjCMethodDeclBits

ObjCContainerDeclBitfields ObjCContainerDeclBits

LinkageSpecDeclBitfields LinkageSpecDeclBits

BlockDeclBitfields BlockDeclBits

};

This anonymous union stores the bits belonging to DeclContext and classes deriving from it.

Decl *

FirstDecl = nullptr

FirstDecl - The first declaration stored within this declaration context.

Decl *

LastDecl = nullptr

LastDecl - The last declaration stored within this declaration context.

Protected Attributes inherited from clang::Redeclarable< TagDecl >

DeclLink

RedeclLink

Points to the next redeclaration in the chain.

TagDecl *

First