A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/Decl_8h_source.html below:

clang: include/clang/AST/Decl.h Source File

13#ifndef LLVM_CLANG_AST_DECL_H 14#define LLVM_CLANG_AST_DECL_H 37#include "llvm/ADT/APSInt.h" 38#include "llvm/ADT/ArrayRef.h" 39#include "llvm/ADT/PointerIntPair.h" 40#include "llvm/ADT/PointerUnion.h" 41#include "llvm/ADT/StringRef.h" 42#include "llvm/ADT/iterator_range.h" 43#include "llvm/Support/Casting.h" 44#include "llvm/Support/Compiler.h" 45#include "llvm/Support/TrailingObjects.h" 56struct

ASTTemplateArgumentListInfo;

58class

DependentFunctionTemplateSpecializationInfo;

61class

FunctionTemplateDecl;

62class

FunctionTemplateSpecializationInfo;

65class

MemberSpecializationInfo;

73class

TemplateArgumentList;

74class

TemplateArgumentListInfo;

75class

TemplateParameterList;

76class

TypeAliasTemplateDecl;

77class

UnresolvedSetImpl;

107 virtual void

anchor();

146 private

llvm::TrailingObjects<PragmaCommentDecl, char> {

149 friend

TrailingObjects;

155

:

Decl

(PragmaComment, TU, CommentLoc), CommentKind(CommentKind) {}

157 virtual void

anchor();

169

StringRef

getArg

()

const

{

return

getTrailingObjects<char>(); }

180 private

llvm::TrailingObjects<PragmaDetectMismatchDecl, char> {

183 friend

TrailingObjects;

189

:

Decl

(PragmaDetectMismatch, TU,

Loc

), ValueStart(ValueStart) {}

191 virtual void

anchor();

201

StringRef

getName

()

const

{

return

getTrailingObjects<char>(); }

202

StringRef

getValue

()

const

{

return

getTrailingObjects<char>() + ValueStart; }

231 virtual void

anchor();

259 virtual void

anchor();

262 NamedDecl

*getUnderlyingDeclImpl() LLVM_READONLY;

266

:

Decl

(DK, DC, L), Name(N) {}

281

assert(Name.isIdentifier() &&

"Name is not a simple identifier"

);

367 bool

IsKnownNewer =

true

)

const

;

382 if

(isa<EnumDecl>(DC))

445

std::optional<Visibility>

468 if

(this->

getKind

() != UsingShadow &&

469

this->

getKind

() != ConstructorUsingShadow &&

470

this->

getKind

() != ObjCCompatibleAlias &&

471

this->

getKind

() != NamespaceAlias)

474 return

getUnderlyingDeclImpl();

506 bool

MSAsmNameResolved =

false

;

515

:

NamedDecl

(

Label

, DC, IdentL, II), TheStmt(S), LocStart(StartL) {}

517 void

anchor()

override

;

629 return

std::distance(

X

.begin(),

X

.end()) ==

630

std::distance(Y.begin(), Y.end());

674 void

anchor()

override

;

745 Expr

*TrailingRequiresClause =

nullptr

;

748

llvm::PointerUnion<TypeSourceInfo *, ExtInfo *> DeclInfo;

754 bool

hasExtInfo()

const

{

return

isa<ExtInfo *>(DeclInfo); }

755

ExtInfo *getExtInfo() {

return

cast<ExtInfo *>(DeclInfo); }

756 const

ExtInfo *getExtInfo()

const

{

return

cast<ExtInfo *>(DeclInfo); }

762

:

ValueDecl

(DK, DC, L, N,

T

), DeclInfo(TInfo), InnerLocStart(StartL) {}

769 return

hasExtInfo() ? getExtInfo()->TInfo

770

: cast<TypeSourceInfo *>(DeclInfo);

775

getExtInfo()->TInfo = TI;

797 return

hasExtInfo() ? getExtInfo()->QualifierLoc.getNestedNameSpecifier()

805 return

hasExtInfo() ? getExtInfo()->QualifierLoc

815 return

hasExtInfo() ? getExtInfo()->TrailingRequiresClause

820 return

hasExtInfo() ? getExtInfo()->TrailingRequiresClause

827 return

hasExtInfo() ? getExtInfo()->NumTemplParamLists : 0;

832 return

getExtInfo()->TemplParamLists[index];

844 return

K >= firstDeclarator && K <= lastDeclarator;

928 using InitType

= llvm::PointerUnion<Stmt *, EvaluatedStmt *>;

939 class

VarDeclBitfields {

946 unsigned

TSCSpec : 2;

948 unsigned

InitStyle : 2;

952

LLVM_PREFERRED_TYPE(

bool

)

953 unsigned

ARCPseudoStrong : 1;

955 enum

{ NumVarDeclBits = 8 };

973

LLVM_PREFERRED_TYPE(VarDeclBitfields)

978

LLVM_PREFERRED_TYPE(

bool

)

979 unsigned

HasInheritedDefaultArg : 1;

989

LLVM_PREFERRED_TYPE(

bool

)

990 unsigned

IsKNRPromoted : 1;

993

LLVM_PREFERRED_TYPE(

bool

)

994 unsigned

IsObjCMethodParam : 1;

1012

LLVM_PREFERRED_TYPE(VarDeclBitfields)

1018

LLVM_PREFERRED_TYPE(

bool

)

1019 unsigned

IsThisDeclarationADemotedDefinition : 1;

1023

LLVM_PREFERRED_TYPE(

bool

)

1024 unsigned

ExceptionVar : 1;

1029

LLVM_PREFERRED_TYPE(

bool

)

1030 unsigned

NRVOVariable : 1;

1034

LLVM_PREFERRED_TYPE(

bool

)

1035 unsigned

CXXForRangeDecl : 1;

1038

LLVM_PREFERRED_TYPE(

bool

)

1039 unsigned

ObjCForDecl : 1;

1042

LLVM_PREFERRED_TYPE(

bool

)

1043 unsigned

IsInline : 1;

1046

LLVM_PREFERRED_TYPE(

bool

)

1047 unsigned

IsInlineSpecified : 1;

1050

LLVM_PREFERRED_TYPE(

bool

)

1051 unsigned

IsConstexpr : 1;

1055

LLVM_PREFERRED_TYPE(

bool

)

1056 unsigned

IsInitCapture : 1;

1061

LLVM_PREFERRED_TYPE(

bool

)

1062 unsigned

PreviousDeclInSameBlockScope : 1;

1069

LLVM_PREFERRED_TYPE(

bool

)

1070 unsigned

EscapingByref : 1;

1072

LLVM_PREFERRED_TYPE(

bool

)

1073 unsigned

IsCXXCondDecl : 1;

1130

assert(

VarDeclBits

.TSCSpec == TSC &&

"truncation"

);

1209 if

(

getKind

() != Decl::Var &&

getKind

() != Decl::Decomposition)

1212 return

DC->getRedeclContext()->isFunctionOrMethod();

1223 if

(

getKind

() != Decl::Var &&

getKind

() != Decl::Decomposition)

1299 if

(K == ParmVar || K == ImplicitParam)

1365 bool

IsConstantInitialization)

const

;

1425 return

isa<ParmVarDecl>(

this

) ?

false

:

1436

assert(!isa<ParmVarDecl>(

this

) &&

"Cannot demote ParmVarDecls!"

);

1446

assert(!isa<ParmVarDecl>(

this

));

1464

assert(!isa<ParmVarDecl>(

this

));

1474

assert(!isa<ParmVarDecl>(

this

));

1503 return

isa<ParmVarDecl>(

this

) ?

false 1507

assert(!isa<ParmVarDecl>(

this

));

1512

assert(!isa<ParmVarDecl>(

this

));

1521

assert(!isa<ParmVarDecl>(

this

));

1530

assert(!isa<ParmVarDecl>(

this

));

1537 return

isa<ParmVarDecl>(

this

)

1542

assert(!isa<ParmVarDecl>(

this

));

1564

assert(!isa<ParmVarDecl>(

this

));

1685 void

anchor()

override

;

1734

:

VarDecl

(DK,

C

, DC, StartLoc, IdLoc,

Id

,

T

, TInfo, S) {

1755

setParameterIndex(parameterIndex);

1765

setParameterIndex(parameterIndex);

1786 return

getParameterIndex();

1814 return

ExplicitObjectParameterIntroducerLoc.

isValid

();

1818

ExplicitObjectParameterIntroducerLoc =

Loc

;

1822 return

ExplicitObjectParameterIntroducerLoc;

1896 void

setParameterIndex(

unsigned

parameterIndex) {

1897 if

(parameterIndex >= ParameterIndexSentinel) {

1898

setParameterIndexLarge(parameterIndex);

1903

assert(

ParmVarDeclBits

.ParameterIndex == parameterIndex &&

"truncation!"

);

1905 unsigned

getParameterIndex()

const

{

1907 return

d == ParameterIndexSentinel ? getParameterIndexLarge() : d;

1910 void

setParameterIndexLarge(

unsigned

parameterIndex);

1911 unsigned

getParameterIndexLarge()

const

;

1962

: llvm::TrailingObjects<DefaultedOrDeletedFunctionInfo, DeclAccessPair,

1964 friend

TrailingObjects;

1965 unsigned

NumLookups;

1966 bool

HasDeletedMessage;

1968 size_t

numTrailingObjects(OverloadToken<DeclAccessPair>)

const

{

1980 return

{getTrailingObjects<DeclAccessPair>(), NumLookups};

1984 return

HasDeletedMessage ? *getTrailingObjects<StringLiteral *>()

2036

TemplateOrSpecialization;

2063 void

setFunctionTemplateSpecialization(

2089 FunctionDecl

(

Kind

DK, ASTContext &

C

, DeclContext *DC, SourceLocation StartLoc,

2090 const

DeclarationNameInfo &NameInfo, QualType

T

,

2093

Expr *TrailingRequiresClause =

nullptr

);

2129 Expr

*TrailingRequiresClause =

nullptr

) {

2134

TrailingRequiresClause);

2142 Expr

*TrailingRequiresClause);

2160 if

(FPT && FPT->isVariadic())

2209 bool

CheckForPendingFriendDefinition =

false

)

const

;

2332 "Can't set default loc is function isn't explicitly defaulted"

);

2333

DefaultKWLoc = NewLoc;

2339 auto

*DeclAsWritten =

this

;

2341

DeclAsWritten = Pattern;

2342 return

!(DeclAsWritten->isDeleted() ||

2343

DeclAsWritten->getCanonicalDecl()->isDefaulted());

2523

std::optional<unsigned> *AlignmentParam =

nullptr

,

2524 bool

*IsNothrow =

nullptr

)

const

;

2646 unsigned getBuiltinID

(

bool

ConsiderWrapperFunctions =

false

)

const

;

2674 return

ParamInfo[i];

2678 return

ParamInfo[i];

2851

setInstantiationOfMemberFunction(

getASTContext

(), FD, TSK);

2955

setFunctionTemplateSpecialization(

getASTContext

(), Template, TemplateArgs,

2956

InsertPos, TSK, TemplateArgsAsWritten,

2957

PointOfInstantiation);

3013 if

(

const auto

*FPT =

3015 return

FPT->getFunctionEffects();

3022 return

K >= firstFunction && K <= lastFunction;

3038 enum

InitStorageKind {

3054

ISK_CapturedVLAType,

3057

LLVM_PREFERRED_TYPE(

bool

)

3058 unsigned

BitField : 1;

3059

LLVM_PREFERRED_TYPE(

bool

)

3060 unsigned

Mutable : 1;

3061

LLVM_PREFERRED_TYPE(InitStorageKind)

3062 unsigned

StorageKind : 2;

3063 mutable unsigned

CachedFieldIndex : 28;

3067 struct

InitAndBitWidthStorage {

3098

Mutable(Mutable), StorageKind((InitStorageKind)InitStyle),

3099

CachedFieldIndex(0),

Init

() {

3120 if

(Canonical->CachedFieldIndex == 0) {

3121

Canonical->setCachedFieldIndex();

3122

assert(Canonical->CachedFieldIndex != 0);

3124 return

Canonical->CachedFieldIndex - 1;

3129 void

setCachedFieldIndex()

const

;

3165 "bit width or captured type already set"

);

3166

assert(Width &&

"no bit width specified"

);

3178

assert(

isBitField

() &&

"no bitfield width to remove"

);

3182 Init

= ExistingInit;

3203 return

(StorageKind == ISK_CapturedVLAType ?

ICIS_NoInit 3237

StorageKind = ISK_NoInit;

3248 return

StorageKind == ISK_CapturedVLAType;

3298 const

llvm::APSInt &

V

);

3306 const

llvm::APSInt &

V

);

3312 return

llvm::APSInt(

getValue

(), IsUnsigned);

3318

IsUnsigned =

V

.isUnsigned();

3337 unsigned

ChainingSize;

3343 void

anchor()

override

;

3366

assert(

chain

().size() >= 2);

3367 return

cast<FieldDecl>(

chain

().back());

3371

assert(

chain

().size() >= 2);

3372 return

dyn_cast<VarDecl>(

chain

().front());

3392 mutable const Type

*TypeForDecl =

nullptr

;

3397 void

anchor()

override

;

3428 struct alignas

(8) ModedTInfo {

3435 mutable

llvm::PointerIntPair<

3436

llvm::PointerUnion<TypeSourceInfo *, ModedTInfo *>, 2>

3439 void

anchor()

override

;

3446

MaybeModedTInfo(TInfo, 0) {}

3474 return

isa<ModedTInfo *>(MaybeModedTInfo.getPointer());

3478 return isModed

() ? cast<ModedTInfo *>(MaybeModedTInfo.getPointer())->first

3479

: cast<TypeSourceInfo *>(MaybeModedTInfo.getPointer());

3483 return isModed

() ? cast<ModedTInfo *>(MaybeModedTInfo.getPointer())->second

3484

: cast<TypeSourceInfo *>(MaybeModedTInfo.getPointer())

3489

MaybeModedTInfo.setPointer(newType);

3494

ModedTInfo({unmodedTSI, modedTy}));

3511 if

(MaybeModedTInfo.getInt())

3512 return

MaybeModedTInfo.getInt() & 0x2;

3513 return

isTransparentTagSlow();

3519 return

K >= firstTypedefName && K <= lastTypedefName;

3523 bool

isTransparentTagSlow()

const

;

3557

Template(

nullptr

) {}

3600

llvm::PointerUnion<TypedefNameDecl *, ExtInfo *> TypedefNameDeclOrQualifier;

3602 bool

hasExtInfo()

const

{

return

isa<ExtInfo *>(TypedefNameDeclOrQualifier); }

3603

ExtInfo *getExtInfo() {

return

cast<ExtInfo *>(TypedefNameDeclOrQualifier); }

3604 const

ExtInfo *getExtInfo()

const

{

3605 return

cast<ExtInfo *>(TypedefNameDeclOrQualifier);

3610

SourceLocation L, IdentifierInfo *

Id

, TagDecl *PrevDecl,

3611

SourceLocation StartL);

3712 TagDeclBits

.IsEmbeddedInDeclarator = isInDeclarator;

3740 return TagDeclBits

.IsThisDeclarationADemotedDefinition;

3747 "Should demote definitions only, not forward declarations"

);

3749 TagDeclBits

.IsThisDeclarationADemotedDefinition =

true

;

3778 TagDeclBits

.TagDeclKind = llvm::to_underlying(TK);

3807 return

hasExtInfo() ? nullptr

3808

: cast<TypedefNameDecl *>(TypedefNameDeclOrQualifier);

3879

llvm::PointerUnion<const Type *, TypeSourceInfo *> IntegerType;

3899 bool

Scoped,

bool

ScopedUsingClassTag,

bool

Fixed);

3901 void

anchor()

override

;

3908 void

setNumPositiveBits(

unsigned Num

) {

3910

assert(

EnumDeclBits

.NumPositiveBits ==

Num

&&

"can't store this bitcount"

);

3936 bool

hasODRHash()

const

{

return EnumDeclBits

.HasODRHash; }

3937 void

setHasODRHash(

bool

Hash =

true

) {

EnumDeclBits

.HasODRHash = Hash; }

3950 return

cast_or_null<EnumDecl>(

3971 bool

IsScoped,

bool

IsScopedUsingClassTag,

3986 unsigned

NumPositiveBits,

3987 unsigned

NumNegativeBits);

4024 if

(

const Type

*

T

= dyn_cast<const Type *>(IntegerType))

4026 return

cast<TypeSourceInfo *>(IntegerType)->getType().getUnqualifiedType();

4038 return

dyn_cast_if_present<TypeSourceInfo *>(IntegerType);

4121 return

SpecializationInfo;

4181 return

cast_or_null<RecordDecl>(

4265 return RecordDeclBits

.HasNonTrivialToPrimitiveDefaultInitializeCUnion;

4374 using field_range

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

4393 return

K >= firstRecord && K <= lastRecord;

4415 void

LoadFieldsFromExternalStorage()

const

;

4419 void

setODRHash(

unsigned

Hash) {

RecordDeclBits

.ODRHash = Hash; }

4428

:

Decl

(FileScopeAsm, DC, StartL), AsmString(asmstring), RParenLoc(EndL) {}

4430 virtual void

anchor();

4463 Stmt

*Statement =

nullptr

;

4464 bool

IsSemiMissing =

false

;

4467

:

Decl

(TopLevelStmt, DC, L),

DeclContext

(TopLevelStmt), Statement(S) {}

4469 virtual void

anchor();

4509

llvm::PointerIntPair<VarDecl*, 2> VariableAndFlags;

4518

: VariableAndFlags(variable,

4519

(byRef ? flag_isByRef : 0) | (nested ? flag_isNested : 0)),

4527 bool isByRef

()

const

{

return

VariableAndFlags.getInt() & flag_isByRef; }

4539 bool isNested

()

const

{

return

VariableAndFlags.getInt() & flag_isNested; }

4551 unsigned

NumParams = 0;

4553 Stmt

*Body =

nullptr

;

4556 const Capture

*Captures =

nullptr

;

4557 unsigned

NumCaptures = 0;

4559 unsigned

ManglingNumber = 0;

4560 Decl

*ManglingContextDecl =

nullptr

;

4604 return

ParamInfo[i];

4608 return

ParamInfo[i];

4660 bool

CapturesCXXThis);

4667

ManglingNumber = Number;

4668

ManglingContextDecl = Ctx;

4676 return

FPT->getFunctionEffects();

4703 private

llvm::TrailingObjects<OutlinedFunctionDecl, ImplicitParamDecl *> {

4709

llvm::PointerIntPair<Stmt *, 1, bool> BodyAndNothrow;

4714 return

getTrailingObjects<ImplicitParamDecl *>();

4718 return

getTrailingObjects<ImplicitParamDecl *>();

4727 unsigned

NumParams);

4740

assert(i < NumParams);

4741 return

getParams()[i];

4744

assert(i < NumParams);

4745

getParams()[i] =

P

;

4772 private

llvm::TrailingObjects<CapturedDecl, ImplicitParamDecl *> {

4783 unsigned

ContextParam;

4786

llvm::PointerIntPair<Stmt *, 1, bool> BodyAndNothrow;

4791 return

getTrailingObjects<ImplicitParamDecl *>();

4794

ImplicitParamDecl **getParams() {

4795 return

getTrailingObjects<ImplicitParamDecl *>();

4804 unsigned

NumParams);

4806 unsigned

NumParams);

4817

assert(i < NumParams);

4818 return

getParams()[i];

4821

assert(i < NumParams);

4822

getParams()[i] =

P

;

4835

assert(ContextParam < NumParams);

4839

assert(i < NumParams);

4885

llvm::TrailingObjects<ImportDecl, SourceLocation> {

4889 friend

TrailingObjects;

4892 Module

*ImportedModule =

nullptr

;

4902

llvm::PointerIntPair<ImportDecl *, 1, bool> NextLocalImportAndComplete;

4912 bool

isImportComplete()

const

{

return

NextLocalImportAndComplete.getInt(); }

4914 void

setImportComplete(

bool C

) { NextLocalImportAndComplete.setInt(

C

); }

4918

ImportDecl *getNextLocalImport()

const

{

4919 return

NextLocalImportAndComplete.getPointer();

4922 void

setNextLocalImport(ImportDecl *Import) {

4923

NextLocalImportAndComplete.setPointer(Import);

4929

SourceLocation StartLoc, Module *Imported,

4930

ArrayRef<SourceLocation> IdentifierLocs);

4935

SourceLocation StartLoc, Module *Imported,

4936

SourceLocation EndLoc);

4940 unsigned

NumLocations);

4965 virtual void

anchor();

5014 virtual void

anchor();

5079template

<

typename

decl_type>

5083

assert(RedeclLink.isFirst() &&

5084 "setPreviousDecl on a decl already in a redeclaration chain"

);

5090 First

= PrevDecl->getFirstDecl();

5091

assert(

First

->RedeclLink.isFirst() &&

"Expected first"

);

5092

decl_type *MostRecent =

First

->getNextRedeclaration();

5093

RedeclLink = PreviousDeclLink(cast<decl_type>(MostRecent));

5097 static_cast<

decl_type*

>

(

this

)->IdentifierNamespace |=

5098

MostRecent->getIdentifierNamespace() &

5102 First

=

static_cast<

decl_type*

>

(

this

);

5106 First

->RedeclLink.setLatest(

static_cast<

decl_type*

>

(

this

));

5108

assert(!isa<NamedDecl>(

static_cast<

decl_type*

>

(

this

)) ||

5109

cast<NamedDecl>(

static_cast<

decl_type*

>

(

this

))->isLinkageValid());

5134 return "$ompvariant"

;

5140 bool

IncludeLocallyStreaming);

Provides definitions for the various language-specific address spaces.

Defines the Diagnostic-related interfaces.

enum clang::sema::@1704::IndirectLocalPathEntry::EntryKind Kind

Defines the clang::IdentifierInfo, clang::IdentifierTable, and clang::Selector interfaces.

Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.

Defines an enumeration for C++ overloaded operators.

Implements a partial diagnostic that can be emitted anwyhere in a DiagnosticBuilder stream.

Defines the clang::SourceLocation class and associated facilities.

Defines various enumerations that describe declaration and type specifiers.

C Language Family Type Representation.

Defines the clang::Visibility enumeration and various utility functions.

void setValue(const ASTContext &C, const llvm::APInt &Val)

llvm::APInt getValue() const

APValue - This class implements a discriminated union of [uninitialized] [APSInt] [APFloat],...

Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...

Reads an AST files chain containing the contents of a translation unit.

A class which contains all the information about a particular captured value.

bool isNested() const

Whether this is a nested capture, i.e.

void setCopyExpr(Expr *e)

Expr * getCopyExpr() const

bool isByRef() const

Whether this is a "by ref" capture, i.e.

Capture(VarDecl *variable, bool byRef, bool nested, Expr *copy)

bool isNonEscapingByref() const

VarDecl * getVariable() const

The variable being captured.

bool isEscapingByref() const

Represents a block literal declaration, which is like an unnamed FunctionDecl.

ParmVarDecl * getParamDecl(unsigned i)

static bool classofKind(Kind K)

CompoundStmt * getCompoundBody() const

static bool classof(const Decl *D)

unsigned getNumParams() const

unsigned getNumCaptures() const

Returns the number of captured variables.

void setParams(ArrayRef< ParmVarDecl * > NewParamInfo)

capture_const_iterator capture_begin() const

bool canAvoidCopyToHeap() const

void setDoesNotEscape(bool B=true)

param_iterator param_end()

capture_const_iterator capture_end() const

ArrayRef< Capture >::const_iterator capture_const_iterator

unsigned getBlockManglingNumber() const

param_const_iterator param_end() const

MutableArrayRef< ParmVarDecl * >::iterator param_iterator

size_t param_size() const

void setCapturesCXXThis(bool B=true)

void setSignatureAsWritten(TypeSourceInfo *Sig)

void setBlockMangling(unsigned Number, Decl *Ctx)

MutableArrayRef< ParmVarDecl * > parameters()

void setCanAvoidCopyToHeap(bool B=true)

param_iterator param_begin()

void setIsConversionFromLambda(bool val=true)

Stmt * getBody() const override

getBody - If this Decl represents a declaration for a body of code, such as a function or method defi...

static DeclContext * castToDeclContext(const BlockDecl *D)

void setBlockMissingReturnType(bool val=true)

FunctionEffectsRef getFunctionEffects() const

ArrayRef< Capture > captures() const

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

static BlockDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

void setIsVariadic(bool value)

bool blockMissingReturnType() const

SourceLocation getCaretLocation() const

bool capturesCXXThis() const

bool capturesVariable(const VarDecl *var) const

bool doesNotEscape() const

bool hasCaptures() const

True if this block (or its nested blocks) captures anything of local storage from its enclosing scope...

Decl * getBlockManglingContextDecl() const

ArrayRef< ParmVarDecl * >::const_iterator param_const_iterator

static BlockDecl * castFromDeclContext(const DeclContext *DC)

const ParmVarDecl * getParamDecl(unsigned i) const

void setBody(CompoundStmt *B)

param_const_iterator param_begin() const

bool isConversionFromLambda() const

ArrayRef< ParmVarDecl * > parameters() const

void setCaptures(ASTContext &Context, ArrayRef< Capture > Captures, bool CapturesCXXThis)

TypeSourceInfo * getSignatureAsWritten() const

Represents the body of a CapturedStmt, and serves as its DeclContext.

unsigned getNumParams() const

static bool classof(const Decl *D)

ImplicitParamDecl *const * param_iterator

ImplicitParamDecl * getContextParam() const

Retrieve the parameter containing captured variables.

ArrayRef< ImplicitParamDecl * > parameters() const

static DeclContext * castToDeclContext(const CapturedDecl *D)

size_t numTrailingObjects(OverloadToken< ImplicitParamDecl >)

static CapturedDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID, unsigned NumParams)

unsigned getContextParamPosition() const

static CapturedDecl * castFromDeclContext(const DeclContext *DC)

static bool classofKind(Kind K)

void setContextParam(unsigned i, ImplicitParamDecl *P)

void setNothrow(bool Nothrow=true)

void setParam(unsigned i, ImplicitParamDecl *P)

param_iterator param_end() const

Retrieve an iterator one past the last parameter decl.

MutableArrayRef< ImplicitParamDecl * > parameters()

param_iterator param_begin() const

Retrieve an iterator pointing to the first parameter decl.

llvm::iterator_range< param_iterator > param_range

Stmt * getBody() const override

getBody - If this Decl represents a declaration for a body of code, such as a function or method defi...

ImplicitParamDecl * getParam(unsigned i) const

CharUnits - This is an opaque type for sizes expressed in character units.

CompoundStmt - This represents a group of statements like { stmt stmt }.

decl_iterator - Iterates through the declarations stored within this context.

specific_decl_iterator - Iterates over a subrange of declarations stored in a DeclContext,...

DeclContext - This is used only as base class of specific decl types that can act as declaration cont...

DeclContext * getParent()

getParent - Returns the containing DeclContext.

FunctionDeclBitfields FunctionDeclBits

TagDeclBitfields TagDeclBits

bool isDependentContext() const

Determines whether this context is dependent on a template parameter.

EnumDeclBitfields EnumDeclBits

lookup_result lookup(DeclarationName Name) const

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

BlockDeclBitfields BlockDeclBits

DeclContext * getRedeclContext()

getRedeclContext - Retrieve the context in which an entity conflicts with other entities of the same ...

RecordDeclBitfields RecordDeclBits

NamespaceDeclBitfields NamespaceDeclBits

bool isFunctionOrMethod() const

Decl::Kind getDeclKind() const

DeclContext * getNonTransparentContext()

decl_iterator decls_begin() const

Decl - This represents one declaration (or definition), e.g.

Decl * getPreviousDecl()

Retrieve the previous declaration that declares the same entity as this declaration,...

Decl * getMostRecentDecl()

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

SourceLocation getEndLoc() const LLVM_READONLY

bool isModulePrivate() const

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

ASTContext & getASTContext() const LLVM_READONLY

bool hasCachedLinkage() const

Kind

Lists the kind of concrete classes of Decl.

ObjCDeclQualifier

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

bool hasDefiningAttr() const

Return true if this declaration has an attribute which acts as definition of the entity,...

SourceLocation getLocation() const

@ IDNS_Ordinary

Ordinary names.

@ IDNS_Type

Types, declared with 'struct foo', typedefs, etc.

@ IDNS_Tag

Tags, declared with 'struct foo;' and referenced with 'struct foo'.

void setImplicit(bool I=true)

DeclContext * getDeclContext()

void setModulePrivate()

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

void setDeclContext(DeclContext *DC)

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

Module * getOwningModuleForLinkage() const

Get the module that owns this declaration for linkage purposes.

DeclContext * getLexicalDeclContext()

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

DeclarationNameLoc - Additional source/type location info for a declaration name.

The name of a declaration.

Represents a ValueDecl that came out of a declarator.

NestedNameSpecifier * getQualifier() const

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

SourceLocation getTypeSpecEndLoc() const

SourceLocation getInnerLocStart() const

Return start of source range ignoring outer template declarations.

TemplateParameterList * getTemplateParameterList(unsigned index) const

static bool classofKind(Kind K)

void setInnerLocStart(SourceLocation L)

SourceLocation getOuterLocStart() const

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

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

SourceLocation getTypeSpecStartLoc() const

SourceLocation getBeginLoc() const LLVM_READONLY

unsigned getNumTemplateParameterLists() const

void setTypeSourceInfo(TypeSourceInfo *TI)

DeclaratorDecl(Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N, QualType T, TypeSourceInfo *TInfo, SourceLocation StartL)

void setQualifierInfo(NestedNameSpecifierLoc QualifierLoc)

void setTrailingRequiresClause(Expr *TrailingRequiresClause)

NestedNameSpecifierLoc getQualifierLoc() const

Retrieve the nested-name-specifier (with source-location information) that qualifies the name of this...

Expr * getTrailingRequiresClause()

Get the constraint-expression introduced by the trailing requires-clause in the function/member decla...

static bool classof(const Decl *D)

const Expr * getTrailingRequiresClause() const

TypeSourceInfo * getTypeSourceInfo() const

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

Provides information about a dependent function-template specialization declaration.

@ ak_nameddecl

NamedDecl *.

Represents an empty-declaration.

static EmptyDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

static bool classof(const Decl *D)

static bool classofKind(Kind K)

An instance of this object exists for each enum constant that is defined.

static EnumConstantDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

static bool classofKind(Kind K)

const EnumConstantDecl * getCanonicalDecl() const

void setInitExpr(Expr *E)

void setInitVal(const ASTContext &C, const llvm::APSInt &V)

llvm::APSInt getInitVal() const

EnumConstantDecl * getCanonicalDecl() override

Retrieves the canonical declaration of this enumerator.

static bool classof(const Decl *D)

const Expr * getInitExpr() const

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

const EnumDecl * getMostRecentDecl() const

MemberSpecializationInfo * getMemberSpecializationInfo() const

If this enumeration is an instantiation of a member enumeration of a class template specialization,...

enumerator_range enumerators() const

void setFixed(bool Fixed=true)

True if this is an Objective-C, C++11, or Microsoft-style enumeration with a fixed underlying type.

bool isScoped() const

Returns true if this is a C++11 scoped enumeration.

unsigned getNumNegativeBits() const

Returns the width in bits required to store all the negative enumerators of this enum.

bool isScopedUsingClassTag() const

Returns true if this is a C++11 scoped enumeration.

void setIntegerType(QualType T)

Set the underlying integer type.

void setIntegerTypeSourceInfo(TypeSourceInfo *TInfo)

Set the underlying integer type source info.

enumerator_iterator enumerator_begin() const

bool isComplete() const

Returns true if this can be considered a complete type.

void setInstantiationOfMemberEnum(EnumDecl *ED, TemplateSpecializationKind TSK)

Specify that this enumeration is an instantiation of the member enumeration ED.

const EnumDecl * getCanonicalDecl() const

void setTemplateSpecializationKind(TemplateSpecializationKind TSK, SourceLocation PointOfInstantiation=SourceLocation())

For an enumeration member that was instantiated from a member enumeration of a templated class,...

TypeSourceInfo * getIntegerTypeSourceInfo() const

Return the type source info for the underlying integer type, if no type source info exists,...

static EnumDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

bool isClosedFlag() const

Returns true if this enum is annotated with flag_enum and isn't annotated with enum_extensibility(ope...

EnumDecl * getMostRecentDecl()

void setScoped(bool Scoped=true)

True if this tag declaration is a scoped enumeration.

bool isFixed() const

Returns true if this is an Objective-C, C++11, or Microsoft-style enumeration with a fixed underlying...

SourceRange getIntegerTypeRange() const LLVM_READONLY

Retrieve the source range that covers the underlying type if specified.

void setPromotionType(QualType T)

Set the promotion type.

EnumDecl * getPreviousDecl()

SourceRange getSourceRange() const override LLVM_READONLY

Overrides to provide correct range when there's an enum-base specifier with forward declarations.

static bool classofKind(Kind K)

llvm::iterator_range< specific_decl_iterator< EnumConstantDecl > > enumerator_range

static bool classof(const Decl *D)

EnumDecl * getCanonicalDecl() override

Retrieves the "canonical" declaration of the given declaration.

QualType getIntegerType() const

Return the integer type this enum decl corresponds to.

EnumDecl * getInstantiatedFromMemberEnum() const

Returns the enumeration (declared within the template) from which this enumeration type was instantia...

EnumDecl * getDefinition() const

unsigned getNumPositiveBits() const

Returns the width in bits required to store all the non-negative enumerators of this enum.

const EnumDecl * getPreviousDecl() const

specific_decl_iterator< EnumConstantDecl > enumerator_iterator

TemplateSpecializationKind getTemplateSpecializationKind() const

If this enumeration is a member of a specialization of a templated class, determine what kind of temp...

void setScopedUsingClassTag(bool ScopedUCT=true)

If this tag declaration is a scoped enum, then this is true if the scoped enum was declared using the...

bool isClosed() const

Returns true if this enum is either annotated with enum_extensibility(closed) or isn't annotated with...

QualType getPromotionType() const

Return the integer type that enumerators should promote to.

EnumDecl * getTemplateInstantiationPattern() const

Retrieve the enum definition from which this enumeration could be instantiated, if it is an instantia...

bool isClosedNonFlag() const

Returns true if this enum is annotated with neither flag_enum nor enum_extensibility(open).

enumerator_iterator enumerator_end() const

void getValueRange(llvm::APInt &Max, llvm::APInt &Min) const

Calculates the [Min,Max) values the enum can store based on the NumPositiveBits and NumNegativeBits.

Represents a standard C++ module export declaration.

static bool classof(const Decl *D)

SourceLocation getRBraceLoc() const

SourceLocation getEndLoc() const LLVM_READONLY

SourceLocation getExportLoc() const

static bool classofKind(Kind K)

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

void setRBraceLoc(SourceLocation L)

static DeclContext * castToDeclContext(const ExportDecl *D)

static ExportDecl * castFromDeclContext(const DeclContext *DC)

static ExportDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

This represents one expression.

Declaration context for names declared as extern "C" in C++.

static DeclContext * castToDeclContext(const ExternCContextDecl *D)

static bool classof(const Decl *D)

static bool classofKind(Kind K)

static ExternCContextDecl * castFromDeclContext(const DeclContext *DC)

Represents a member of a struct/union/class.

bool isMutable() const

Determines whether this field is mutable (C++ only).

Expr * getInClassInitializer() const

Get the C++11 default member initializer for this member, or null if one has not been set.

bool isBitField() const

Determines whether this field is a bitfield.

bool hasInClassInitializer() const

Determine whether this member has a C++11 default member initializer.

FieldDecl(Kind DK, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, const IdentifierInfo *Id, QualType T, TypeSourceInfo *TInfo, Expr *BW, bool Mutable, InClassInitStyle InitStyle)

unsigned getBitWidthValue() const

Computes the bit width of this field, if this is a bit field.

bool isAnonymousStructOrUnion() const

Determines whether this field is a representative for an anonymous struct or union.

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

void setBitWidth(Expr *Width)

Set the bit-field width for this member.

void removeBitWidth()

Remove the bit-field width from this member.

InClassInitStyle getInClassInitStyle() const

Get the kind of (C++11) default member initializer that this field has.

static FieldDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

void removeInClassInitializer()

Remove the C++11 in-class initializer from this member.

void setInClassInitializer(Expr *NewInit)

Set the C++11 in-class initializer for this member.

unsigned getFieldIndex() const

Returns the index of this field within its record, as appropriate for passing to ASTRecordLayout::get...

const RecordDecl * getParent() const

Returns the parent of this field declaration, which is the struct in which this field is defined.

bool isZeroSize(const ASTContext &Ctx) const

Determine if this field is a subobject of zero size, that is, either a zero-length bit-field or a fie...

InitAndBitWidthStorage * InitAndBitWidth

FieldDecl * getCanonicalDecl() override

Retrieves the canonical declaration of this field.

static bool classofKind(Kind K)

bool hasCapturedVLAType() const

Determine whether this member captures the variable length array type.

bool isUnnamedBitField() const

Determines whether this is an unnamed bitfield.

bool isZeroLengthBitField() const

Is this a zero-length bit-field? Such bit-fields aren't really bit-fields at all and instead act as a...

Expr * getBitWidth() const

Returns the expression that represents the bit width, if this field is a bit field.

void printName(raw_ostream &OS, const PrintingPolicy &Policy) const override

Pretty-print the unqualified name of this declaration.

const FieldDecl * getCanonicalDecl() const

const FieldDecl * findCountedByField() const

Find the FieldDecl specified in a FAM's "counted_by" attribute.

const VariableArrayType * getCapturedVLAType() const

Get the captured variable length array type.

bool isPotentiallyOverlapping() const

Determine if this field is of potentially-overlapping class type, that is, subobject with the [[no_un...

void setCapturedVLAType(const VariableArrayType *VLAType)

Set the captured variable length array type for this field.

bool hasNonNullInClassInitializer() const

Determine whether getInClassInitializer() would return a non-null pointer without deserializing the i...

const VariableArrayType * CapturedVLAType

static bool classof(const Decl *D)

void setRParenLoc(SourceLocation L)

SourceLocation getAsmLoc() const

void setAsmString(StringLiteral *Asm)

static bool classofKind(Kind K)

const StringLiteral * getAsmString() const

SourceLocation getRParenLoc() const

static bool classof(const Decl *D)

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

StringLiteral * getAsmString()

static FileScopeAsmDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

Stashed information about a defaulted/deleted function body.

StringLiteral * getDeletedMessage() const

void setDeletedMessage(StringLiteral *Message)

ArrayRef< DeclAccessPair > getUnqualifiedLookups() const

Get the unqualified lookup results that should be used in this defaulted function definition.

Represents a function declaration or definition.

unsigned getMemoryFunctionKind() const

Identify a memory copying or setting function.

void setInstantiationIsPending(bool IC)

State that the instantiation of this function is pending.

bool isTargetClonesMultiVersion() const

True if this function is a multiversioned dispatch function as a part of the target-clones functional...

bool isMultiVersion() const

True if this function is considered a multiversioned function.

const ParmVarDecl * getParamDecl(unsigned i) const

ExceptionSpecificationType getExceptionSpecType() const

Gets the ExceptionSpecificationType as declared.

bool isTrivialForCall() const

bool hasTrivialBody() const

Returns whether the function has a trivial body that does not require any specific codegen.

ConstexprSpecKind getConstexprKind() const

unsigned getMinRequiredArguments() const

Returns the minimum number of arguments needed to call this function.

bool isFunctionTemplateSpecialization() const

Determine whether this function is a function template specialization.

void setPreviousDeclaration(FunctionDecl *PrevDecl)

void setDescribedFunctionTemplate(FunctionTemplateDecl *Template)

FunctionTemplateDecl * getDescribedFunctionTemplate() const

Retrieves the function template that is described by this function declaration.

void setIsPureVirtual(bool P=true)

const FunctionDecl * getDefinition() const

bool isThisDeclarationADefinition() const

Returns whether this specific declaration of the function is also a definition that does not contain ...

bool isImmediateFunction() const

void setDefaultedOrDeletedInfo(DefaultedOrDeletedFunctionInfo *Info)

void setFriendConstraintRefersToEnclosingTemplate(bool V=true)

SourceLocation getEllipsisLoc() const

Returns the location of the ellipsis of a variadic function.

static bool classofKind(Kind K)

void setHasSkippedBody(bool Skipped=true)

SourceRange getReturnTypeSourceRange() const

Attempt to compute an informative source range covering the function return type.

bool isDestroyingOperatorDelete() const

Determine whether this is a destroying operator delete.

static FunctionDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

unsigned getBuiltinID(bool ConsiderWrapperFunctions=false) const

Returns a value indicating whether this function corresponds to a builtin function.

void setUsesSEHTry(bool UST)

param_iterator param_end()

StringLiteral * getDeletedMessage() const

Get the message that indicates why this function was deleted.

SourceLocation getPointOfInstantiation() const

Retrieve the (first) point of instantiation of a function template specialization or a member of a cl...

bool isMemberLikeConstrainedFriend() const

Determine whether a function is a friend function that cannot be redeclared outside of its class,...

bool hasCXXExplicitFunctionObjectParameter() const

bool isInlined() const

Determine whether this function should be inlined, because it is either marked "inline" or "constexpr...

void setIsMultiVersion(bool V=true)

Sets the multiversion state for this declaration and all of its redeclarations.

bool UsesFPIntrin() const

Determine whether the function was declared in source context that requires constrained FP intrinsics...

SourceLocation getDefaultLoc() const

void setInstantiationOfMemberFunction(FunctionDecl *FD, TemplateSpecializationKind TSK)

Specify that this record is an instantiation of the member function FD.

bool usesSEHTry() const

Indicates the function uses __try.

void setHasWrittenPrototype(bool P=true)

State that this function has a written prototype.

bool isNoReturn() const

Determines whether this function is known to be 'noreturn', through an attribute on its declaration o...

QualType getReturnType() const

ArrayRef< ParmVarDecl * > parameters() const

bool isCPUSpecificMultiVersion() const

True if this function is a multiversioned processor specific function as a part of the cpu_specific/c...

FunctionDecl * getTemplateInstantiationPattern(bool ForDefinition=true) const

Retrieve the function declaration from which this function could be instantiated, if it is an instant...

bool isMSExternInline() const

The combination of the extern and inline keywords under MSVC forces the function to be required.

bool isExplicitlyDefaulted() const

Whether this function is explicitly defaulted.

bool isTrivial() const

Whether this function is "trivial" in some specialized C++ senses.

bool instantiationIsPending() const

Whether the instantiation of this function is pending.

unsigned getMinRequiredExplicitArguments() const

Returns the minimum number of non-object arguments needed to call this function.

const FunctionDecl * getCanonicalDecl() const

bool BodyContainsImmediateEscalatingExpressions() const

LanguageLinkage getLanguageLinkage() const

Compute the language linkage.

FunctionTemplateDecl * getPrimaryTemplate() const

Retrieve the primary template that this function template specialization either specializes or was in...

MutableArrayRef< ParmVarDecl * >::iterator param_iterator

FunctionDecl * getNextRedeclarationImpl() override

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

bool hasWrittenPrototype() const

Whether this function has a written prototype.

void setWillHaveBody(bool V=true)

void setDeclarationNameLoc(DeclarationNameLoc L)

MemberSpecializationInfo * getMemberSpecializationInfo() const

If this function is an instantiation of a member function of a class template specialization,...

bool hasPrototype() const

Whether this function has a prototype, either because one was explicitly written or because it was "i...

FunctionTemplateSpecializationInfo * getTemplateSpecializationInfo() const

If this function is actually a function template specialization, retrieve information about this func...

void setUsesFPIntrin(bool I)

Set whether the function was declared in source context that requires constrained FP intrinsics.

void setDefaultLoc(SourceLocation NewLoc)

FunctionDecl * getCanonicalDecl() override

Retrieves the "canonical" declaration of the given declaration.

FunctionTypeLoc getFunctionTypeLoc() const

Find the source location information for how the type of this function was written.

MutableArrayRef< ParmVarDecl * > parameters()

param_iterator param_begin()

FunctionDecl * getPreviousDeclImpl() override

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

const ParmVarDecl * getNonObjectParameter(unsigned I) const

bool isVariadic() const

Whether this function is variadic.

bool doesThisDeclarationHaveABody() const

Returns whether this specific declaration of the function has a body.

bool isConstexprSpecified() const

DependentFunctionTemplateSpecializationInfo * getDependentSpecializationInfo() const

bool isDeleted() const

Whether this function has been deleted.

void setBodyContainsImmediateEscalatingExpressions(bool Set)

const TemplateArgumentList * getTemplateSpecializationArgs() const

Retrieve the template arguments used to produce this function template specialization from the primar...

FunctionEffectsRef getFunctionEffects() const

static DeclContext * castToDeclContext(const FunctionDecl *D)

SourceRange getExceptionSpecSourceRange() const

Attempt to compute an informative source range covering the function exception specification,...

bool hasBody() const override

Returns true if this Decl represents a declaration for a body of code, such as a function or method d...

bool isMSVCRTEntryPoint() const

Determines whether this function is a MSVCRT user defined entry point.

unsigned getODRHash()

Returns ODRHash of the function.

TemplateSpecializationKind getTemplateSpecializationKindForInstantiation() const

Determine the kind of template specialization this function represents for the purpose of template in...

ArrayRef< ParmVarDecl * >::const_iterator param_const_iterator

bool isTemplateInstantiation() const

Determines if the given function was instantiated from a function template.

void setInlineSpecified(bool I)

Set whether the "inline" keyword was specified for this function.

unsigned getNumNonObjectParams() const

TemplatedKind

The kind of templated function a FunctionDecl can be.

@ TK_MemberSpecialization

@ TK_DependentNonTemplate

@ TK_FunctionTemplateSpecialization

@ TK_DependentFunctionTemplateSpecialization

redeclarable_base::redecl_range redecl_range

StorageClass getStorageClass() const

Returns the storage class as written in the source.

FunctionDecl * getMostRecentDeclImpl() override

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

redeclarable_base::redecl_iterator redecl_iterator

bool isOutOfLine() const override

Determine whether this is or was instantiated from an out-of-line definition of a member function.

bool isInlineBuiltinDeclaration() const

Determine if this function provides an inline implementation of a builtin.

bool FriendConstraintRefersToEnclosingTemplate() const

ParmVarDecl * getParamDecl(unsigned i)

TemplatedKind getTemplatedKind() const

What kind of templated function this is.

void setInstantiatedFromDecl(FunctionDecl *FD)

Specify that this function declaration was instantiated from a FunctionDecl FD.

bool isConstexpr() const

Whether this is a (C++11) constexpr function or constexpr constructor.

bool isDeletedAsWritten() const

bool isReservedGlobalPlacementOperator() const

Determines whether this operator new or delete is one of the reserved global placement operators: voi...

ParmVarDecl * getNonObjectParameter(unsigned I)

void setHasInheritedPrototype(bool P=true)

State that this function inherited its prototype from a previous declaration.

void setDependentTemplateSpecialization(ASTContext &Context, const UnresolvedSetImpl &Templates, const TemplateArgumentListInfo *TemplateArgs)

Specifies that this function declaration is actually a dependent function template specialization.

bool isInExternCContext() const

Determines whether this function's context is, or is nested within, a C++ extern "C" linkage spec.

FunctionDecl(Kind DK, ASTContext &C, DeclContext *DC, SourceLocation StartLoc, const DeclarationNameInfo &NameInfo, QualType T, TypeSourceInfo *TInfo, StorageClass S, bool UsesFPIntrin, bool isInlineSpecified, ConstexprSpecKind ConstexprKind, Expr *TrailingRequiresClause=nullptr)

bool isPureVirtual() const

Whether this virtual function is pure, i.e.

bool isImplicitlyInstantiable() const

Determines whether this function is a function template specialization or a member of a class templat...

bool isExternC() const

Determines whether this function is a function with external, C linkage.

Stmt * getBody() const override

getBody - If this Decl represents a declaration for a body of code, such as a function or method defi...

bool isLateTemplateParsed() const

Whether this templated function will be late parsed.

LazyDeclStmtPtr Body

The body of the function.

bool hasImplicitReturnZero() const

Whether falling off this function implicitly returns null/zero.

bool isImmediateEscalating() const

void setVirtualAsWritten(bool V)

State that this function is marked as virtual explicitly.

bool hasSkippedBody() const

True if the function was a definition but its body was skipped.

static bool classof(const Decl *D)

void setLateTemplateParsed(bool ILT=true)

State that this templated function will be late parsed.

DefaultedOrDeletedFunctionInfo * DefaultedOrDeletedInfo

Information about a future defaulted function definition.

FunctionDecl * getDefinition()

Get the definition for this declaration.

bool isInExternCXXContext() const

Determines whether this function's context is, or is nested within, a C++ extern "C++" linkage spec.

bool isMain() const

Determines whether this function is "main", which is the entry point into an executable program.

void setImplicitlyInline(bool I=true)

Flag that this function is implicitly inline.

bool isTargetVersionMultiVersion() const

True if this function is a multiversioned dispatch function as a part of the target-version functiona...

void setTrivialForCall(bool IT)

bool isReplaceableGlobalAllocationFunction(std::optional< unsigned > *AlignmentParam=nullptr, bool *IsNothrow=nullptr) const

Determines whether this function is one of the replaceable global allocation functions: void *operato...

void setLazyBody(uint64_t Offset)

static FunctionDecl * Create(ASTContext &C, DeclContext *DC, SourceLocation StartLoc, SourceLocation NLoc, DeclarationName N, QualType T, TypeSourceInfo *TInfo, StorageClass SC, bool UsesFPIntrin=false, bool isInlineSpecified=false, bool hasWrittenPrototype=true, ConstexprSpecKind ConstexprKind=ConstexprSpecKind::Unspecified, Expr *TrailingRequiresClause=nullptr)

bool isThisDeclarationInstantiatedFromAFriendDefinition() const

Determine whether this specific declaration of the function is a friend declaration that was instanti...

void setRangeEnd(SourceLocation E)

bool isCPUDispatchMultiVersion() const

True if this function is a multiversioned dispatch function as a part of the cpu_specific/cpu_dispatc...

bool isDefaulted() const

Whether this function is defaulted.

bool isIneligibleOrNotSelected() const

void setIneligibleOrNotSelected(bool II)

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

bool isOverloadedOperator() const

Whether this function declaration represents an C++ overloaded operator, e.g., "operator+".

FunctionDecl * getInstantiatedFromDecl() const

void setTemplateSpecializationKind(TemplateSpecializationKind TSK, SourceLocation PointOfInstantiation=SourceLocation())

Determine what kind of template instantiation this function represents.

const IdentifierInfo * getLiteralIdentifier() const

getLiteralIdentifier - The literal suffix identifier this function represents, if any.

OverloadedOperatorKind getOverloadedOperator() const

getOverloadedOperator - Which C++ overloaded operator this function represents, if any.

void setConstexprKind(ConstexprSpecKind CSK)

TemplateSpecializationKind getTemplateSpecializationKind() const

Determine what kind of template instantiation this function represents.

param_const_iterator param_begin() const

bool doesDeclarationForceExternallyVisibleDefinition() const

For a function declaration in C or C++, determine whether this declaration causes the definition to b...

void setDefaulted(bool D=true)

bool isTargetMultiVersion() const

True if this function is a multiversioned dispatch function as a part of the target functionality.

bool isUserProvided() const

True if this method is user-declared and was not deleted or defaulted on its first declaration.

QualType getDeclaredReturnType() const

Get the declared return type, which may differ from the actual return type if the return type is dedu...

void setStorageClass(StorageClass SClass)

Sets the storage class as written in the source.

bool isVirtualAsWritten() const

Whether this function is marked as virtual explicitly.

bool isGlobal() const

Determines whether this is a global function.

bool hasOneParamOrDefaultArgs() const

Determine whether this function has a single parameter, or multiple parameters where all but the firs...

void setDeletedAsWritten(bool D=true, StringLiteral *Message=nullptr)

void setFunctionTemplateSpecialization(FunctionTemplateDecl *Template, TemplateArgumentList *TemplateArgs, void *InsertPos, TemplateSpecializationKind TSK=TSK_ImplicitInstantiation, TemplateArgumentListInfo *TemplateArgsAsWritten=nullptr, SourceLocation PointOfInstantiation=SourceLocation())

Specify that this function declaration is actually a function template specialization.

void getAssociatedConstraints(SmallVectorImpl< const Expr * > &AC) const

Get the associated-constraints of this function declaration.

void setExplicitlyDefaulted(bool ED=true)

State that this function is explicitly defaulted.

param_const_iterator param_end() const

bool hasInheritedPrototype() const

Whether this function inherited its prototype from a previous declaration.

bool isTargetMultiVersionDefault() const

True if this function is the default version of a multiversioned dispatch function as a part of the t...

FunctionDecl * getInstantiatedFromMemberFunction() const

If this function is an instantiation of a member function of a class template specialization,...

bool isInlineDefinitionExternallyVisible() const

For an inline function definition in C, or for a gnu_inline function in C++, determine whether the de...

unsigned getNumParams() const

Return the number of parameters this function must have based on its FunctionType.

size_t param_size() const

DeclarationNameInfo getNameInfo() const

SourceRange getParametersSourceRange() const

Attempt to compute an informative source range covering the function parameters, including the ellips...

static FunctionDecl * castFromDeclContext(const DeclContext *DC)

void setHasImplicitReturnZero(bool IRZ)

State that falling off this function implicitly returns null/zero.

bool isInlineSpecified() const

Determine whether the "inline" keyword was specified for this function.

MultiVersionKind getMultiVersionKind() const

Gets the kind of multiversioning attribute this declaration has.

DefaultedOrDeletedFunctionInfo * getDefalutedOrDeletedInfo() const

void getNameForDiagnostic(raw_ostream &OS, const PrintingPolicy &Policy, bool Qualified) const override

Appends a human-readable name for this declaration into the given stream.

void setParams(ArrayRef< ParmVarDecl * > NewParamInfo)

bool willHaveBody() const

True if this function will eventually have a body, once it's fully parsed.

const ASTTemplateArgumentListInfo * getTemplateSpecializationArgsAsWritten() const

Retrieve the template argument list as written in the sources, if any.

QualType getCallResultType() const

Determine the type of an expression that calls this function.

An immutable set of FunctionEffects and possibly conditions attached to them.

Represents a prototype with parameter type info, e.g.

ExceptionSpecificationType getExceptionSpecType() const

Get the kind of exception specification on this function.

SourceLocation getEllipsisLoc() const

Declaration of a template function.

Provides information about a function template specialization, which is a FunctionDecl that has been ...

Wrapper for source info for functions.

FunctionType - C99 6.7.5.3 - Function Declarators.

HLSLBufferDecl - Represent a cbuffer or tbuffer declaration.

static HLSLBufferDecl * castFromDeclContext(const DeclContext *DC)

static DeclContext * castToDeclContext(const HLSLBufferDecl *D)

SourceLocation getLBraceLoc() const

SourceLocation getLocStart() const LLVM_READONLY

SourceLocation getRBraceLoc() const

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

void setRBraceLoc(SourceLocation L)

static bool classofKind(Kind K)

static HLSLBufferDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

static bool classof(const Decl *D)

One of these records is kept for each identifier that is lexed.

StringRef getName() const

Return the actual identifier string.

static bool classofKind(Kind K)

ImplicitParamDecl(ASTContext &C, DeclContext *DC, SourceLocation IdLoc, const IdentifierInfo *Id, QualType Type, ImplicitParamKind ParamKind)

ImplicitParamKind getParameterKind() const

Returns the implicit parameter kind.

static bool classof(const Decl *D)

ImplicitParamDecl(ASTContext &C, QualType Type, ImplicitParamKind ParamKind)

static ImplicitParamDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

Describes a module import declaration, which makes the contents of the named module visible in the cu...

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

static ImportDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID, unsigned NumLocations)

Create a new, deserialized module import declaration.

static bool classof(const Decl *D)

ArrayRef< SourceLocation > getIdentifierLocs() const

Retrieves the locations of each of the identifiers that make up the complete module name in the impor...

Module * getImportedModule() const

Retrieve the module that was imported by the import declaration.

static bool classofKind(Kind K)

static ImportDecl * CreateImplicit(ASTContext &C, DeclContext *DC, SourceLocation StartLoc, Module *Imported, SourceLocation EndLoc)

Create a new module import declaration for an implicitly-generated import.

Represents a field injected from an anonymous union/struct into the parent scope.

const IndirectFieldDecl * getCanonicalDecl() const

static bool classofKind(Kind K)

static bool classof(const Decl *D)

FieldDecl * getAnonField() const

static IndirectFieldDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

unsigned getChainingSize() const

IndirectFieldDecl * getCanonicalDecl() override

Retrieves the "canonical" declaration of the given declaration.

chain_iterator chain_end() const

chain_iterator chain_begin() const

ArrayRef< NamedDecl * > chain() const

VarDecl * getVarDecl() const

ArrayRef< NamedDecl * >::const_iterator chain_iterator

Represents the declaration of a label.

static bool classofKind(Kind K)

void setMSAsmLabel(StringRef Name)

bool isResolvedMSAsmLabel() const

static bool classof(const Decl *D)

void setLocStart(SourceLocation L)

LabelStmt * getStmt() const

StringRef getMSAsmLabel() const

void setStmt(LabelStmt *T)

void setMSAsmLabelResolved()

static LabelDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

bool isMSAsmLabel() const

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

LabelStmt - Represents a label, which has a substatement.

Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...

Visibility getVisibility() const

Provides information a specialization of a member of a class template, which may be a member function...

Provides common interface for the Decls that cannot be redeclared, but can be merged if the same decl...

FieldDecl * getFirstDecl()

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

Describes a module or submodule.

This represents a decl that may have a name.

NamedDecl * getUnderlyingDecl()

Looks through UsingDecls and ObjCCompatibleAliasDecls for the underlying named decl.

ExplicitVisibilityKind

Kinds of explicit visibility.

@ VisibilityForValue

Do an LV computation for, ultimately, a non-type declaration.

@ VisibilityForType

Do an LV computation for, ultimately, a type.

Linkage getLinkageInternal() const

Determine what kind of linkage this entity has.

IdentifierInfo * getIdentifier() const

Get the identifier that names this declaration, if there is one.

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

LinkageInfo getLinkageAndVisibility() const

Determines the linkage and visibility of this entity.

bool isLinkageValid() const

True if the computed linkage is valid.

StringRef getName() const

Get the name of identifier for this declaration as a StringRef.

bool isPlaceholderVar(const LangOptions &LangOpts) const

Visibility getVisibility() const

Determines the visibility of this entity.

bool hasLinkageBeenComputed() const

True if something has required us to compute the linkage of this declaration.

bool hasExternalFormalLinkage() const

True if this decl has external linkage.

static bool classof(const Decl *D)

DeclarationName getDeclName() const

Get the actual, stored name of the declaration, which may be a special name.

std::string getQualifiedNameAsString() const

std::string getNameAsString() const

Get a human-readable name for the declaration, even if it is one of the special kinds of names (C++ c...

std::optional< Visibility > getExplicitVisibility(ExplicitVisibilityKind kind) const

If visibility was explicitly specified for this declaration, return that visibility.

NamedDecl * getMostRecentDecl()

virtual void getNameForDiagnostic(raw_ostream &OS, const PrintingPolicy &Policy, bool Qualified) const

Appends a human-readable name for this declaration into the given stream.

bool declarationReplaces(const NamedDecl *OldD, bool IsKnownNewer=true) const

Determine whether this declaration, if known to be well-formed within its context,...

ObjCStringFormatFamily getObjCFStringFormattingFamily() const

Linkage getFormalLinkage() const

Get the linkage from a semantic point of view.

void printQualifiedName(raw_ostream &OS) const

Returns a human-readable qualified name for this declaration, like A::B::i, for i being member of nam...

static bool classofKind(Kind K)

virtual void printName(raw_ostream &OS, const PrintingPolicy &Policy) const

Pretty-print the unqualified name of this declaration.

bool isCXXInstanceMember() const

Determine whether the given declaration is an instance member of a C++ class.

bool hasLinkage() const

Determine whether this declaration has linkage.

const NamedDecl * getMostRecentDecl() const

bool isExternallyVisible() const

void setDeclName(DeclarationName N)

Set the name of this declaration.

ReservedIdentifierStatus isReserved(const LangOptions &LangOpts) const

Determine if the declaration obeys the reserved identifier rules of the given language.

bool isCXXClassMember() const

Determine whether this declaration is a C++ class member.

const NamedDecl * getUnderlyingDecl() const

void printNestedNameSpecifier(raw_ostream &OS) const

Print only the nested name specifier part of a fully-qualified name, including the '::' at the end.

bool isExternallyDeclarable() const

Determine whether this declaration can be redeclared in a different translation unit.

Represent a C++ namespace.

NamespaceDecl * getCanonicalDecl() override

Retrieves the canonical declaration of this namespace.

redeclarable_base::redecl_iterator redecl_iterator

SourceLocation getRBraceLoc() const

const NamespaceDecl * getCanonicalDecl() const

void setAnonymousNamespace(NamespaceDecl *D)

static bool classofKind(Kind K)

void setNested(bool Nested)

Set whether this is a nested namespace declaration.

static DeclContext * castToDeclContext(const NamespaceDecl *D)

void setLocStart(SourceLocation L)

SourceLocation getBeginLoc() const LLVM_READONLY

bool isAnonymousNamespace() const

Returns true if this is an anonymous namespace declaration.

bool isInline() const

Returns true if this is an inline namespace declaration.

static bool classof(const Decl *D)

static NamespaceDecl * castFromDeclContext(const DeclContext *DC)

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

void setInline(bool Inline)

Set whether this is an inline namespace declaration.

NamespaceDecl * getAnonymousNamespace() const

Retrieve the anonymous namespace that inhabits this namespace, if any.

bool isNested() const

Returns true if this is a nested namespace declaration.

static NamespaceDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

void setRBraceLoc(SourceLocation L)

redeclarable_base::redecl_range redecl_range

bool isRedundantInlineQualifierFor(DeclarationName Name) const

Returns true if the inline qualifier for Name is redundant.

A C++ nested-name-specifier augmented with source location information.

NestedNameSpecifier * getNestedNameSpecifier() const

Retrieve the nested-name-specifier to which this instance refers.

Represents a C++ nested name specifier, such as "\::std::vector<int>::".

Represents a partial function definition.

ImplicitParamDecl * getParam(unsigned i) const

const ImplicitParamDecl *const * parameter_const_iterator

parameter_const_range parameters() const

static bool classof(const Decl *D)

static OutlinedFunctionDecl * castFromDeclContext(const DeclContext *DC)

static DeclContext * castToDeclContext(const OutlinedFunctionDecl *D)

void setNothrow(bool Nothrow=true)

parameter_const_iterator param_end() const

static bool classofKind(Kind K)

llvm::iterator_range< parameter_const_iterator > parameter_const_range

static OutlinedFunctionDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID, unsigned NumParams)

Stmt * getBody() const override

getBody - If this Decl represents a declaration for a body of code, such as a function or method defi...

void setParam(unsigned i, ImplicitParamDecl *P)

parameter_const_iterator param_begin() const

unsigned getNumParams() const

Represents a parameter to a function.

bool isKNRPromoted() const

True if the value passed to this parameter must undergo K&R-style default argument promotion:

unsigned getFunctionScopeIndex() const

Returns the index of this parameter in its prototype or method scope.

void setObjCDeclQualifier(ObjCDeclQualifier QTVal)

static bool classofKind(Kind K)

void setDefaultArg(Expr *defarg)

static ParmVarDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

SourceLocation getExplicitObjectParamThisLoc() const

void setUnparsedDefaultArg()

Specify that this parameter has an unparsed default argument.

ParmVarDecl(Kind DK, ASTContext &C, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, const IdentifierInfo *Id, QualType T, TypeSourceInfo *TInfo, StorageClass S, Expr *DefArg)

bool hasUnparsedDefaultArg() const

Determines whether this parameter has a default argument that has not yet been parsed.

SourceRange getDefaultArgRange() const

Retrieve the source range that covers the entire default argument.

void setUninstantiatedDefaultArg(Expr *arg)

bool isObjCMethodParameter() const

ObjCDeclQualifier getObjCDeclQualifier() const

static constexpr unsigned getMaxFunctionScopeDepth()

const Expr * getDefaultArg() const

void setScopeInfo(unsigned scopeDepth, unsigned parameterIndex)

bool hasUninstantiatedDefaultArg() const

void setObjCMethodScopeInfo(unsigned parameterIndex)

bool isDestroyedInCallee() const

Determines whether this parameter is destroyed in the callee function.

bool hasInheritedDefaultArg() const

bool isExplicitObjectParameter() const

void setKNRPromoted(bool promoted)

QualType getOriginalType() const

const Expr * getUninstantiatedDefaultArg() const

void setExplicitObjectParameterLoc(SourceLocation Loc)

Expr * getUninstantiatedDefaultArg()

bool hasDefaultArg() const

Determines whether this parameter has a default argument, either parsed or not.

unsigned getFunctionScopeDepth() const

void setHasInheritedDefaultArg(bool I=true)

void setOwningFunction(DeclContext *FD)

Sets the function declaration that owns this ParmVarDecl.

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

static bool classof(const Decl *D)

Represents a #pragma detect_mismatch line.

StringRef getName() const

static PragmaDetectMismatchDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID, unsigned NameValueSize)

StringRef getValue() const

static bool classofKind(Kind K)

static bool classof(const Decl *D)

A (possibly-)qualified type.

Represents a struct/union/class.

bool hasLoadedFieldsFromExternalStorage() const

unsigned getODRHash()

Get precomputed ODRHash or add a new one.

bool hasNonTrivialToPrimitiveDestructCUnion() const

bool isLambda() const

Determine whether this record is a class describing a lambda function object.

bool hasNonTrivialToPrimitiveCopyCUnion() const

bool isMsStruct(const ASTContext &C) const

Get whether or not this is an ms_struct which can be turned on with an attribute, pragma,...

void setAnonymousStructOrUnion(bool Anon)

bool canPassInRegisters() const

Determine whether this class can be passed in registers.

RecordArgPassingKind getArgPassingRestrictions() const

bool hasVolatileMember() const

bool hasFlexibleArrayMember() const

bool hasNonTrivialToPrimitiveDefaultInitializeCUnion() const

const FieldDecl * findFirstNamedDataMember() const

Finds the first data member which has a name.

const RecordDecl * getMostRecentDecl() const

void setArgPassingRestrictions(RecordArgPassingKind Kind)

void setNonTrivialToPrimitiveCopy(bool V)

bool hasObjectMember() const

bool isNonTrivialToPrimitiveDestroy() const

bool isNonTrivialToPrimitiveCopy() const

bool isCapturedRecord() const

Determine whether this record is a record for captured variables in CapturedStmt construct.

void setHasNonTrivialToPrimitiveCopyCUnion(bool V)

field_iterator field_end() const

field_range fields() const

bool isRandomized() const

void setHasNonTrivialToPrimitiveDestructCUnion(bool V)

static bool classofKind(Kind K)

void setHasFlexibleArrayMember(bool V)

void setParamDestroyedInCallee(bool V)

void setNonTrivialToPrimitiveDestroy(bool V)

void setHasObjectMember(bool val)

bool isInjectedClassName() const

Determines whether this declaration represents the injected class name.

void setHasVolatileMember(bool val)

void setHasNonTrivialToPrimitiveDefaultInitializeCUnion(bool V)

void reorderDecls(const SmallVectorImpl< Decl * > &Decls)

void setIsRandomized(bool V)

bool isParamDestroyedInCallee() const

static RecordDecl * CreateDeserialized(const ASTContext &C, GlobalDeclID ID)

bool mayInsertExtraPadding(bool EmitRemark=false) const

Whether we are allowed to insert extra padding between fields.

static bool classof(const Decl *D)

RecordDecl * getMostRecentDecl()

const RecordDecl * getPreviousDecl() const

bool isOrContainsUnion() const

Returns whether this record is a union, or contains (at any nesting level) a union member.

virtual void completeDefinition()

Note that the definition of this type is now complete.

llvm::iterator_range< specific_decl_iterator< FieldDecl > > field_range

RecordDecl * getDefinition() const

Returns the RecordDecl that actually defines this struct/union/class.

bool hasUninitializedExplicitInitFields() const

void setCapturedRecord()

Mark the record as a record for captured variables in CapturedStmt construct.

specific_decl_iterator< FieldDecl > field_iterator

void setHasUninitializedExplicitInitFields(bool V)

RecordDecl * getPreviousDecl()

void setNonTrivialToPrimitiveDefaultInitialize(bool V)

bool isNonTrivialToPrimitiveDefaultInitialize() const

Functions to query basic properties of non-trivial C structs.

bool isAnonymousStructOrUnion() const

Whether this is an anonymous struct or union.

void setHasLoadedFieldsFromExternalStorage(bool val) const

field_iterator field_begin() const

Provides common interface for the Decls that can be redeclared.

TranslationUnitDecl * getFirstDecl()

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

TranslationUnitDecl * getNextRedeclaration() const

TranslationUnitDecl * getPreviousDecl()

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

redecl_iterator redecls_end() const

llvm::iterator_range< redecl_iterator > redecl_range

TranslationUnitDecl * getMostRecentDecl()

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

void setPreviousDecl(decl_type *PrevDecl)

Set the previous declaration.

bool isFirstDecl() const

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

redecl_iterator redecls_begin() const

redecl_range redecls() const

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

Encodes a location in the source.

bool isValid() const

Return true if this is a valid SourceLocation object.

A trivial tuple used to represent a source range.

Stmt - This represents one statement.

The streaming interface shared between DiagnosticBuilder and PartialDiagnostic.

void AddTaggedVal(uint64_t V, DiagnosticsEngine::ArgumentKind Kind) const

StringLiteral - This represents a string literal expression, e.g.

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

NestedNameSpecifier * getQualifier() const

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

void setTagKind(TagKind TK)

void setCompleteDefinitionRequired(bool V=true)

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

static TagDecl * castFromDeclContext(const DeclContext *DC)

SourceRange getBraceRange() const

bool isBeingDefined() const

Return true if this decl is currently being defined.

void demoteThisDefinitionToDeclaration()

Mark a definition as a declaration and maintain information it was a definition.

TagDecl * getMostRecentDeclImpl() override

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

TagDecl * getDefinition() const

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

bool isThisDeclarationADefinition() const

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

void setEmbeddedInDeclarator(bool isInDeclarator)

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

SourceLocation getInnerLocStart() const

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

bool isEmbeddedInDeclarator() const

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

StringRef getKindName() const

bool isCompleteDefinition() const

Return true if this decl has its body fully specified.

void setMayHaveOutOfDateDef(bool V=true)

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

NestedNameSpecifierLoc getQualifierLoc() const

Retrieve the nested-name-specifier (with source-location information) that qualifies the name of this...

redeclarable_base::redecl_iterator redecl_iterator

TypedefNameDecl * getTypedefNameForAnonDecl() const

static bool classofKind(Kind K)

void startDefinition()

Starts the definition of this tag declaration.

TagDecl * getCanonicalDecl() override

Retrieves the "canonical" declaration of the given declaration.

void setTypedefNameForAnonDecl(TypedefNameDecl *TDD)

bool mayHaveOutOfDateDef() const

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

SourceLocation getOuterLocStart() const

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

bool isCompleteDefinitionRequired() const

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

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

bool isFreeStanding() const

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

void setBeingDefined(bool V=true)

True if this decl is currently being defined.

void setQualifierInfo(NestedNameSpecifierLoc QualifierLoc)

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

void completeDefinition()

Completes the definition of this tag declaration.

void printName(raw_ostream &OS, const PrintingPolicy &Policy) const override

Pretty-print the unqualified name of this declaration.

static bool classof(const Decl *D)

bool hasNameForLinkage() const

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

TemplateParameterList * getTemplateParameterList(unsigned i) const

void setFreeStanding(bool isFreeStanding=true)

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

TagKind getTagKind() const

TagDecl * getNextRedeclarationImpl() override

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

TagDecl * getPreviousDeclImpl() override

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

bool isThisDeclarationADemotedDefinition() const

Whether this declaration was a definition in some module but was forced to be a declaration.

unsigned getNumTemplateParameterLists() const

redeclarable_base::redecl_range redecl_range

static DeclContext * castToDeclContext(const TagDecl *D)

bool isDependentType() const

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

void setBraceRange(SourceRange R)

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

void setCompleteDefinition(bool V=true)

True if this decl has its body fully specified.

A convenient class for passing around template argument information.

A template argument list.

Stores a list of template parameters for a TemplateDecl and its derived classes.

A declaration that models statements at global scope.

static bool classofKind(Kind K)

const Stmt * getStmt() const

void setSemiMissing(bool Missing=true)

static bool classof(const Decl *D)

static TopLevelStmtDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

bool isSemiMissing() const

static DeclContext * castToDeclContext(const TopLevelStmtDecl *D)

static TopLevelStmtDecl * castFromDeclContext(const DeclContext *DC)

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

The top declaration context.

static TranslationUnitDecl * castFromDeclContext(const DeclContext *DC)

static DeclContext * castToDeclContext(const TranslationUnitDecl *D)

redeclarable_base::redecl_range redecl_range

const TranslationUnitDecl * getCanonicalDecl() const

static bool classofKind(Kind K)

NamespaceDecl * getAnonymousNamespace() const

ASTContext & getASTContext() const

redeclarable_base::redecl_iterator redecl_iterator

static bool classof(const Decl *D)

TranslationUnitDecl * getCanonicalDecl() override

Retrieves the canonical declaration of this translation unit.

void setAnonymousNamespace(NamespaceDecl *D)

Represents the declaration of a typedef-name via a C++11 alias-declaration.

static TypeAliasDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

TypeAliasTemplateDecl * getDescribedAliasTemplate() const

void setDescribedAliasTemplate(TypeAliasTemplateDecl *TAT)

static bool classof(const Decl *D)

static bool classofKind(Kind K)

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

Declaration of an alias template.

Represents a declaration of a type.

void setLocStart(SourceLocation L)

static bool classofKind(Kind K)

void setTypeForDecl(const Type *TD)

const Type * getTypeForDecl() const

static bool classof(const Decl *D)

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

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

SourceLocation getBeginLoc() const LLVM_READONLY

A container of type source information.

static StringRef getTagTypeKindName(TagTypeKind Kind)

The base class of the type hierarchy.

const T * castAs() const

Member-template castAs<specific type>.

const T * getAs() const

Member-template getAs<specific type>'.

Represents the declaration of a typedef-name via the 'typedef' type specifier.

static bool classofKind(Kind K)

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

static TypedefDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

static bool classof(const Decl *D)

Base class for declarations which introduce a typedef-name.

TypedefNameDecl * getNextRedeclarationImpl() override

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

TypeSourceInfo * getTypeSourceInfo() const

TypedefNameDecl * getPreviousDeclImpl() override

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

void setModedTypeSourceInfo(TypeSourceInfo *unmodedTSI, QualType modedTy)

redeclarable_base::redecl_range redecl_range

static bool classof(const Decl *D)

const TypedefNameDecl * getCanonicalDecl() const

TypedefNameDecl * getMostRecentDeclImpl() override

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

TypedefNameDecl(Kind DK, ASTContext &C, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, const IdentifierInfo *Id, TypeSourceInfo *TInfo)

QualType getUnderlyingType() const

bool isTransparentTag() const

Determines if this typedef shares a name and spelling location with its underlying tag type,...

redeclarable_base::redecl_iterator redecl_iterator

TypedefNameDecl * getCanonicalDecl() override

Retrieves the canonical declaration of this typedef-name.

void setTypeSourceInfo(TypeSourceInfo *newType)

static bool classofKind(Kind K)

TagDecl * getAnonDeclWithTypedefName(bool AnyRedecl=false) const

Retrieves the tag declaration for which this is the typedef name for linkage purposes,...

A set of unresolved declarations.

Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it ...

static bool classof(const Decl *D)

ValueDecl(Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N, QualType T)

void setType(QualType newType)

bool isParameterPack() const

Determine whether this value is actually a function parameter pack, init-capture pack,...

bool isWeak() const

Determine whether this symbol is weakly-imported, or declared with the weak or weak-ref attr.

static bool classofKind(Kind K)

VarDecl * getPotentiallyDecomposedVarDecl()

bool isInitCapture() const

Whether this variable is the implicit variable for a lambda init-capture.

const VarDecl * getPotentiallyDecomposedVarDecl() const

Represents a variable declaration or definition.

@ NumScopeDepthOrObjCQualsBits

const VarDecl * getDefinition() const

VarTemplateDecl * getDescribedVarTemplate() const

Retrieves the variable template that is described by this variable declaration.

void setObjCForDecl(bool FRD)

Stmt ** getInitAddress()

Retrieve the address of the initializer expression.

const VarDecl * getInitializingDeclaration() const

void setCXXForRangeDecl(bool FRD)

DefinitionKind isThisDeclarationADefinition() const

bool isFunctionOrMethodVarDecl() const

Similar to isLocalVarDecl, but excludes variables declared in blocks.

bool isConstexpr() const

Whether this variable is (C++11) constexpr.

void setInstantiationOfStaticDataMember(VarDecl *VD, TemplateSpecializationKind TSK)

Specify that this variable is an instantiation of the static data member VD.

TLSKind getTLSKind() const

bool hasICEInitializer(const ASTContext &Context) const

Determine whether the initializer of this variable is an integer constant expression.

redeclarable_base::redecl_range redecl_range

ParmVarDeclBitfields ParmVarDeclBits

void setARCPseudoStrong(bool PS)

VarDecl * getNextRedeclarationImpl() override

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

void setInitStyle(InitializationStyle Style)

redeclarable_base::redecl_iterator redecl_iterator

InitializationStyle getInitStyle() const

The style of initialization for this declaration.

void setInitCapture(bool IC)

DefinitionKind hasDefinition() const

static const char * getStorageClassSpecifierString(StorageClass SC)

Return the string used to specify the storage class SC.

SourceRange getSourceRange() const override LLVM_READONLY

Source range that this declaration covers.

bool isOutOfLine() const override

Determine whether this is or was instantiated from an out-of-line definition of a static data member.

VarDecl * getCanonicalDecl() override

Retrieves the "canonical" declaration of the given declaration.

bool hasFlexibleArrayInit(const ASTContext &Ctx) const

Whether this variable has a flexible array member initialized with one or more elements.

bool isNoDestroy(const ASTContext &) const

Is destruction of this variable entirely suppressed? If so, the variable need not have a usable destr...

bool isInitCapture() const

Whether this variable is the implicit variable for a lambda init-capture.

bool isCXXCondDecl() const

InitializationStyle

Initialization styles.

@ ListInit

Direct list-initialization (C++11)

@ CInit

C-style initialization with assignment.

@ ParenListInit

Parenthesized list-initialization (C++20)

@ CallInit

Call-style initialization (C++98)

bool isObjCForDecl() const

Determine whether this variable is a for-loop declaration for a for-in statement in Objective-C.

void setStorageClass(StorageClass SC)

void setPreviousDeclInSameBlockScope(bool Same)

bool isInlineSpecified() const

APValue * evaluateValue() const

Attempt to evaluate the value of the initializer attached to this declaration, and produce notes expl...

bool isStaticDataMember() const

Determines whether this is a static data member.

static VarDecl * CreateDeserialized(ASTContext &C, GlobalDeclID ID)

VarDecl * getTemplateInstantiationPattern() const

Retrieve the variable declaration from which this variable could be instantiated, if it is an instant...

bool hasGlobalStorage() const

Returns true for all variables that do not have local storage.

VarDeclBitfields VarDeclBits

CharUnits getFlexibleArrayInitChars(const ASTContext &Ctx) const

If hasFlexibleArrayInit is true, compute the number of additional bytes necessary to store those elem...

bool hasConstantInitialization() const

Determine whether this variable has constant initialization.

bool isCXXForRangeDecl() const

Determine whether this variable is the for-range-declaration in a C++0x for-range statement.

LanguageLinkage getLanguageLinkage() const

Compute the language linkage.

static bool classofKind(Kind K)

const VarDecl * getDefinition(ASTContext &C) const

EvaluatedStmt * getEvaluatedStmt() const

bool mightBeUsableInConstantExpressions(const ASTContext &C) const

Determine whether this variable's value might be usable in a constant expression, according to the re...

EvaluatedStmt * ensureEvaluatedStmt() const

Convert the initializer for this declaration to the elaborated EvaluatedStmt form,...

bool evaluateDestruction(SmallVectorImpl< PartialDiagnosticAt > &Notes) const

Evaluate the destruction of this variable to determine if it constitutes constant destruction.

static bool classof(const Decl *D)

bool isNRVOVariable() const

Determine whether this local variable can be used with the named return value optimization (NRVO).

void setInlineSpecified()

bool isStaticLocal() const

Returns true if a variable with function scope is a static local variable.

const VarDecl * getCanonicalDecl() const

VarDecl * getInstantiatedFromStaticDataMember() const

If this variable is an instantiated static data member of a class template specialization,...

bool isFileVarDecl() const

Returns true for file scoped variable declaration.

bool isExceptionVariable() const

Determine whether this variable is the exception variable in a C++ catch statememt or an Objective-C ...

void setTemplateSpecializationKind(TemplateSpecializationKind TSK, SourceLocation PointOfInstantiation=SourceLocation())

For a static data member that was instantiated from a static data member of a class template,...

void setTSCSpec(ThreadStorageClassSpecifier TSC)

void setNRVOVariable(bool NRVO)

QualType::DestructionKind needsDestruction(const ASTContext &Ctx) const

Would the destruction of this variable have any effect, and if so, what kind?

bool checkForConstantInitialization(SmallVectorImpl< PartialDiagnosticAt > &Notes) const

Evaluate the initializer of this variable to determine whether it's a constant initializer.

bool isInline() const

Whether this variable is (C++1z) inline.

ThreadStorageClassSpecifier getTSCSpec() const

const Expr * getInit() const

bool isNonEscapingByref() const

Indicates the capture is a __block variable that is never captured by an escaping block.

bool isInExternCContext() const

Determines whether this variable's context is, or is nested within, a C++ extern "C" linkage spec.

NonParmVarDeclBitfields NonParmVarDeclBits

bool hasExternalStorage() const

Returns true if a variable has extern or private_extern storage.

InitType Init

The initializer for this variable or, for a ParmVarDecl, the C++ default argument.

APValue * getEvaluatedValue() const

Return the already-evaluated value of this variable's initializer, or NULL if the value is not yet kn...

bool isARCPseudoStrong() const

Determine whether this variable is an ARC pseudo-__strong variable.

bool hasLocalStorage() const

Returns true if a variable with function scope is a non-static local variable.

VarDecl * getInitializingDeclaration()

Get the initializing declaration of this variable, if any.

void setConstexpr(bool IC)

TLSKind

Kinds of thread-local storage.

@ TLS_Static

TLS with a known-constant initializer.

@ TLS_Dynamic

TLS with a dynamic initializer.

@ TLS_None

Not a TLS variable.

VarDecl * getActingDefinition()

Get the tentative definition that acts as the real definition in a TU.

@ TentativeDefinition

This declaration is a tentative definition.

@ DeclarationOnly

This declaration is only a declaration.

@ Definition

This declaration is definitely a definition.

void setDescribedVarTemplate(VarTemplateDecl *Template)

bool isExternC() const

Determines whether this variable is a variable with external, C linkage.

llvm::PointerUnion< Stmt *, EvaluatedStmt * > InitType

bool isLocalVarDecl() const

Returns true for local variable declarations other than parameters.

bool isDirectInit() const

Whether the initializer is a direct-initializer (list or call).

VarDecl * getMostRecentDeclImpl() override

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

StorageDuration getStorageDuration() const

Get the storage duration of this variable, per C++ [basic.stc].

StorageClass getStorageClass() const

Returns the storage class as written in the source.

bool isEscapingByref() const

Indicates the capture is a __block variable that is captured by a block that can potentially escape (...

void setImplicitlyInline()

bool isThisDeclarationADemotedDefinition() const

If this definition should pretend to be a declaration.

bool isPreviousDeclInSameBlockScope() const

Whether this local extern variable declaration's previous declaration was declared in the same block ...

bool isUsableInConstantExpressions(const ASTContext &C) const

Determine whether this variable's value can be used in a constant expression, according to the releva...

bool isInExternCXXContext() const

Determines whether this variable's context is, or is nested within, a C++ extern "C++" linkage spec.

SourceLocation getPointOfInstantiation() const

If this variable is an instantiation of a variable template or a static data member of a class templa...

bool hasDependentAlignment() const

Determines if this variable's alignment is dependent.

TemplateSpecializationKind getTemplateSpecializationKindForInstantiation() const

Get the template specialization kind of this variable for the purposes of template instantiation.

VarDecl * getDefinition()

bool isLocalVarDeclOrParm() const

Similar to isLocalVarDecl but also includes parameters.

TemplateSpecializationKind getTemplateSpecializationKind() const

If this variable is an instantiation of a variable template or a static data member of a class templa...

const VarDecl * getActingDefinition() const

const Expr * getAnyInitializer() const

Get the initializer for this variable, no matter which declaration it is attached to.

void setExceptionVariable(bool EV)

bool isKnownToBeDefined() const

VarDecl * getPreviousDeclImpl() override

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

void demoteThisDefinitionToDeclaration()

This is a definition which should be demoted to a declaration.

MemberSpecializationInfo * getMemberSpecializationInfo() const

If this variable is an instantiation of a static data member of a class template specialization,...

Declaration of a variable template.

Represents a C array with a specified size that is not an integer-constant-expression.

Defines the Linkage enumeration and various utility functions.

The JSON file list parser is used to communicate input to InstallAPI.

OverloadedOperatorKind

Enumeration specifying the different kinds of C++ overloaded operators.

@ OO_None

Not an overloaded operator.

ConstexprSpecKind

Define the kind of constexpr specifier.

InClassInitStyle

In-class initialization styles for non-static data members.

@ ICIS_CopyInit

Copy initialization.

@ ICIS_ListInit

Direct list-initialization.

@ ICIS_NoInit

No in-class initializer.

LazyOffsetPtr< Stmt, uint64_t, &ExternalASTSource::GetExternalDeclStmt > LazyDeclStmtPtr

A lazy pointer to a statement.

bool IsEnumDeclComplete(EnumDecl *ED)

Check if the given decl is complete.

@ Create

'create' clause, allowed on Compute and Combined constructs, plus 'data', 'enter data',...

LanguageLinkage

Describes the different kinds of language linkage (C++ [dcl.link]) that an entity may have.

StorageClass

Storage classes.

ThreadStorageClassSpecifier

Thread storage-class-specifier.

@ TSCS_thread_local

C++11 thread_local.

static constexpr StringRef getOpenMPVariantManglingSeparatorStr()

OpenMP variants are mangled early based on their OpenMP context selector.

const StreamingDiagnostic & operator<<(const StreamingDiagnostic &DB, const ASTContext::SectionInfo &Section)

Insertion operator for diagnostics.

Linkage

Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have.

@ Module

Module linkage, which indicates that the entity can be referred to from other translation units withi...

@ Asm

Assembly: we accept this only so that we can preprocess it.

StorageDuration

The storage duration for an object (per C++ [basic.stc]).

@ SD_Thread

Thread storage duration.

@ SD_Static

Static storage duration.

@ SD_Automatic

Automatic storage duration (most local variables).

bool hasArmZT0State(const FunctionDecl *FD)

Returns whether the given FunctionDecl has Arm ZT0 state.

TagTypeKind

The kind of a tag type.

@ Interface

The "__interface" keyword.

@ Struct

The "struct" keyword.

@ Class

The "class" keyword.

@ Union

The "union" keyword.

@ Enum

The "enum" keyword.

bool IsEnumDeclScoped(EnumDecl *ED)

Check if the given decl is scoped.

RecordArgPassingKind

Enum that represents the different ways arguments are passed to and returned from function calls.

@ CanPassInRegs

The argument of this type can be passed directly in registers.

@ CanNeverPassInRegs

The argument of this type cannot be passed directly in registers.

@ CannotPassInRegs

The argument of this type cannot be passed directly in registers.

const FunctionProtoType * T

bool isExternalFormalLinkage(Linkage L)

TemplateSpecializationKind

Describes the kind of template specialization that a particular template specialization declaration r...

@ TSK_ImplicitInstantiation

This template specialization was implicitly instantiated from a template.

@ None

The alignment was not explicit in code.

@ Enum

The "enum" keyword introduces the elaborated-type-specifier.

bool IsArmStreamingFunction(const FunctionDecl *FD, bool IncludeLocallyStreaming)

Returns whether the given FunctionDecl has an __arm[_locally]_streaming attribute.

bool isExternallyVisible(Linkage L)

ImplicitParamKind

Defines the kind of the implicit parameter: is this an implicit parameter with pointer to 'this',...

@ CXXThis

Parameter for C++ 'this' argument.

@ ThreadPrivateVar

Parameter for Thread private variable.

@ Other

Other implicit parameter.

@ CXXVTT

Parameter for C++ virtual table pointers.

@ ObjCSelf

Parameter for Objective-C 'self' argument.

@ ObjCCmd

Parameter for Objective-C '_cmd' argument.

@ CapturedContext

Parameter for captured context.

ExceptionSpecificationType

The various types of exception specifications that exist in C++11.

@ EST_None

no exception specification

Visibility

Describes the different kinds of visibility that a declaration may have.

bool hasArmZAState(const FunctionDecl *FD)

Returns whether the given FunctionDecl has Arm ZA state.

Diagnostic wrappers for TextAPI types for error reporting.

Represents an explicit template argument list in C++, e.g., the "<int>" in "sort<int>".

A placeholder type used to construct an empty shell of a decl-derived type that will be filled in lat...

DeclarationNameInfo - A collector data type for bundling together a DeclarationName and the correspon...

Structure used to store a statement, the constant value to which it was evaluated (if any),...

bool HasConstantDestruction

Whether this variable is known to have constant destruction.

bool WasEvaluated

Whether this statement was already evaluated.

bool IsEvaluating

Whether this statement is being evaluated.

bool HasConstantInitialization

Whether this variable is known to have constant initialization.

bool HasICEInit

In C++98, whether the initializer is an ICE.

Describes how types, statements, expressions, and declarations should be printed.

A struct with extended info about a syntactic name qualifier, to be used for the case of out-of-line ...

QualifierInfo & operator=(const QualifierInfo &)=delete

TemplateParameterList ** TemplParamLists

A new-allocated array of size NumTemplParamLists, containing pointers to the "outer" template paramet...

NestedNameSpecifierLoc QualifierLoc

QualifierInfo(const QualifierInfo &)=delete

unsigned NumTemplParamLists

The number of "outer" template parameter lists.

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

Sets info about "outer" template parameter lists.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4