clang
7.0.0svn
|
Represents a parameter to a function. More...
#include "clang/AST/Decl.h"
Public Types | |
enum | { MaxFunctionScopeDepth = 255 } |
enum | { MaxFunctionScopeIndex = 255 } |
![]() | |
enum | InitializationStyle { CInit, CallInit, ListInit } |
Initialization styles. More... | |
enum | TLSKind { TLS_None, TLS_Static, TLS_Dynamic } |
Kinds of thread-local storage. More... | |
enum | DefinitionKind { DeclarationOnly, TentativeDefinition, Definition } |
using | redecl_range = redeclarable_base::redecl_range |
using | redecl_iterator = redeclarable_base::redecl_iterator |
![]() | |
enum | ExplicitVisibilityKind { VisibilityForType, VisibilityForValue } |
Kinds of explicit visibility. More... | |
![]() | |
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 > |
![]() | |
using | redecl_range = llvm::iterator_range< redecl_iterator > |
Public Member Functions | |
SourceRange | getSourceRange () const override LLVM_READONLY |
Source range that this declaration covers. More... | |
void | setObjCMethodScopeInfo (unsigned parameterIndex) |
void | setScopeInfo (unsigned scopeDepth, unsigned parameterIndex) |
bool | isObjCMethodParameter () const |
unsigned | getFunctionScopeDepth () const |
unsigned | getFunctionScopeIndex () const |
Returns the index of this parameter in its prototype or method scope. More... | |
ObjCDeclQualifier | getObjCDeclQualifier () const |
void | setObjCDeclQualifier (ObjCDeclQualifier QTVal) |
bool | isKNRPromoted () const |
True if the value passed to this parameter must undergo K&R-style default argument promotion: More... | |
void | setKNRPromoted (bool promoted) |
Expr * | getDefaultArg () |
const Expr * | getDefaultArg () const |
void | setDefaultArg (Expr *defarg) |
SourceRange | getDefaultArgRange () const |
Retrieve the source range that covers the entire default argument. More... | |
void | setUninstantiatedDefaultArg (Expr *arg) |
Expr * | getUninstantiatedDefaultArg () |
const Expr * | getUninstantiatedDefaultArg () const |
bool | hasDefaultArg () const |
Determines whether this parameter has a default argument, either parsed or not. More... | |
bool | hasUnparsedDefaultArg () const |
Determines whether this parameter has a default argument that has not yet been parsed. More... | |
bool | hasUninstantiatedDefaultArg () const |
void | setUnparsedDefaultArg () |
Specify that this parameter has an unparsed default argument. More... | |
bool | hasInheritedDefaultArg () const |
void | setHasInheritedDefaultArg (bool I=true) |
QualType | getOriginalType () const |
bool | isParameterPack () const |
Determine whether this parameter is actually a function parameter pack. More... | |
void | setOwningFunction (DeclContext *FD) |
Sets the function declaration that owns this ParmVarDecl. More... | |
![]() | |
StorageClass | getStorageClass () const |
Returns the storage class as written in the source. More... | |
void | setStorageClass (StorageClass SC) |
void | setTSCSpec (ThreadStorageClassSpecifier TSC) |
ThreadStorageClassSpecifier | getTSCSpec () const |
TLSKind | getTLSKind () const |
bool | hasLocalStorage () const |
Returns true if a variable with function scope is a non-static local variable. More... | |
bool | isStaticLocal () const |
Returns true if a variable with function scope is a static local variable. More... | |
bool | hasExternalStorage () const |
Returns true if a variable has extern or private_extern storage. More... | |
bool | hasGlobalStorage () const |
Returns true for all variables that do not have local storage. More... | |
StorageDuration | getStorageDuration () const |
Get the storage duration of this variable, per C++ [basic.stc]. More... | |
LanguageLinkage | getLanguageLinkage () const |
Compute the language linkage. More... | |
bool | isExternC () const |
Determines whether this variable is a variable with external, C linkage. More... | |
bool | isInExternCContext () const |
Determines whether this variable's context is, or is nested within, a C++ extern "C" linkage spec. More... | |
bool | isInExternCXXContext () const |
Determines whether this variable's context is, or is nested within, a C++ extern "C++" linkage spec. More... | |
bool | isLocalVarDecl () const |
Returns true for local variable declarations other than parameters. More... | |
bool | isLocalVarDeclOrParm () const |
Similar to isLocalVarDecl but also includes parameters. More... | |
bool | isFunctionOrMethodVarDecl () const |
Similar to isLocalVarDecl, but excludes variables declared in blocks. More... | |
bool | isStaticDataMember () const |
Determines whether this is a static data member. More... | |
VarDecl * | getCanonicalDecl () override |
Retrieves the "canonical" declaration of the given declaration. More... | |
const VarDecl * | getCanonicalDecl () const |
DefinitionKind | isThisDeclarationADefinition (ASTContext &) const |
Check whether this declaration is a definition. More... | |
DefinitionKind | isThisDeclarationADefinition () const |
DefinitionKind | hasDefinition (ASTContext &) const |
Check whether this variable is defined in this translation unit. More... | |
DefinitionKind | hasDefinition () const |
VarDecl * | getActingDefinition () |
Get the tentative definition that acts as the real definition in a TU. More... | |
const VarDecl * | getActingDefinition () const |
VarDecl * | getDefinition (ASTContext &) |
Get the real (not just tentative) definition for this declaration. More... | |
const VarDecl * | getDefinition (ASTContext &C) const |
VarDecl * | getDefinition () |
const VarDecl * | getDefinition () const |
bool | isOutOfLine () const override |
Determine whether this is or was instantiated from an out-of-line definition of a static data member. More... | |
bool | isFileVarDecl () const |
Returns true for file scoped variable declaration. More... | |
const Expr * | getAnyInitializer () const |
Get the initializer for this variable, no matter which declaration it is attached to. More... | |
const Expr * | getAnyInitializer (const VarDecl *&D) const |
Get the initializer for this variable, no matter which declaration it is attached to. More... | |
bool | hasInit () const |
const Expr * | getInit () const |
Expr * | getInit () |
Stmt ** | getInitAddress () |
Retrieve the address of the initializer expression. More... | |
void | setInit (Expr *I) |
bool | isUsableInConstantExpressions (ASTContext &C) const |
Determine whether this variable's value can be used in a constant expression, according to the relevant language standard. More... | |
EvaluatedStmt * | ensureEvaluatedStmt () const |
Convert the initializer for this declaration to the elaborated EvaluatedStmt form, which contains extra information on the evaluated value of the initializer. More... | |
APValue * | evaluateValue () const |
Attempt to evaluate the value of the initializer attached to this declaration, and produce notes explaining why it cannot be evaluated or is not a constant expression. More... | |
APValue * | evaluateValue (SmallVectorImpl< PartialDiagnosticAt > &Notes) const |
APValue * | getEvaluatedValue () const |
Return the already-evaluated value of this variable's initializer, or NULL if the value is not yet known. More... | |
bool | isInitKnownICE () const |
Determines whether it is already known whether the initializer is an integral constant expression or not. More... | |
bool | isInitICE () const |
Determines whether the initializer is an integral constant expression, or in C++11, whether the initializer is a constant expression. More... | |
bool | checkInitIsICE () const |
Determine whether the value of the initializer attached to this declaration is an integral constant expression. More... | |
void | setInitStyle (InitializationStyle Style) |
InitializationStyle | getInitStyle () const |
The style of initialization for this declaration. More... | |
bool | isDirectInit () const |
Whether the initializer is a direct-initializer (list or call). More... | |
bool | isThisDeclarationADemotedDefinition () const |
If this definition should pretend to be a declaration. More... | |
void | demoteThisDefinitionToDeclaration () |
This is a definition which should be demoted to a declaration. More... | |
bool | isExceptionVariable () const |
Determine whether this variable is the exception variable in a C++ catch statememt or an Objective-C @catch statement. More... | |
void | setExceptionVariable (bool EV) |
bool | isNRVOVariable () const |
Determine whether this local variable can be used with the named return value optimization (NRVO). More... | |
void | setNRVOVariable (bool NRVO) |
bool | isCXXForRangeDecl () const |
Determine whether this variable is the for-range-declaration in a C++0x for-range statement. More... | |
void | setCXXForRangeDecl (bool FRD) |
bool | isObjCForDecl () const |
Determine whether this variable is a for-loop declaration for a for-in statement in Objective-C. More... | |
void | setObjCForDecl (bool FRD) |
bool | isARCPseudoStrong () const |
Determine whether this variable is an ARC pseudo-__strong variable. More... | |
void | setARCPseudoStrong (bool ps) |
bool | isInline () const |
Whether this variable is (C++1z) inline. More... | |
bool | isInlineSpecified () const |
void | setInlineSpecified () |
void | setImplicitlyInline () |
bool | isConstexpr () const |
Whether this variable is (C++11) constexpr. More... | |
void | setConstexpr (bool IC) |
bool | isInitCapture () const |
Whether this variable is the implicit variable for a lambda init-capture. More... | |
void | setInitCapture (bool IC) |
bool | isPreviousDeclInSameBlockScope () const |
Whether this local extern variable declaration's previous declaration was declared in the same block scope. More... | |
void | setPreviousDeclInSameBlockScope (bool Same) |
VarDecl * | getTemplateInstantiationPattern () const |
Retrieve the variable declaration from which this variable could be instantiated, if it is an instantiation (rather than a non-template). More... | |
VarDecl * | getInstantiatedFromStaticDataMember () const |
If this variable is an instantiated static data member of a class template specialization, returns the templated static data member from which it was instantiated. More... | |
TemplateSpecializationKind | getTemplateSpecializationKind () const |
If this variable is an instantiation of a variable template or a static data member of a class template, determine what kind of template specialization or instantiation this is. More... | |
SourceLocation | getPointOfInstantiation () const |
If this variable is an instantiation of a variable template or a static data member of a class template, determine its point of instantiation. More... | |
MemberSpecializationInfo * | getMemberSpecializationInfo () const |
If this variable is an instantiation of a static data member of a class template specialization, retrieves the member specialization information. More... | |
void | setTemplateSpecializationKind (TemplateSpecializationKind TSK, SourceLocation PointOfInstantiation=SourceLocation()) |
For a static data member that was instantiated from a static data member of a class template, set the template specialiation kind. More... | |
void | setInstantiationOfStaticDataMember (VarDecl *VD, TemplateSpecializationKind TSK) |
Specify that this variable is an instantiation of the static data member VD. More... | |
VarTemplateDecl * | getDescribedVarTemplate () const |
Retrieves the variable template that is described by this variable declaration. More... | |
void | setDescribedVarTemplate (VarTemplateDecl *Template) |
![]() | |
TypeSourceInfo * | getTypeSourceInfo () const |
void | setTypeSourceInfo (TypeSourceInfo *TI) |
SourceLocation | getInnerLocStart () const |
Return start of source range ignoring outer template declarations. More... | |
void | setInnerLocStart (SourceLocation L) |
SourceLocation | getOuterLocStart () const |
Return start of source range taking into account any outer template declarations. More... | |
SourceLocation | getLocStart () const LLVM_READONLY |
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 index) const |
void | setTemplateParameterListsInfo (ASTContext &Context, ArrayRef< TemplateParameterList *> TPLists) |
SourceLocation | getTypeSpecStartLoc () const |
![]() | |
QualType | getType () const |
void | setType (QualType newType) |
bool | isWeak () const |
Determine whether this symbol is weakly-imported, or declared with the weak or weak-ref attr. More... | |
![]() | |
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 |
![]() | |
SourceLocation | getLocStart () const LLVM_READONLY |
SourceLocation | getLocEnd () 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()) 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 |
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 |
const FunctionType * | getFunctionType (bool BlocksToo=true) const |
Looks through the Decl's underlying type to extract a FunctionType when possible. More... | |
![]() | |
Redeclarable (const ASTContext &Ctx) | |
VarDecl * | getPreviousDecl () |
Return the previous declaration of this declaration or NULL if this is the first declaration. More... | |
const VarDecl * | getPreviousDecl () const |
VarDecl * | getFirstDecl () |
Return the first declaration of this declaration or itself if this is the only declaration. More... | |
const VarDecl * | 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... | |
VarDecl * | getMostRecentDecl () |
Returns the most recent (re)declaration of this declaration. More... | |
const VarDecl * | getMostRecentDecl () const |
Returns the most recent (re)declaration of this declaration. More... | |
void | setPreviousDecl (VarDecl *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 ParmVarDecl * | Create (ASTContext &C, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, IdentifierInfo *Id, QualType T, TypeSourceInfo *TInfo, StorageClass S, Expr *DefArg) |
static ParmVarDecl * | CreateDeserialized (ASTContext &C, unsigned ID) |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static const char * | getStorageClassSpecifierString (StorageClass SC) |
Return the string used to specify the storage class SC . More... | |
static VarDecl * | Create (ASTContext &C, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, IdentifierInfo *Id, QualType T, TypeSourceInfo *TInfo, StorageClass S) |
static VarDecl * | CreateDeserialized (ASTContext &C, unsigned ID) |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
![]() | |
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) |
Protected Member Functions | |
ParmVarDecl (Kind DK, ASTContext &C, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, IdentifierInfo *Id, QualType T, TypeSourceInfo *TInfo, StorageClass S, Expr *DefArg) | |
![]() | |
VarDecl (Kind DK, ASTContext &C, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, IdentifierInfo *Id, QualType T, TypeSourceInfo *TInfo, StorageClass SC) | |
VarDecl * | getNextRedeclarationImpl () override |
Returns the next redeclaration or itself if this is the only decl. More... | |
VarDecl * | getPreviousDeclImpl () override |
Implementation of getPreviousDecl(), to be overridden by any subclass that has a redeclaration chain. More... | |
VarDecl * | getMostRecentDeclImpl () override |
Implementation of getMostRecentDecl(), to be overridden by any subclass that has a redeclaration chain. More... | |
![]() | |
DeclaratorDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N, QualType T, TypeSourceInfo *TInfo, SourceLocation StartL) | |
![]() | |
ValueDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N, QualType T) | |
![]() | |
NamedDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N) | |
![]() | |
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 |
![]() | |
VarDecl * | getNextRedeclaration () const |
Additional Inherited Members | |
![]() | |
enum | { NumParameterIndexBits = 8 } |
enum | DefaultArgKind { DAK_None, DAK_Unparsed, DAK_Uninstantiated, DAK_Normal } |
using | InitType = llvm::PointerUnion< Stmt *, EvaluatedStmt * > |
using | redeclarable_base = Redeclarable< VarDecl > |
![]() | |
static DeclLink | PreviousDeclLink (VarDecl *D) |
static DeclLink | LatestDeclLink (const ASTContext &Ctx) |
![]() | |
InitType | Init |
The initializer for this variable or, for a ParmVarDecl, the C++ default argument. More... | |
union { | |
unsigned AllBits | |
VarDeclBitfields VarDeclBits | |
ParmVarDeclBitfields ParmVarDeclBits | |
NonParmVarDeclBitfields NonParmVarDeclBits | |
}; | |
![]() | |
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... | |
![]() | |
DeclLink | RedeclLink |
Points to the next redeclaration in the chain. More... | |
VarDecl * | First |
|
inlineprotected |
Definition at line 1675 of file Decl.h.
References clang::Decl::getKind().
|
static |
|
static |
Definition at line 2501 of file Decl.cpp.
References clang::C, and clang::SC_None.
Expr * ParmVarDecl::getDefaultArg | ( | ) |
Definition at line 2522 of file Decl.cpp.
References clang::VarDecl::getInit().
Referenced by clang::Sema::CheckExtraCXXDefaultArguments(), and clang::Sema::SubstParmVarDecl().
|
inline |
SourceRange ParmVarDecl::getDefaultArgRange | ( | ) | const |
Retrieve the source range that covers the entire default argument.
Definition at line 2539 of file Decl.cpp.
References clang::VarDecl::DAK_None, clang::VarDecl::DAK_Normal, clang::VarDecl::DAK_Uninstantiated, clang::VarDecl::DAK_Unparsed, and clang::VarDecl::ParmVarDeclBits.
Referenced by CheckOperatorNewDeclaration(), and GetDefaultValueString().
|
inline |
Definition at line 1575 of file Decl.h.
Referenced by clang::Sema::SubstParmVarDecl(), clang::TreeTransform< Derived >::TransformFunctionTypeParam(), and clang::ASTDeclWriter::VisitParmVarDecl().
|
inline |
Returns the index of this parameter in its prototype or method scope.
Definition at line 1581 of file Decl.h.
Referenced by clang::CodeGen::CodeGenFunction::EmitNonNullArgCheck(), clang::Sema::SubstParmVarDecl(), clang::TreeTransform< Derived >::TransformFunctionTypeParam(), and clang::ASTDeclWriter::VisitParmVarDecl().
|
inline |
Definition at line 1585 of file Decl.h.
Referenced by FormatFunctionParameter(), clang::ASTContext::ObjCMethodsAreEqual(), and clang::ASTDeclWriter::VisitParmVarDecl().
QualType ParmVarDecl::getOriginalType | ( | ) | const |
Definition at line 2493 of file Decl.cpp.
References clang::TypeSourceInfo::getType(), clang::ValueDecl::getType(), clang::DeclaratorDecl::getTypeSourceInfo(), and clang::T.
Referenced by clang::Sema::CheckStaticArrayArgument().
|
overridevirtual |
Source range that this declaration covers.
Reimplemented from clang::VarDecl.
Definition at line 2507 of file Decl.cpp.
References clang::Decl::getDeclContext(), clang::SourceRange::getEnd(), clang::Decl::getLocation(), clang::DeclaratorDecl::getLocStart(), clang::DeclaratorDecl::getOuterLocStart(), clang::DeclaratorDecl::getSourceRange(), and clang::SourceRange::isValid().
Referenced by CheckConstexprParameterTypes(), and clang::Sema::SpecialMemberIsTrivial().
Expr * ParmVarDecl::getUninstantiatedDefaultArg | ( | ) |
Definition at line 2564 of file Decl.cpp.
References clang::VarDecl::Init.
Referenced by clang::Sema::CheckCXXDefaultArgExpr(), clang::Sema::SubstParmVarDecl(), and clang::ASTDeclWriter::VisitParmVarDecl().
|
inline |
bool ParmVarDecl::hasDefaultArg | ( | ) | const |
Determines whether this parameter has a default argument, either parsed or not.
Definition at line 2570 of file Decl.cpp.
References clang::VarDecl::Init.
Referenced by AddFunctionParameterChunks(), clang::Sema::CheckConstructor(), clang::Sema::CheckCXXDefaultArguments(), CheckOperatorNewDeclaration(), functionDeclHasDefaultArgument(), and clang::Sema::isInitListConstructor().
|
inline |
Definition at line 1654 of file Decl.h.
Referenced by functionDeclHasDefaultArgument(), clang::Sema::SubstParmVarDecl(), and clang::ASTDeclWriter::VisitParmVarDecl().
|
inline |
Definition at line 1642 of file Decl.h.
Referenced by clang::Sema::CheckCXXDefaultArgExpr(), clang::Sema::SubstParmVarDecl(), and clang::ASTDeclWriter::VisitParmVarDecl().
|
inline |
Determines whether this parameter has a default argument that has not yet been parsed.
This will occur during the processing of a C++ class whose member functions have default arguments, e.g.,
Definition at line 1638 of file Decl.h.
Referenced by clang::Sema::ActOnDelayedCXXMethodParameter(), clang::Sema::CheckCXXDefaultArgExpr(), clang::Sema::CheckExtraCXXDefaultArguments(), and clang::Sema::SubstParmVarDecl().
|
inline |
True if the value passed to this parameter must undergo K&R-style default argument promotion:
C99 6.5.2.2. If the expression that denotes the called function has a type that does not include a prototype, the integer promotions are performed on each argument, and arguments that have type float are promoted to double.
Definition at line 1602 of file Decl.h.
Referenced by clang::ASTDeclWriter::VisitParmVarDecl().
|
inline |
Definition at line 1571 of file Decl.h.
Referenced by clang::ASTDeclWriter::VisitParmVarDecl().
bool ParmVarDecl::isParameterPack | ( | ) | const |
Determine whether this parameter is actually a function parameter pack.
Definition at line 2578 of file Decl.cpp.
References clang::Decl::getASTContext(), clang::ASTContext::getParameterIndex(), clang::ValueDecl::getType(), clang::VarDecl::ParmVarDeclBits, and clang::ASTContext::setParameterIndex().
Referenced by clang::Sema::ActOnParamDefaultArgument(), clang::Sema::CheckCXXDefaultArguments(), isVariadicFunctionTemplate(), clang::TemplateDeclInstantiator::SubstFunctionType(), and clang::Sema::SubstParmVarDecl().
void ParmVarDecl::setDefaultArg | ( | Expr * | defarg | ) |
Definition at line 2534 of file Decl.cpp.
References clang::VarDecl::DAK_Normal, clang::VarDecl::Init, and clang::VarDecl::ParmVarDeclBits.
Referenced by clang::Sema::ActOnDelayedCXXMethodParameter(), clang::Sema::ActOnParamDefaultArgumentError(), clang::Sema::CheckCXXDefaultArguments(), and clang::Sema::CheckExtraCXXDefaultArguments().
Definition at line 1658 of file Decl.h.
Referenced by clang::Sema::SubstParmVarDecl().
|
inline |
|
inline |
|
inline |
Definition at line 1556 of file Decl.h.
Referenced by clang::ASTDeclReader::VisitParmVarDecl().
|
inline |
Sets the function declaration that owns this ParmVarDecl.
Since ParmVarDecls are often created before the FunctionDecls that own them, this routine is required to update the DeclContext appropriately.
|
inline |
Definition at line 1561 of file Decl.h.
Referenced by clang::Sema::DeclClonePragmaWeak(), clang::Sema::SubstParmVarDecl(), clang::TreeTransform< Derived >::TransformFunctionTypeParam(), and clang::ASTDeclReader::VisitParmVarDecl().
void ParmVarDecl::setUninstantiatedDefaultArg | ( | Expr * | arg | ) |
Definition at line 2559 of file Decl.cpp.
References clang::VarDecl::DAK_Uninstantiated, clang::VarDecl::Init, and clang::VarDecl::ParmVarDeclBits.
Referenced by clang::Sema::SubstParmVarDecl(), and clang::ASTDeclReader::VisitParmVarDecl().
|
inline |
Specify that this parameter has an unparsed default argument.
The argument will be replaced with a real default argument via setDefaultArg when the class definition enclosing the function declaration that owns this default argument is completed.
Definition at line 1650 of file Decl.h.
Referenced by clang::Sema::ActOnParamUnparsedDefaultArgument(), and clang::Sema::SubstParmVarDecl().