clang 20.0.0git
|
Represents a struct/union/class. More...
#include "clang/AST/Decl.h"
Public Types | |
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 = llvm::iterator_adaptor_base< udir_iterator, lookup_iterator, typename lookup_iterator::iterator_category, UsingDirectiveDecl * > |
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 = llvm::iterator_range< redecl_iterator > |
Public Member Functions | |
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 | 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. | |
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 | 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) |
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). | |
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. | |
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 |
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. | |
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 * | 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) |
virtual Decl * | getCanonicalDecl () |
Retrieves the "canonical" declaration of the given declaration. | |
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 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 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 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 (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) |
Protected Member Functions | |
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. | |
void | setMayHaveOutOfDateDef (bool V=true) |
Indicates whether it is possible for declarations of this kind to have an out-of-date definition. | |
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 () |
void | updateOutOfDate (IdentifierInfo &II) const |
Update a potentially out-of-date declaration. | |
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 |
virtual Decl * | getNextRedeclarationImpl () |
Returns the next redeclaration or itself if this is the only decl. | |
virtual Decl * | getPreviousDeclImpl () |
Implementation of getPreviousDecl(), to be overridden by any subclass that has a redeclaration chain. | |
virtual Decl * | getMostRecentDeclImpl () |
Implementation of getMostRecentDecl(), to be overridden by any subclass that has a redeclaration chain. | |
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 |
Friends | |
class | DeclContext |
class | ASTDeclReader |
Additional Inherited Members | |
Protected Types inherited from clang::TagDecl | |
using | redeclarable_base = Redeclarable< TagDecl > |
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 | |
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 |
Represents a struct/union/class.
For example: struct X; // Forward declaration, no "body". union Y { int A, B; }; // Has body with members A and B (FieldDecls). This decl will be marked invalid if any members are invalid.
using clang::RecordDecl::field_range = llvm::iterator_range<specific_decl_iterator<FieldDecl> > |
|
protected |
Definition at line 5015 of file Decl.cpp.
References clang::CanPassInRegs, classof(), setAnonymousStructOrUnion(), setArgPassingRestrictions(), setHasFlexibleArrayMember(), setHasLoadedFieldsFromExternalStorage(), setHasNonTrivialToPrimitiveCopyCUnion(), setHasNonTrivialToPrimitiveDefaultInitializeCUnion(), setHasNonTrivialToPrimitiveDestructCUnion(), setHasObjectMember(), setHasVolatileMember(), setIsRandomized(), setNonTrivialToPrimitiveCopy(), setNonTrivialToPrimitiveDefaultInitialize(), setNonTrivialToPrimitiveDestroy(), and setParamDestroyedInCallee().
|
inline |
Determine whether this class can be passed in registers.
In C++ mode, it must have at least one trivial, non-deleted copy or move constructor. FIXME: This should be set as part of completeDefinition.
Definition at line 4277 of file Decl.h.
References clang::CanPassInRegs, and getArgPassingRestrictions().
Referenced by EvaluateUnaryTypeTrait(), clang::CodeGen::getRecordArgABI(), and clang::CodeGen::swiftcall::mustPassRecordIndirectly().
Definition at line 4369 of file Decl.h.
References classofKind(), and D.
Referenced by RecordDecl().
|
virtual |
Note that the definition of this type is now complete.
completeDefinition - Notes that the definition of this type is now complete.
Reimplemented in clang::CXXRecordDecl.
Definition at line 5104 of file Decl.cpp.
References clang::TagDecl::completeDefinition(), clang::Decl::getASTContext(), clang::ASTContext::getASTRecordLayout(), clang::ASTContext::getLangOpts(), clang::TagDecl::isCompleteDefinition(), clang::TagDecl::isDependentType(), and clang::Decl::isInvalidDecl().
Referenced by clang::Sema::ActOnCapturedRegionEnd(), clang::Sema::ActOnTag(), clang::Sema::ActOnTagDefinitionError(), clang::Sema::ActOnTagFinishDefinition(), clang::CXXRecordDecl::completeDefinition(), CreateAAPCSABIBuiltinVaListDecl(), CreateAArch64ABIBuiltinVaListDecl(), CreateHexagonBuiltinVaListDecl(), createKmpTaskTRecordDecl(), createKmpTaskTWithPrivatesRecordDecl(), CreatePowerABIBuiltinVaListDecl(), createPrivatesRecordDecl(), CreateSystemZBuiltinVaListDecl(), CreateX86_64ABIBuiltinVaListDecl(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskReductionInit(), clang::ASTContext::getBlockDescriptorExtendedType(), clang::ASTContext::getBlockDescriptorType(), clang::ASTContext::getCFConstantStringDecl(), getDependTypes(), getKmpAffinityType(), and clang::ASTNodeImporter::ImportDefinition().
|
static |
Definition at line 5038 of file Decl.cpp.
References clang::C, Id, and clang::TagDecl::setMayHaveOutOfDateDef().
Referenced by clang::Sema::ActOnTag(), clang::ASTContext::buildImplicitRecord(), and clang::Sema::CreateCapturedStmtRecordDecl().
|
static |
Definition at line 5049 of file Decl.cpp.
References clang::C, ID, clang::TagDecl::setMayHaveOutOfDateDef(), and clang::Struct.
RecordDecl::field_iterator RecordDecl::field_begin | ( | ) | const |
Definition at line 5092 of file Decl.cpp.
References D, clang::DeclContext::FirstDecl, getDefinition(), clang::DeclContext::hasExternalLexicalStorage(), and hasLoadedFieldsFromExternalStorage().
Referenced by BitsContainNoUserData(), buildImplicitMapper(), calculateOffset(), clang::Sema::CheckComparisonCategoryType(), CheckConstexprFunctionBody(), DumpRecordLayout(), emitDependData(), clang::CodeGen::CGOpenMPRuntime::emitDepobjDependClause(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), emitPrivatesInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskCall(), emitTaskDupFunction(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), clang::CodeGen::CGOpenMPRuntime::emitUpdateClause(), evenFlexibleArraySize(), field_empty(), fields(), genMapInfoForCaptures(), clang::CXXRecordDecl::getCaptureFields(), clang::CodeGen::CGOpenMPRuntime::getDepobjElements(), clang::CastExpr::getTargetFieldForToUnionCast(), HandleClassZeroInitialization(), HandleConstructorCall(), handleTransparentUnionAttr(), isDefinedInClangModule(), isIntegerLikeType(), IsStructurallyEquivalent(), clang::CodeGen::CGRecordLayout::print(), clang::Sema::RebuildLambdaScopeInfo(), setUsedBits(), tryMatchRecordTypes(), and clang::CodeGen::useFirstFieldIfTransparentUnion().
|
inline |
Definition at line 4362 of file Decl.h.
References field_begin(), and field_end().
Referenced by appendRecordType(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), clang::CXXRecordDecl::getStandardLayoutBaseWithFields(), isIdiomaticBraceElisionEntity(), clang::CXXRecordDecl::isInterfaceLike(), isReadByLvalueToRvalueConversion(), LeastDerivedClassWithSameLayout(), unionHasUniqueObjectRepresentations(), and clang::CodeGen::useFirstFieldIfTransparentUnion().
|
inline |
Definition at line 4357 of file Decl.h.
Referenced by BitsContainNoUserData(), calculateOffset(), clang::Sema::CheckComparisonCategoryType(), CheckConstexprFunctionBody(), DumpRecordLayout(), evenFlexibleArraySize(), field_empty(), fields(), clang::CXXRecordDecl::getCaptureFields(), clang::CastExpr::getTargetFieldForToUnionCast(), HandleClassZeroInitialization(), HandleConstructorCall(), handleTransparentUnionAttr(), isDefinedInClangModule(), isIntegerLikeType(), IsStructurallyEquivalent(), setUsedBits(), and tryMatchRecordTypes().
|
inline |
Definition at line 4354 of file Decl.h.
References field_begin(), and field_end().
Referenced by clang::Sema::ActOnTagFinishDefinition(), addFieldSizes(), AddOverloadAggregateChunks(), clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData(), BuildFlattenedTypeList(), buildImplicitMap(), calculateLegacyCbufferSize(), CanSkipVTablePointerInitialization(), clang::SemaPPC::checkAIXMemberAlignment(), CheckASTMemory(), CheckC23ConstexprVarType(), clang::Sema::CheckCompletedCXXClass(), CheckConstexprCtorInitializer(), CheckConstexprDestructorSubobjects(), CheckConstexprFunctionBody(), CheckEvaluationResult(), clang::Sema::CheckExplicitlyDefaultedFunction(), clang::Sema::checkIllFormedTrivialABIStruct(), checkIsValidOpenCLKernelParameter(), checkMemberDecomposition(), clang::Sema::CheckTransparentUnionArgumentConstraints(), checkTrivialClassMembers(), clang::SemaCodeCompletion::CodeCompleteConstructorInitializer(), CountCountedByAttrs(), defaultedSpecialMemberIsConstexpr(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), DiagnoseBaseOrMemInitializerOrder(), diagnoseMutableFields(), DiagnoseUninitializedReference(), EmitNullConstant(), emitOutlinedFunctionPrologue(), evalBinOpFieldRegionFieldRegion(), clang::SourceLocExpr::EvaluateInContext(), extractFieldType(), findFirstNamedDataMember(), clang::HLSLAttributedResourceType::findHandleTypeOnResource(), getContainedDynamicClass(), clang::FieldDecl::getFieldIndex(), getFieldOffsetInBits(), clang::dataflow::getFieldsForInitListExpr(), clang::dataflow::getFieldsFromClassHierarchy(), getGEPIndicesToField(), GetNumNonZeroBytesInInit(), clang::interp::Program::getOrCreateRecord(), getTypeExpansion(), getUnionInitName(), HandleClassZeroInitialization(), HandleDestructionImpl(), hasAnyVptr(), HasTrivialDestructorBody(), clang::SemaCUDA::inferTargetForImplicitSpecialMember(), isCallback(), clang::Expr::isConstantInitializer(), clang::SemaCUDA::isEmptyDestructor(), clang::CodeGen::isEmptyRecord(), clang::CodeGen::isEmptyRecordForLayout(), clang::CodeGen::ABIInfo::isHomogeneousAggregate(), isImplicitMapperNeeded(), isLayoutCompatibleStruct(), isLayoutCompatibleUnion(), clang::CXXRecordDecl::isLiteral(), isReadByLvalueToRvalueConversion(), clang::CodeGen::isRecordWithSIMDVectorType(), clang::CodeGen::isSingleElementStruct(), IsTransparentUnionStandardConversion(), clang::Sema::isValidPointerAttrType(), isValidStructGUID(), isVarDeclStrongDefinition(), isZeroInitialized(), LookupStdSourceLocationImpl(), clang::Sema::MarkBaseAndMemberDestructorsReferenced(), clang::ASTContext::mergeTransparentUnionType(), PopulateKeysForFields(), clang::APValue::printPretty(), processImplicitMapsWithDefaultMappers(), recordIsNotEmpty(), clang::Sema::RequireLiteralType(), shouldIgnoreRecord(), structHasUniqueObjectRepresentations(), TryOrBuildParenListInitialization(), and unionHasUniqueObjectRepresentations().
const FieldDecl * RecordDecl::findFirstNamedDataMember | ( | ) | const |
|
inline |
Definition at line 4281 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
Referenced by canPassInRegisters().
|
inline |
Returns the RecordDecl that actually defines this struct/union/class.
When determining whether or not a struct/union/class is completely defined, one should use this method as opposed to 'isCompleteDefinition'. 'isCompleteDefinition' indicates whether or not a specific RecordDecl is a completed definition, not whether or not the record type is defined. This method returns NULL if there is no RecordDecl that defines the struct/union/tag.
Definition at line 4339 of file Decl.h.
References clang::TagDecl::getDefinition().
Referenced by clang::Sema::ActOnTagFinishDefinition(), appendRecordType(), clang::Sema::BuildMicrosoftCAnonymousStruct(), clang::Sema::CheckClassTemplate(), clang::CodeGen::CGDebugInfo::completeClassData(), clang::CodeGen::CodeGenTypes::ConvertRecordDeclType(), clang::Sema::DeduceTemplateSpecializationFromInitializer(), field_begin(), clang::CXXRecordDecl::forallBases(), clang::FieldDecl::getFieldIndex(), clang::interp::Program::getOrCreateRecord(), getTypeIdentifier(), clang::ASTNodeImporter::ImportDefinition(), isOrContainsUnion(), IsStructurallyEquivalent(), isValidBaseType(), isValidStructGUID(), clang::FieldDecl::isZeroSize(), setUsedBits(), shouldOmitDefinition(), and clang::ASTNodeImporter::VisitRecordDecl().
|
inline |
Definition at line 4174 of file Decl.h.
References getMostRecentDecl().
Referenced by getMostRecentDecl(), and clang::ASTNodeImporter::VisitRecordDecl().
|
inline |
Definition at line 4177 of file Decl.h.
References getMostRecentDecl().
unsigned RecordDecl::getODRHash | ( | ) |
Get precomputed ODRHash or add a new one.
Definition at line 5225 of file Decl.cpp.
References clang::ODRHash::AddRecordDecl(), clang::ODRHash::CalculateHash(), and clang::DeclContext::RecordDeclBits.
Referenced by clang::ASTDeclReader::VisitRecordDecl().
|
inline |
Definition at line 4166 of file Decl.h.
References getPreviousDecl().
Referenced by getPreviousDecl().
|
inline |
Definition at line 4170 of file Decl.h.
References getPreviousDecl().
|
inline |
Definition at line 4181 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
Referenced by clang::SemaObjC::ActOnPropertyImplDecl(), addFlexibleArrayMemberInitSize(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), evenFlexibleArraySize(), getTypeExpansion(), clang::CodeGen::isEmptyRecord(), clang::CodeGen::ABIInfo::isHomogeneousAggregate(), isIntegerLikeType(), clang::CodeGen::isSingleElementStruct(), isValidBaseType(), clang::randstruct::randomizeStructureLayout(), and clang::Sema::SetCtorInitializers().
|
inline |
Definition at line 4217 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
Referenced by field_begin().
|
inline |
Definition at line 4266 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
|
inline |
Definition at line 4250 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
|
inline |
Definition at line 4258 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
|
inline |
Definition at line 4208 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
Referenced by clang::Sema::ActOnFields(), and clang::Sema::CheckNontrivialField().
|
inline |
Definition at line 4211 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
Referenced by clang::CodeGen::CodeGenFunction::hasVolatileMember().
|
inline |
Whether this is an anonymous struct or union.
To be an anonymous struct or union, it must have been declared without a name and there must be no objects of this type declared, e.g.,
is an anonymous union but neither of the following are:
Definition at line 4200 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
Referenced by clang::Sema::CheckUsingShadowDecl(), clang::CodeGen::CGDebugInfo::EmitGlobalVariable(), FieldHasTrivialDestructorBody(), FindDeclaringClass(), HandleDestructionImpl(), clang::Sema::MarkBaseAndMemberDestructorsReferenced(), PopulateKeysForFields(), and clang::Sema::ShouldDeleteSpecialMember().
bool RecordDecl::isCapturedRecord | ( | ) | const |
Determine whether this record is a record for captured variables in CapturedStmt construct.
bool RecordDecl::isInjectedClassName | ( | ) | const |
Determines whether this declaration represents the injected class name.
The injected class name in C++ is the name of the class that appears inside the class itself. For example:
Definition at line 5058 of file Decl.cpp.
References clang::Decl::getDeclContext(), clang::NamedDecl::getDeclName(), clang::Decl::isImplicit(), and clang::DeclContext::isRecord().
Referenced by clang::Sema::ActOnStartCXXMemberDeclarations(), clang::Sema::BuildUsingDeclaration(), clang::Sema::CheckUsingShadowDecl(), and clang::CXXRecordDecl::getMostRecentNonInjectedDecl().
bool RecordDecl::isLambda | ( | ) | const |
Determine whether this record is a class describing a lambda function object.
Definition at line 5063 of file Decl.cpp.
Referenced by extractFunctorCallOperator(), and clang::ASTNodeImporter::ImportDefinition().
bool RecordDecl::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.
isMsStruct - Get whether or not this record uses ms_struct layout.
This which can be turned on with an attribute, pragma, or the -mms-bitfields command-line option.
Definition at line 5125 of file Decl.cpp.
References clang::C.
|
inline |
Definition at line 4234 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
|
inline |
Functions to query basic properties of non-trivial C structs.
Definition at line 4226 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
|
inline |
Definition at line 4242 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
bool RecordDecl::isOrContainsUnion | ( | ) | const |
Returns whether this record is a union, or contains (at any nesting level) a union member.
This is used by CMSE to warn about possible information leaks.
Definition at line 5077 of file Decl.cpp.
References clang::Type::getAs(), clang::RecordType::getDecl(), getDefinition(), clang::ValueDecl::getType(), isOrContainsUnion(), and clang::TagDecl::isUnion().
Referenced by clang::Sema::BuildReturnStmt(), and isOrContainsUnion().
|
inline |
Definition at line 4290 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
|
inline |
Definition at line 4298 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
Whether we are allowed to insert extra padding between fields.
These padding are added to help AddressSanitizer detect intra-object-overflow bugs.
Definition at line 5166 of file Decl.cpp.
References clang::NoSanitizeList::containsLocation(), clang::NoSanitizeList::containsType(), clang::Decl::getASTContext(), clang::ASTContext::getDiagnostics(), clang::ASTContext::getLangOpts(), clang::Decl::getLocation(), clang::ASTContext::getNoSanitizeList(), clang::NamedDecl::getQualifiedNameAsString(), clang::SanitizerSet::Mask, clang::DiagnosticsEngine::Report(), and clang::LangOptions::Sanitize.
void RecordDecl::reorderDecls | ( | const SmallVectorImpl< Decl * > & | Decls | ) |
Definition at line 5129 of file Decl.cpp.
References clang::DeclContext::BuildDeclChain(), clang::DeclContext::FirstDecl, clang::DeclContext::LastDecl, clang::Decl::NextInContextAndBits, and setIsRandomized().
|
inline |
Definition at line 4204 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
Referenced by RecordDecl(), clang::ASTNodeImporter::VisitRecordDecl(), and clang::ASTDeclReader::VisitRecordDeclImpl().
|
inline |
Definition at line 4286 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
Referenced by RecordDecl(), clang::CXXRecordDecl::setBases(), clang::ASTDeclReader::UpdateDecl(), and clang::ASTDeclReader::VisitRecordDeclImpl().
void RecordDecl::setCapturedRecord | ( | ) |
Mark the record as a record for captured variables in CapturedStmt construct.
Definition at line 5073 of file Decl.cpp.
References clang::Decl::addAttr(), and clang::Decl::getASTContext().
Referenced by clang::Sema::CreateCapturedStmtRecordDecl().
|
inline |
Definition at line 4185 of file Decl.h.
References clang::DeclContext::RecordDeclBits, and V.
Referenced by RecordDecl(), and clang::ASTDeclReader::VisitRecordDeclImpl().
|
inline |
Definition at line 4221 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
Referenced by RecordDecl().
|
inline |
Definition at line 4270 of file Decl.h.
References clang::DeclContext::RecordDeclBits, and V.
Referenced by RecordDecl(), and clang::ASTDeclReader::VisitRecordDeclImpl().
|
inline |
Definition at line 4254 of file Decl.h.
References clang::DeclContext::RecordDeclBits, and V.
Referenced by RecordDecl(), and clang::ASTDeclReader::VisitRecordDeclImpl().
|
inline |
Definition at line 4262 of file Decl.h.
References clang::DeclContext::RecordDeclBits, and V.
Referenced by RecordDecl(), and clang::ASTDeclReader::VisitRecordDeclImpl().
|
inline |
Definition at line 4209 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
Referenced by RecordDecl(), clang::CXXRecordDecl::setBases(), and clang::ASTDeclReader::VisitRecordDeclImpl().
|
inline |
Definition at line 4213 of file Decl.h.
References clang::DeclContext::RecordDeclBits.
Referenced by RecordDecl(), clang::CXXRecordDecl::setBases(), and clang::ASTDeclReader::VisitRecordDeclImpl().
|
inline |
Definition at line 4300 of file Decl.h.
References clang::DeclContext::RecordDeclBits, and V.
Referenced by RecordDecl(), and reorderDecls().
|
inline |
Definition at line 4238 of file Decl.h.
References clang::DeclContext::RecordDeclBits, and V.
Referenced by RecordDecl(), and clang::ASTDeclReader::VisitRecordDeclImpl().
|
inline |
Definition at line 4230 of file Decl.h.
References clang::DeclContext::RecordDeclBits, and V.
Referenced by RecordDecl(), and clang::ASTDeclReader::VisitRecordDeclImpl().
|
inline |
Definition at line 4246 of file Decl.h.
References clang::DeclContext::RecordDeclBits, and V.
Referenced by RecordDecl(), and clang::ASTDeclReader::VisitRecordDeclImpl().
|
inline |
Definition at line 4294 of file Decl.h.
References clang::DeclContext::RecordDeclBits, and V.
Referenced by RecordDecl(), clang::ASTDeclReader::UpdateDecl(), and clang::ASTDeclReader::VisitRecordDeclImpl().
|
friend |
|
friend |