clang 8.0.0

Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Friends | List of all members
clang::TagDecl Class Reference

Represents the declaration of a struct/union/class/enum. More...

`#include "clang/AST/Decl.h"`

Inheritance diagram for clang::TagDecl:
[legend]
Collaboration diagram for clang::TagDecl:
[legend]

## Public Types
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 }
| 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 | ModuleOwnershipKind : unsigned { ModuleOwnershipKind::Unowned, ModuleOwnershipKind::Visible, ModuleOwnershipKind::VisibleWhenImported, ModuleOwnershipKind::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, std::random_access_iterator_tag, 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
SourceRange | getBraceRange () const
void | setBraceRange (SourceRange R)
SourceLocation | getInnerLocStart () const
| Return SourceLocation representing start of source range ignoring outer template declarations. More...
SourceLocation | getOuterLocStart () const
| Return SourceLocation representing start of source range taking into account any outer template declarations. More...
SourceRange | getSourceRange () const override LLVM_READONLY
| Source range that this declaration covers. More...
TagDecl * | getCanonicalDecl () override
| Retrieves the "canonical" declaration of the given declaration. More...
const TagDecl * | getCanonicalDecl () const
bool | isThisDeclarationADefinition () const
| Return true if this declaration is a completion definition of the type. More...
bool | isCompleteDefinition () const
| Return true if this decl has its body fully specified. More...
void | setCompleteDefinition (bool V=true)
| True if this decl has its body fully specified. More...
bool | isCompleteDefinitionRequired () const
| Return true if this complete decl is required to be complete for some existing use. More...
void | setCompleteDefinitionRequired (bool V=true)
| True if this complete decl is required to be complete for some existing use. More...
bool | isBeingDefined () const
| Return true if this decl is currently being defined. More...
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. More...
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. More...
bool | isFreeStanding () const
| True if this tag is free standing, e.g. "struct foo;". More...
void | setFreeStanding (bool isFreeStanding=true)
| True if this tag is free standing, e.g. "struct foo;". More...
bool | mayHaveOutOfDateDef () const
| Indicates whether it is possible for declarations of this kind to have an out-of-date definition. More...
bool | isDependentType () const
| Whether this declaration declares a type that is dependent, i.e., a type that somehow depends on template parameters. More...
void | startDefinition ()
| Starts the definition of this tag declaration. More...
TagDecl * | getDefinition () const
| Returns the TagDecl that actually defines this struct/union/class/enum. More...
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? More...
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. More...
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. More...
void | setQualifierInfo (NestedNameSpecifierLoc QualifierLoc)
unsigned | getNumTemplateParameterLists () const
TemplateParameterList * | getTemplateParameterList (unsigned i) const
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)
Public Member Functions inherited from clang::NamedDecl
IdentifierInfo * | getIdentifier () const
| Get the identifier that names this declaration, if there is one. More...
StringRef | getName () const
| Get the name of identifier for this declaration as a StringRef. More...
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). More...
virtual void | printName (raw_ostream &os) const
DeclarationName | getDeclName () const
| Get the actual, stored name of the declaration, which may be a special name. More...
void | setDeclName (DeclarationName N)
| Set the name of this declaration. More...
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. More...
void | printQualifiedName (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. More...
bool | declarationReplaces (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. More...
bool | hasLinkage () const
| Determine whether this declaration has linkage. More...
bool | isCXXClassMember () const
| Determine whether this declaration is a C++ class member. More...
bool | isCXXInstanceMember () const
| Determine whether the given declaration is an instance member of a C++ class. More...
Linkage | getLinkageInternal () const
| Determine what kind of linkage this entity has. More...
Linkage | getFormalLinkage () const
| Get the linkage from a semantic point of view. More...
bool | hasExternalFormalLinkage () const
| True if this decl has external linkage. More...
bool | isExternallyVisible () const
bool | isExternallyDeclarable () const
| Determine whether this declaration can be redeclared in a different translation unit. More...
Visibility | getVisibility () const
| Determines the visibility of this entity. More...
LinkageInfo | getLinkageAndVisibility () const
| Determines the linkage and visibility of this entity. More...
Optional< Visibility > | getExplicitVisibility (ExplicitVisibilityKind kind) const
| If visibility was explicitly specified for this declaration, return that visibility. More...
bool | isLinkageValid () const
| True if the computed linkage is valid. More...
bool | hasLinkageBeenComputed () const
| True if something has required us to compute the linkage of this declaration. More...
NamedDecl * | getUnderlyingDecl ()
| Looks through UsingDecls and ObjCCompatibleAliasDecls for the underlying named decl. More...
const NamedDecl * | getUnderlyingDecl () const
NamedDecl * | getMostRecentDecl ()
const NamedDecl * | getMostRecentDecl () const
ObjCStringFormatFamily | getObjCFStringFormattingFamily () const
Public Member Functions inherited from clang::Decl
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
Decl * | getNonClosureContext ()
| Find the innermost non-closure ancestor of this declaration, walking up through blocks, lambdas, etc. More...
const Decl * | getNonClosureContext () const
TranslationUnitDecl * | getTranslationUnitDecl ()
const TranslationUnitDecl * | getTranslationUnitDecl () const
bool | isInAnonymousNamespace () const
bool | isInStdNamespace () const
ASTContext & | getASTContext () const LLVM_READONLY
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. More...
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 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. More...
void | setInvalidDecl (bool Invalid=true)
| setInvalidDecl - Indicates the Decl had a semantic error. More...
bool | isInvalidDecl () const
bool | isImplicit () const
| isImplicit - Indicates whether the declaration was implicitly generated by the implementation. More...
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. More...
void | setIsUsed ()
| Set whether the declaration is used, in the sense of odr-use. More...
void | markUsed (ASTContext &C)
| Mark the declaration used, in the sense of odr-use. More...
bool | isReferenced () const
| Whether any declaration of this entity was referenced. More...
bool | isThisDeclarationReferenced () const
| Whether this declaration was referenced. More...
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. More...
void | setTopLevelDeclInObjCContainer (bool V=true)
ExternalSourceSymbolAttr * | getExternalSourceSymbolAttr () const
| Looks on this and related declarations for an applicable external source symbol attribute. More...
bool | isModulePrivate () const
| Whether this declaration was marked as being private to the module in which it was defined. More...
bool | isExported () const
| Whether this declaration is exported (by virtue of being lexically within an ExportDecl or by being a NamespaceDecl). More...
bool | hasDefiningAttr () const
| Return true if this declaration has an attribute which acts as definition of the entity, such as 'alias' or 'ifunc'. More...
const Attr * | getDefiningAttr () const
| Return this declaration's defining attribute if it has one. More...
AvailabilityResult | getAvailability (std::string *Message=nullptr, VersionTuple EnclosingVersion=VersionTuple(), StringRef *RealizedPlatform=nullptr) const
| Determine the availability of the given declaration. More...
VersionTuple | getVersionIntroduced () const
| Retrieve the version of the target platform in which this declaration was introduced. More...
bool | isDeprecated (std::string *Message=nullptr) const
| Determine whether this declaration is marked 'deprecated'. More...
bool | isUnavailable (std::string *Message=nullptr) const
| Determine whether this declaration is marked 'unavailable'. More...
bool | isWeakImported () const
| Determine whether this is a weak-imported symbol. More...
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. More...
bool | isFromASTFile () const
| Determine whether this declaration came from an AST file (such as a precompiled header or module) rather than having been parsed. More...
unsigned | getGlobalID () const
| Retrieve the global declaration ID associated with this declaration, which specifies where this Decl was loaded from. More...
unsigned | getOwningModuleID () const
| Retrieve the global ID of the module that owns this particular declaration. More...
Module * | getImportedOwningModule () const
| Get the imported owning module, if this decl is from an imported (non-local) module. More...
Module * | getLocalOwningModule () const
| Get the local owning module, if known. More...
void | setLocalOwningModule (Module *M)
bool | hasOwningModule () const
| Is this declaration owned by some module? More...
Module * | getOwningModule () const
| Get the module that owns this declaration (for visibility purposes). More...
Module * | getOwningModuleForLinkage (bool IgnoreLinkage=false) const
| Get the module that owns this declaration for linkage purposes. More...
bool | isHidden () const
| Determine whether this declaration might be hidden from name lookup. More...
void | setVisibleDespiteOwningModule ()
| Set that this declaration is globally visible, even if it came from a module that is not visible. More...
ModuleOwnershipKind | getModuleOwnershipKind () const
| Get the kind of module ownership for this declaration. More...
void | setModuleOwnershipKind (ModuleOwnershipKind MOK)
| Set whether this declaration is hidden from name lookup. More...
unsigned | getIdentifierNamespace () const
bool | isInIdentifierNamespace (unsigned NS) const
bool | hasTagIdentifierNamespace () const
DeclContext * | getLexicalDeclContext ()
| getLexicalDeclContext - The declaration context where this Decl was lexically declared (LexicalDC). More...
const DeclContext * | getLexicalDeclContext () const
virtual bool | isOutOfLine () const
| Determine whether this declaration is declared out of line (outside its semantic context). More...
void | setDeclContext (DeclContext *DC)
| setDeclContext - Set both the semantic and lexical DeclContext to DC. More...
void | setLexicalDeclContext (DeclContext *DC)
bool | isTemplated () const
| Determine whether this declaration is a templated entity (whether it is. More...
bool | isDefinedOutsideFunctionOrMethod () const
| isDefinedOutsideFunctionOrMethod - This predicate returns true if this scoped decl is defined outside the current function or method. More...
bool | isLexicallyWithinFunctionOrMethod () const
| Returns true if this declaration lexically is inside a function. More...
const DeclContext * | getParentFunctionOrMethod () const
| If this decl is defined inside a function/method/block it returns the corresponding DeclContext, otherwise it returns null. More...
DeclContext * | getParentFunctionOrMethod ()
const Decl * | getCanonicalDecl () const
bool | isCanonicalDecl () const
| Whether this particular Decl is a canonical one. More...
redecl_range | redecls () const
| Returns an iterator range for all the redeclarations of the same decl. More...
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. More...
const Decl * | getPreviousDecl () const
| Retrieve the most recent declaration that declares the same entity as this declaration, or NULL if there is no previous declaration. More...
bool | isFirstDecl () const
| True if this is the first declaration in its redeclaration chain. More...
Decl * | getMostRecentDecl ()
| Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration). More...
const Decl * | getMostRecentDecl () const
| Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration). More...
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. More...
virtual bool | hasBody () const
| Returns true if this `Decl` represents a declaration for a body of code, such as a function or method definition. More...
SourceLocation | getBodyRBrace () const
| getBodyRBrace - Gets the right brace of the body, if a body exists. More...
bool | isTemplateParameter () const
| isTemplateParameter - Determines whether this declaration is a template parameter. More...
bool | isTemplateParameterPack () const
| isTemplateParameter - Determines whether this declaration is a template parameter pack. More...
bool | isParameterPack () const
| Whether this declaration is a parameter pack. More...
bool | isTemplateDecl () const
| returns true if this declaration is a template More...
bool | isFunctionOrFunctionTemplate () const
| Whether this declaration is a function or function template. More...
TemplateDecl * | getDescribedTemplate () const
| If this is a declaration that describes some template, this method returns that template declaration. More...
FunctionDecl * | getAsFunction () LLVM_READONLY
| Returns the function itself, or the templated function if this is a function template. More...
const FunctionDecl * | getAsFunction () const
void | setLocalExternDecl ()
| Changes the namespace of this declaration to reflect that it's a function-local extern declaration. More...
bool | isLocalExternDecl ()
| Determine whether this is a block-scope declaration with linkage. More...
void | setObjectOfFriendDecl (bool PerformFriendInjection=false)
| Changes the namespace of this declaration to reflect that it's the object of a friend declaration. More...
FriendObjectKind | getFriendObjectKind () const
| Determines whether this declaration is the object of a friend declaration and, if so, what kind. More...
void | setNonMemberOperator ()
| Specifies that this declaration is a C++ overloaded non-member. More...
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) 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. More...
Public Member Functions inherited from clang::DeclContext
| ~DeclContext ()
Decl::Kind | getDeclKind () const
const char * | getDeclKindName () const
DeclContext * | getParent ()
| getParent - Returns the containing DeclContext. More...
const DeclContext * | getParent () const
DeclContext * | getLexicalParent ()
| getLexicalParent - Returns the containing lexical DeclContext. More...
const DeclContext * | getLexicalParent () const
DeclContext * | getLookupParent ()
| Find the parent context of this context that will be used for unqualified name lookup. More...
const DeclContext * | getLookupParent () const
ASTContext & | getParentASTContext () const
bool | isClosure () const
bool | isObjCContainer () const
bool | isFunctionOrMethod () const
bool | isLookupContext () const
| Test whether the context supports looking up names. More...
bool | isFileContext () const
bool | isTranslationUnit () const
bool | isRecord () const
bool | isNamespace () const
bool | isStdNamespace () const
bool | isInlineNamespace () const
bool | isDependentContext () const
| Determines whether this context is dependent on a template parameter. More...
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. More...
bool | isExternCContext () const
| Determines whether this context or some of its ancestors is a linkage specification context that specifies C linkage. More...
const LinkageSpecDecl * | getExternCContext () const
| Retrieve the nearest enclosing C linkage specification context. More...
bool | isExternCXXContext () const
| Determines whether this context or some of its ancestors is a linkage specification context that specifies C++ linkage. More...
bool | Equals (const DeclContext *DC) const
| Determine whether this declaration context is equivalent to the declaration context DC. More...
bool | Encloses (const DeclContext *DC) const
| Determine whether this declaration context encloses the declaration context DC. More...
Decl * | getNonClosureAncestor ()
| Find the nearest non-closure ancestor of this context, i.e. More...
const Decl * | getNonClosureAncestor () 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. More...
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. More...
const DeclContext * | getRedeclContext () const
DeclContext * | getEnclosingNamespaceContext ()
| Retrieve the nearest enclosing namespace context. More...
const DeclContext * | getEnclosingNamespaceContext () const
RecordDecl * | getOuterLexicalRecordContext ()
| Retrieve the outermost lexically enclosing record context. More...
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. More...
void | collectAllContexts (SmallVectorImpl< DeclContext *> &Contexts)
| Collects all of the declaration contexts that are semantically connected to this declaration context. More...
decl_range | decls () const
| decls_begin/decls_end - Iterate over the declarations stored in this context. More...
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. More...
decl_iterator | noload_decls_begin () const
decl_iterator | noload_decls_end () const
void | addDecl (Decl *D)
| Add the declaration D into this context. More...
void | addDeclInternal (Decl *D)
| Add the declaration D into this context, but suppress searches for external declarations with the same name. More...
void | addHiddenDecl (Decl *D)
| Add the declaration D to this context without modifying any lookup tables. More...
void | removeDecl (Decl *D)
| Removes a declaration from this context. More...
bool | containsDecl (Decl *D) const
| Checks whether a declaration is in this context. More...
bool | containsDeclAndLoad (Decl *D) const
| Checks whether a declaration is in this context. More...
lookup_result | lookup (DeclarationName Name) const
| lookup - Find the declarations (if any) with the given Name in this context. More...
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. More...
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. More...
void | makeDeclVisibleInContext (NamedDecl *D)
| Makes a declaration visible within this context. More...
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. More...
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. More...
all_lookups_iterator | noload_lookups_end () const
udir_range | using_directives () const
| Returns iterator range [First, Last) of UsingDirectiveDecls stored within this context. More...
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). More...
StoredDeclsMap * | getLookupPtr () const
| Retrieve the internal representation of the lookup structure. More...
StoredDeclsMap * | buildLookup ()
| Ensure the lookup structure is fully-built and return it. More...
bool | hasExternalLexicalStorage () const
| Whether this DeclContext has external storage containing additional declarations that are lexically in this context. More...
void | setHasExternalLexicalStorage (bool ES=true) const
| State whether this DeclContext has external storage for declarations lexically in this context. More...
bool | hasExternalVisibleStorage () const
| Whether this DeclContext has external storage containing additional declarations that are visible in this context. More...
void | setHasExternalVisibleStorage (bool ES=true) const
| State whether this DeclContext has external storage for declarations visible in this context. More...
bool | isDeclInLexicalTraversal (const Decl *D) const
| Determine whether the given declaration is stored in the list of declarations lexically within this context. More...
bool | setUseQualifiedLookup (bool use=true) const
bool | shouldUseQualifiedLookup () 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. More...
const TagDecl * | getPreviousDecl () const
TagDecl * | getFirstDecl ()
| Return the first declaration of this declaration or itself if this is the only declaration. More...
const TagDecl * | getFirstDecl () const
| Return the first declaration of this declaration or itself if this is the only declaration. More...
bool | isFirstDecl () const
| True if this is the first declaration in its redeclaration chain. More...
TagDecl * | getMostRecentDecl ()
| Returns the most recent (re)declaration of this declaration. More...
const TagDecl * | getMostRecentDecl () const
| Returns the most recent (re)declaration of this declaration. More...
void | setPreviousDecl (TagDecl *PrevDecl)
| Set the previous declaration. More...
redecl_range | redecls () const
| Returns an iterator range for all the redeclarations of the same decl. More...
redecl_iterator | redecls_begin () const
redecl_iterator | redecls_end () const

## Static Public Member Functions
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 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 Types
using | redeclarable_base = Redeclarable< TagDecl >

## Protected Member Functions
| 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. More...
TagDecl * | getPreviousDeclImpl () override
| Implementation of getPreviousDecl(), to be overridden by any subclass that has a redeclaration chain. More...
TagDecl * | getMostRecentDeclImpl () override
| Implementation of getMostRecentDecl(), to be overridden by any subclass that has a redeclaration chain. More...
void | completeDefinition ()
| Completes the definition of this tag declaration. More...
void | setBeingDefined (bool V=true)
| True if this decl is currently being defined. More...
void | setMayHaveOutOfDateDef (bool V=true)
| Indicates whether it is possible for declarations of this kind to have an out-of-date definition. More...
Protected Member Functions inherited from clang::TypeDecl
| TypeDecl (Kind DK, DeclContext *DC, SourceLocation L, 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, unsigned ID, std::size_t Extra=0)
| Allocate memory for a deserialized declaration. More...
void * | operator new (std::size_t Size, const ASTContext &Ctx, DeclContext *Parent, std::size_t Extra=0)
| Allocate memory for a non-deserialized declaration. More...
| 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. More...
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. More...
void | setOwningModuleID (unsigned ID)
| Set the owning module ID. More...
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

## Friends
class | ASTDeclReader
class | ASTDeclWriter

## Additional Inherited Members
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. More...
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 *, 2, ModuleOwnershipKind > | NextInContextAndBits
| The next declaration within the same lexical DeclContext. More...
unsigned | Access: 2
| Access - Used by C++ decls for the access specifier. More...
unsigned | FromASTFile: 1
| Whether this declaration was loaded from an AST file. More...
unsigned | IdentifierNamespace: 13
| IdentifierNamespace - This specifies what IDNS_* namespace this lives in. More...
unsigned | CacheValidAndLinkage: 3
| If 0, we have not computed the linkage of this declaration. More...
Protected Attributes inherited from clang::DeclContext
union {
DeclContextBitfields DeclContextBits
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. More...
Decl * | FirstDecl = nullptr
| FirstDecl - The first declaration stored within this declaration context. More...
Decl * | LastDecl = nullptr
| LastDecl - The last declaration stored within this declaration context. More...
Protected Attributes inherited from clang::Redeclarable< TagDecl >
DeclLink | RedeclLink
| Points to the next redeclaration in the chain. More...
TagDecl * | First

## Detailed Description

Represents the declaration of a struct/union/class/enum.

Definition at line 3064 of file Decl.h.

## Member Typedef Documentation

## ◆ redecl_iterator

using clang::TagDecl::redecl_iterator = redeclarable_base::redecl_iterator

Definition at line 3136 of file Decl.h.

## ◆ redecl_range

using clang::TagDecl::redecl_range = redeclarable_base::redecl_range

Definition at line 3135 of file Decl.h.

## ◆ redeclarable_base

using clang::TagDecl::redeclarable_base = Redeclarable<TagDecl>
| protected

Definition at line 3101 of file Decl.h.

## ◆ TagKind

using clang::TagDecl::TagKind = TagTypeKind

Definition at line 3071 of file Decl.h.

## Constructor & Destructor Documentation

## ◆ TagDecl()

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

Definition at line 3840 of file Decl.cpp.

References Enum, setBeingDefined(), setCompleteDefinition(), setCompleteDefinitionRequired(), setEmbeddedInDeclarator(), setFreeStanding(), clang::Redeclarable< TagDecl >::setPreviousDecl(), setTagKind(), and clang::TTK_Enum.

## Member Function Documentation

## ◆ castFromDeclContext()

static TagDecl* clang::TagDecl::castFromDeclContext | ( | const DeclContext * | DC | ) |
| inline static

Definition at line 3318 of file Decl.h.

Referenced by ValidDuplicateEnum().

## ◆ castToDeclContext()

static DeclContext* clang::TagDecl::castToDeclContext | ( | const TagDecl * | D | ) |
| inline static

Definition at line 3314 of file Decl.h.

## ◆ classof()

static bool clang::TagDecl::classof | ( | const Decl * | D | ) |
| inline static

Definition at line 3311 of file Decl.h.

References clang::Decl::getKind().

## ◆ classofKind()

static bool clang::TagDecl::classofKind | ( | Kind | K | ) |
| inline static

Definition at line 3312 of file Decl.h.

## ◆ completeDefinition()

void TagDecl::completeDefinition | ( |  | ) |
| protected

Completes the definition of this tag declaration.

This is a helper function for derived classes.

Definition at line 3888 of file Decl.cpp.

References clang::Decl::getASTMutationListener(), hasDefinition(), setBeingDefined(), and setCompleteDefinition().

Referenced by clang::EnumDecl::completeDefinition(), and clang::RecordDecl::completeDefinition().

## ◆ getBraceRange()

SourceRange clang::TagDecl::getBraceRange | ( |  | ) | const
| inline

Definition at line 3145 of file Decl.h.

Referenced by clang::ClassTemplateSpecializationDecl::getSourceRange(), clang::Sema::InstantiateClass(), clang::TemplateDeclInstantiator::InstantiateEnumDefinition(), rewriteToNSMacroDecl(), and clang::ASTDeclWriter::VisitTagDecl().

## ◆ getCanonicalDecl() [1/2]

TagDecl * TagDecl::getCanonicalDecl | ( |  | ) |
| override virtual

Retrieves the "canonical" declaration of the given declaration.

Reimplemented from clang::Decl.

Reimplemented in clang::EnumDecl, and clang::CXXRecordDecl.

Definition at line 3866 of file Decl.cpp.

References clang::Redeclarable< TagDecl >::getFirstDecl().

Referenced by clang::CXXRecordDecl::getCanonicalDecl(), clang::EnumDecl::getCanonicalDecl(), HandleConstructorCall(), and clang::ASTTypeWriter::VisitTagType().

## ◆ getCanonicalDecl() [2/2]

const TagDecl* clang::TagDecl::getCanonicalDecl | ( |  | ) | const
| inline

Definition at line 3158 of file Decl.h.

References getCanonicalDecl().

## ◆ getDefinition()

TagDecl * TagDecl::getDefinition | ( |  | ) | const

Returns the TagDecl that actually defines this struct/union/class/enum.

When determining whether or not a struct/union/class/enum has a definition, one should use this method as opposed to 'isDefinition'. 'isDefinition' indicates whether or not a specific TagDecl is defining declaration, not whether or not the struct/union/class/enum type is defined. This method returns NULL if there is no TagDecl that defines the struct/union/class/enum.

Definition at line 3900 of file Decl.cpp.

References clang::NamedDecl::getIdentifier(), isCompleteDefinition(), mayHaveOutOfDateDef(), clang::Redeclarable< TagDecl >::redecls(), and clang::Decl::updateOutOfDate().

Referenced by clang::EnumDecl::getDefinition(), clang::RecordDecl::getDefinition(), clang::serialization::getDefinitiveDeclContext(), and clang::DeclContext::getPrimaryContext().

## ◆ getInnerLocStart()

SourceLocation clang::TagDecl::getInnerLocStart | ( |  | ) | const
| inline

Return SourceLocation representing start of source range ignoring outer template declarations.

Definition at line 3150 of file Decl.h.

References getCanonicalDecl(), and clang::tooling::fixit::internal::getSourceRange().

Referenced by clang::Sema::InstantiateClass().

## ◆ getKindName()

StringRef clang::TagDecl::getKindName | ( |  | ) | const
| inline

Definition at line 3239 of file Decl.h.

References clang::TypeWithKeyword::getTagTypeKindName().

Referenced by clang::CodeGen::CodeGenTypes::addRecordTypeName(), clang::Sema::CheckFriendTypeDecl(), clang::ast_matchers::internal::getNodeName(), and clang::getParameterABISpelling().

## ◆ getMostRecentDeclImpl()

TagDecl* clang::TagDecl::getMostRecentDeclImpl | ( |  | ) |
| inline override protected virtual

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

Reimplemented from clang::Decl.

Definition at line 3111 of file Decl.h.

## ◆ getNextRedeclarationImpl()

TagDecl* clang::TagDecl::getNextRedeclarationImpl | ( |  | ) |
| inline override protected virtual

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

Decl subclasses that can be redeclared should override this method so that Decl::redecl_iterator can iterate over them.

Reimplemented from clang::Decl.

Definition at line 3103 of file Decl.h.

## ◆ getNumTemplateParameterLists()

unsigned clang::TagDecl::getNumTemplateParameterLists | ( |  | ) | const
| inline

Definition at line 3298 of file Decl.h.

## ◆ getOuterLocStart()

SourceLocation TagDecl::getOuterLocStart | ( |  | ) | const

Return SourceLocation representing start of source range taking into account any outer template declarations.

Definition at line 3856 of file Decl.cpp.

References getTemplateOrInnerLocStart().

Referenced by getSourceRange().

## ◆ getPreviousDeclImpl()

TagDecl* clang::TagDecl::getPreviousDeclImpl | ( |  | ) |
| inline override protected virtual

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

Reimplemented from clang::Decl.

Definition at line 3107 of file Decl.h.

## ◆ getQualifier()

NestedNameSpecifier* clang::TagDecl::getQualifier | ( |  | ) | const
| inline

Retrieve the nested-name-specifier that qualifies the name of this declaration, if it was present in the source.

Definition at line 3283 of file Decl.h.

## ◆ getQualifierLoc()

NestedNameSpecifierLoc clang::TagDecl::getQualifierLoc | ( |  | ) | const
| inline

Retrieve the nested-name-specifier (with source-location information) that qualifies the name of this declaration, if it was present in the source.

Definition at line 3291 of file Decl.h.

Referenced by clang::if(), clang::index::IndexingContext::indexTagDecl(), clang::TemplateDeclInstantiator::InstantiateEnumDefinition(), and clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl().

## ◆ getSourceRange()

SourceRange TagDecl::getSourceRange | ( |  | ) | const
| override virtual

Source range that this declaration covers.

Reimplemented from clang::TypeDecl.

Reimplemented in clang::ClassTemplateSpecializationDecl.

Definition at line 3860 of file Decl.cpp.

References clang::SourceRange::getEnd(), clang::Decl::getLocation(), getOuterLocStart(), and clang::SourceLocation::isValid().

Referenced by assignInheritanceModel().

## ◆ getTagKind()

TagKind clang::TagDecl::getTagKind | ( |  | ) | const
| inline

Definition at line 3243 of file Decl.h.

Referenced by clang::Sema::CheckCompletedCXXClass(), clang::Sema::CheckConstexprFunctionDecl(), clang::Sema::CheckFriendTypeDecl(), classifyPointerDeclarator(), getPaddingDiagFromTagKind(), clang::Sema::InstantiateClass(), clang::TemplateDeclInstantiator::InstantiateClassTemplatePartialSpecialization(), clang::TemplateDeclInstantiator::InstantiateEnumDefinition(), isCFStringType(), clang::CXXRecordDecl::isCLike(), clang::CXXRecordDecl::lambdaIsDefaultConstructibleAndAssignable(), clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl(), and clang::ASTDeclWriter::VisitTagDecl().

## ◆ getTemplateParameterList()

TemplateParameterList* clang::TagDecl::getTemplateParameterList | ( | unsigned | i | ) | const
| inline

Definition at line 3302 of file Decl.h.

## ◆ getTypedefNameForAnonDecl()

TypedefNameDecl* clang::TagDecl::getTypedefNameForAnonDecl | ( |  | ) | const
| inline

Definition at line 3274 of file Decl.h.

References setTypedefNameForAnonDecl().

Referenced by clang::CodeGen::CodeGenTypes::addRecordTypeName(), checkEnumComparison(), clang::TypedefNameDecl::getAnonDeclWithTypedefName(), clang::getParameterABISpelling(), clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(), setTypedefNameForAnonDecl(), clang::ASTDeclWriter::VisitEnumDecl(), clang::ASTDeclWriter::VisitRecordDecl(), and clang::ASTDeclWriter::VisitTagDecl().

## ◆ hasNameForLinkage()

bool clang::TagDecl::hasNameForLinkage | ( |  | ) | const
| inline

Is this tag type named, either directly or via being defined in a typedef of this type?

C++11 [basic.link]p8: A type is said to have linkage if and only if:

- it is a class or enumeration type that is named (or has a name for linkage purposes) and the name has linkage; ... C++11 [dcl.typedef]p9: If the typedef declaration defines an unnamed class (or enum), the first typedef-name declared by the declaration to be that class type (or enum type) is used to denote the class type (or enum type) for linkage purposes only.

C does not have an analogous rule, but the same concept is nonetheless useful in some places.

Definition at line 3270 of file Decl.h.

Referenced by computeCachedProperties(), findCommonEnumForBlockReturns(), clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(), and clang::Sema::setTagNameForLinkagePurposes().

## ◆ isBeingDefined()

bool clang::TagDecl::isBeingDefined | ( |  | ) | const
| inline

Return true if this decl is currently being defined.

Definition at line 3189 of file Decl.h.

Referenced by CanDeclareSpecialMemberFunction(), clang::DeclContext::getPrimaryContext(), clang::ASTNodeImporter::ImportDefinition(), clang::TagType::isBeingDefined(), clang::Sema::IsDerivedFrom(), clang::Sema::isThisOutsideMemberFunctionBody(), clang::CXXRecordDecl::lambdaIsDefaultConstructibleAndAssignable(), clang::Sema::RequireCompleteDeclContext(), and clang::ASTNodeImporter::VisitLambdaExpr().

## ◆ isClass()

bool clang::TagDecl::isClass | ( |  | ) | const
| inline

Definition at line 3251 of file Decl.h.

References clang::TTK_Class.

Referenced by getAccessFlag(), getTagForRecord(), clang::Type::isStructureOrClassType(), and isValidBaseType().

## ◆ isCompleteDefinition()

bool clang::TagDecl::isCompleteDefinition | ( |  | ) | const
| inline

Return true if this decl has its body fully specified.

Definition at line 3169 of file Decl.h.

Referenced by CheckASTMemory(), clang::EnumDecl::completeDefinition(), clang::RecordDecl::completeDefinition(), clang::CodeGen::CGDebugInfo::completeRequiredType(), clang::CodeGen::CGDebugInfo::completeUnusedClass(), clang::CodeGen::CodeGenTypes::ConvertRecordDeclType(), clang::CodeGen::CodeGenTypes::ConvertType(), DiagnoseReinterpretUpDownCast(), clang::CodeGen::CodeGenFunction::EmitVTablePtrCheckForCast(), clang::ASTContext::getASTRecordLayout(), clang::CodeGen::CodeGenModule::getClassPointerAlignment(), GetDeclSpecTypeForDeclarator(), getDefinition(), clang::CodeGen::CodeGenModule::getDynamicOffsetAlignment(), clang::CodeGen::CodeGenModule::getVBaseAlignment(), clang::if(), clang::ASTNodeImporter::ImportImplicitMethods(), isDefinedInClangModule(), clang::TagTypeLoc::isDefinition(), isImportedDeclContext(), IsIncompleteClassType(), clang::Type::isIncompleteType(), clang::Sema::IsValueInFlagEnum(), LookupDirect(), MethodsAndNestedClassesComplete(), TypeIsInnerPointer(), UseNSOptionsMacro(), clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl(), clang::ASTDeclWriter::VisitCXXRecordDecl(), clang::ASTDeclReader::VisitCXXRecordDeclImpl(), clang::ASTDeclReader::VisitEnumDecl(), and clang::ASTDeclWriter::VisitTagDecl().

## ◆ isCompleteDefinitionRequired()

bool clang::TagDecl::isCompleteDefinitionRequired | ( |  | ) | const
| inline

Return true if this complete decl is required to be complete for some existing use.

Definition at line 3178 of file Decl.h.

Referenced by shouldOmitDefinition(), and clang::ASTDeclWriter::VisitTagDecl().

## ◆ isDependentType()

bool clang::TagDecl::isDependentType | ( |  | ) | const
| inline

Whether this declaration declares a type that is dependent, i.e., a type that somehow depends on template parameters.

Definition at line 3220 of file Decl.h.

References getDefinition().

Referenced by clang::ASTRecordWriter::AddCXXDefinitionData(), canPassInRegisters(), clang::Sema::CheckCompletedCXXClass(), clang::Sema::CheckOverridingFunctionExceptionSpec(), clang::Sema::SetDeclDefaulted(), clang::Sema::ShouldDeleteSpecialMember(), and clang::CodeGen::CodeGenTypes::UpdateCompletedType().

## ◆ isEmbeddedInDeclarator()

bool clang::TagDecl::isEmbeddedInDeclarator | ( |  | ) | const
| inline

True if this tag declaration is "embedded" (i.e., defined or declared for the very first time) in the syntax of a declarator.

Definition at line 3193 of file Decl.h.

Referenced by clang::ASTDeclWriter::VisitTagDecl().

## ◆ isEnum()

bool clang::TagDecl::isEnum | ( |  | ) | const
| inline

Definition at line 3253 of file Decl.h.

References clang::TTK_Enum.

## ◆ isFreeStanding()

bool clang::TagDecl::isFreeStanding | ( |  | ) | const
| inline

True if this tag is free standing, e.g. "struct foo;".

Definition at line 3204 of file Decl.h.

Referenced by clang::ASTDeclWriter::VisitTagDecl().

## ◆ isInterface()

bool clang::TagDecl::isInterface | ( |  | ) | const
| inline

Definition at line 3250 of file Decl.h.

References clang::TTK_Interface.

Referenced by getTagForRecord(), clang::CXXRecordDecl::isInterfaceLike(), and clang::Type::isStructureOrClassType().

## ◆ isStruct()

bool clang::TagDecl::isStruct | ( |  | ) | const
| inline

Definition at line 3249 of file Decl.h.

References clang::TTK_Struct.

Referenced by getAccessFlag(), getTagForRecord(), clang::CXXRecordDecl::isInterfaceLike(), clang::Type::isStructureOrClassType(), and isValidBaseType().

## ◆ isThisDeclarationADefinition()

bool clang::TagDecl::isThisDeclarationADefinition | ( |  | ) | const
| inline

Return true if this declaration is a completion definition of the type.

Provided for consistency.

Definition at line 3164 of file Decl.h.

Referenced by clang::index::IndexingContext::indexTagDecl(), clang::Sema::setTagNameForLinkagePurposes(), and clang::ASTDeclWriter::VisitCXXRecordDecl().

## ◆ isUnion()

bool clang::TagDecl::isUnion | ( |  | ) | const
| inline

Definition at line 3252 of file Decl.h.

References clang::TTK_Union.

Referenced by clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData(), BuildImplicitMemberInitializer(), clang::Sema::CheckBaseSpecifier(), CheckConstexprCtorInitializer(), clang::Sema::CheckConstexprFunctionBody(), defaultedSpecialMemberIsConstexpr(), DiagnoseBadFunctionCast(), DiagnoseBaseOrMemInitializerOrder(), diagnoseUnreadableFields(), clang::CodeGen::CodeGenFunction::EmitAggregateCopy(), clang::CodeGen::CodeGenFunction::EmitLValueForField(), EmitNullConstant(), clang::CodeGen::CodeGenFunction::EnterDtorCleanups(), EvaluateBinaryTypeTrait(), EvaluateComparisonBinaryOperator(), FieldHasTrivialDestructorBody(), getAccessFlag(), GetGCAttrTypeForType(), getTagForRecord(), getTypeExpansion(), HandleClassZeroInitialization(), HandleConstructorCall(), clang::ASTContext::hasUniqueObjectRepresentations(), clang::Expr::isConstantInitializer(), isDesignatorAtObjectEnd(), clang::CodeGen::ABIInfo::isHomogeneousAggregate(), isLayoutCompatible(), isMemcpyEquivalentSpecialMember(), isReadByLvalueToRvalueConversion(), isSimpleZero(), IsTailPaddedMemberArray(), clang::CXXRecordDecl::isTriviallyCopyable(), clang::Sema::MarkBaseAndMemberDestructorsReferenced(), and tryMatchRecordTypes().

## ◆ mayHaveOutOfDateDef()

bool clang::TagDecl::mayHaveOutOfDateDef | ( |  | ) | const
| inline

Indicates whether it is possible for declarations of this kind to have an out-of-date definition.

This option is only enabled when modules are enabled.

Definition at line 3215 of file Decl.h.

Referenced by getDefinition().

## ◆ setBeingDefined()

void clang::TagDecl::setBeingDefined | ( | bool | V = `true` | ) |
| inline protected

True if this decl is currently being defined.

Definition at line 3121 of file Decl.h.

Referenced by completeDefinition(), startDefinition(), and TagDecl().

## ◆ setBraceRange()

void clang::TagDecl::setBraceRange | ( | SourceRange | R | ) |
| inline

Definition at line 3146 of file Decl.h.

Referenced by clang::Sema::InstantiateClass(), and clang::ASTDeclReader::VisitTagDecl().

## ◆ setCompleteDefinition()

void clang::TagDecl::setCompleteDefinition | ( | bool | V = `true` | ) |
| inline

True if this decl has its body fully specified.

Definition at line 3172 of file Decl.h.

Referenced by completeDefinition(), clang::ExternalASTMerger::CompleteType(), TagDecl(), clang::ASTDeclReader::VisitEnumDecl(), clang::ASTDeclReader::VisitTagDecl(), and clang::ASTDeclReader::VisitUnresolvedUsingTypenameDecl().

## ◆ setCompleteDefinitionRequired()

void clang::TagDecl::setCompleteDefinitionRequired | ( | bool | V = `true` | ) |
| inline

True if this complete decl is required to be complete for some existing use.

Definition at line 3184 of file Decl.h.

Referenced by TagDecl(), and clang::ASTDeclReader::VisitTagDecl().

## ◆ setEmbeddedInDeclarator()

void clang::TagDecl::setEmbeddedInDeclarator | ( | bool | isInDeclarator | ) |
| inline

True if this tag declaration is "embedded" (i.e., defined or declared for the very first time) in the syntax of a declarator.

Definition at line 3199 of file Decl.h.

Referenced by GetDeclSpecTypeForDeclarator(), TagDecl(), and clang::ASTDeclReader::VisitTagDecl().

## ◆ setFreeStanding()

void clang::TagDecl::setFreeStanding | ( | bool | isFreeStanding = `true` | ) |
| inline

True if this tag is free standing, e.g. "struct foo;".

Definition at line 3207 of file Decl.h.

Referenced by TagDecl(), and clang::ASTDeclReader::VisitTagDecl().

## ◆ setMayHaveOutOfDateDef()

void clang::TagDecl::setMayHaveOutOfDateDef | ( | bool | V = `true` | ) |
| inline protected

Indicates whether it is possible for declarations of this kind to have an out-of-date definition.

This option is only enabled when modules are enabled.

Definition at line 3127 of file Decl.h.

Referenced by clang::RecordDecl::Create(), clang::EnumDecl::CreateDeserialized(), and clang::RecordDecl::CreateDeserialized().

## ◆ setQualifierInfo()

void TagDecl::setQualifierInfo | ( | NestedNameSpecifierLoc | QualifierLoc | ) |

Definition at line 3923 of file Decl.cpp.

References clang::ASTContext::Deallocate(), clang::Decl::getASTContext(), and clang::QualifierInfo::QualifierLoc.

Referenced by clang::TemplateDeclInstantiator::InstantiateEnumDefinition(), and clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl().

## ◆ setTagKind()

void clang::TagDecl::setTagKind | ( | TagKind | TK | ) |
| inline

Definition at line 3247 of file Decl.h.

Referenced by clang::Sema::InstantiateClass(), TagDecl(), and clang::ASTDeclReader::VisitTagDecl().

## ◆ setTemplateParameterListsInfo()

void TagDecl::setTemplateParameterListsInfo | ( | ASTContext & | Context,
|  | ArrayRef< TemplateParameterList *> | TPLists
| ) |  |

Definition at line 3943 of file Decl.cpp.

## ◆ setTypedefNameForAnonDecl()

void TagDecl::setTypedefNameForAnonDecl | ( | TypedefNameDecl * | TDD | ) |

Definition at line 3868 of file Decl.cpp.

References clang::TypeDecl::getTypeForDecl(), clang::NamedDecl::isLinkageValid(), and clang::Type::isLinkageValid().

Referenced by clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(), and setTypedefNameForAnonDecl().

## ◆ startDefinition()

void TagDecl::startDefinition | ( |  | ) |

Starts the definition of this tag declaration.

This method should be invoked at the beginning of the definition of this tag declaration. It will set the tag type into a state where it is in the process of being defined.

Definition at line 3877 of file Decl.cpp.

References clang::Decl::getASTContext(), clang::Redeclarable< TagDecl >::redecls(), and setBeingDefined().

Referenced by clang::CodeGen::CGOpenMPRuntime::CGOpenMPRuntime(), clang::CodeGen::CGOpenMPRuntimeNVPTX::clear(), createKmpTaskTRecordDecl(), createKmpTaskTWithPrivatesRecordDecl(), createPrivatesRecordDecl(), clang::CodeGen::emitDeclareSimdFunction(), emitReduceFiniFunction(), clang::CodeGen::emitTaskInit(), clang::ASTContext::getBlockDescriptorExtendedType(), clang::ASTContext::getBlockDescriptorType(), clang::CodeGen::CodeGenModule::getObjCFastEnumerationStateType(), clang::CodeGen::getTgtBinaryDescriptorQTy(), clang::CodeGen::getTgtDeviceImageQTy(), clang::CodeGen::getTgtOffloadEntryQTy(), clang::ASTNodeImporter::ImportDefinition(), clang::Sema::InstantiateClass(), and clang::TemplateDeclInstantiator::InstantiateEnumDefinition().

## Friends And Related Function Documentation

## ◆ ASTDeclReader

friend class ASTDeclReader
| friend

Definition at line 3132 of file Decl.h.

## ◆ ASTDeclWriter

friend class ASTDeclWriter
| friend

Definition at line 3133 of file Decl.h.

The documentation for this class was generated from the following files:

- include/clang/AST/Decl.h
- lib/AST/Decl.cpp