clang 24.0.0git
clang::DeclaratorChunk Struct Reference

One instance of this struct is used for each type in a declarator that is parsed. More...

#include "clang/Sema/DeclSpec.h"

Classes

struct  ArrayTypeInfo
struct  BlockPointerTypeInfo
struct  FunctionTypeInfo
struct  MemberPointerTypeInfo
struct  ParamInfo
 ParamInfo - An array of paraminfo objects is allocated whenever a function declarator is parsed. More...
struct  PipeTypeInfo
struct  PointerTypeInfo
struct  ReferenceTypeInfo
struct  TypeAndRange

Public Types

enum  {
  Pointer , Reference , Array , Function ,
  BlockPointer , MemberPointer , Paren , Pipe
}

Public Member Functions

 DeclaratorChunk ()
SourceRange getSourceRange () const
void destroy ()
const ParsedAttributesView & getAttrs () const
 If there are attributes applied to this declaratorchunk, return them.
ParsedAttributesView & getAttrs ()
bool isParen () const

Static Public Member Functions

static DeclaratorChunk getPointer (unsigned TypeQuals, SourceLocation Loc, SourceLocation ConstQualLoc, SourceLocation VolatileQualLoc, SourceLocation RestrictQualLoc, SourceLocation AtomicQualLoc, SourceLocation UnalignedQualLoc, SourceLocation OverflowBehaviorLoc={}, bool OverflowBehaviorIsWrap=false)
 Return a DeclaratorChunk for a pointer.
static DeclaratorChunk getReference (unsigned TypeQuals, SourceLocation Loc, bool lvalue)
 Return a DeclaratorChunk for a reference.
static DeclaratorChunk getArray (unsigned TypeQuals, bool isStatic, bool isStar, Expr *NumElts, SourceLocation LBLoc, SourceLocation RBLoc)
 Return a DeclaratorChunk for an array.
static DeclaratorChunk getFunction (bool HasProto, bool IsAmbiguous, SourceLocation LParenLoc, ParamInfo *Params, unsigned NumParams, SourceLocation EllipsisLoc, SourceLocation RParenLoc, bool RefQualifierIsLvalueRef, SourceLocation RefQualifierLoc, SourceLocation MutableLoc, ExceptionSpecificationType ESpecType, SourceRange ESpecRange, ParsedType *Exceptions, SourceRange *ExceptionRanges, unsigned NumExceptions, Expr *NoexceptExpr, CachedTokens *ExceptionSpecTokens, ArrayRef< NamedDecl * > DeclsInPrototype, SourceLocation LocalRangeBegin, SourceLocation LocalRangeEnd, Declarator &TheDeclarator, TypeResult TrailingReturnType=TypeResult(), SourceLocation TrailingReturnTypeLoc=SourceLocation(), DeclSpec *MethodQualifiers=nullptr)
 DeclaratorChunk::getFunction - Return a DeclaratorChunk for a function.
static DeclaratorChunk getBlockPointer (unsigned TypeQuals, SourceLocation Loc)
 Return a DeclaratorChunk for a block.
static DeclaratorChunk getPipe (unsigned TypeQuals, SourceLocation Loc)
 Return a DeclaratorChunk for a block.
static DeclaratorChunk getMemberPointer (const CXXScopeSpec &SS, unsigned TypeQuals, SourceLocation StarLoc, SourceLocation EndLoc)
static DeclaratorChunk getParen (SourceLocation LParenLoc, SourceLocation RParenLoc)
 Return a DeclaratorChunk for a paren.

Public Attributes

enum clang::DeclaratorChunk:: { ... }  Kind
SourceLocation Loc
 Loc - The place where this type was defined.
SourceLocation EndLoc
 EndLoc - If valid, the place where this chunck ends.
ParsedAttributesView AttrList
union { 
   PointerTypeInfo   Ptr 
   ReferenceTypeInfo   Ref 
   ArrayTypeInfo   Arr 
   FunctionTypeInfo   Fun 
   BlockPointerTypeInfo   Cls 
   MemberPointerTypeInfo   Mem 
   PipeTypeInfo   PipeInfo 
}; 

Detailed Description

One instance of this struct is used for each type in a declarator that is parsed.

This is intended to be a small value object.

Definition at line 1287 of file DeclSpec.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
Pointer 
Reference 
Array 
Function 
BlockPointer 
MemberPointer 
Paren 
Pipe 

Definition at line 1290 of file DeclSpec.h.

Constructor & Destructor Documentation

◆ DeclaratorChunk()

clang::DeclaratorChunk::DeclaratorChunk ( )
inline

Member Function Documentation

◆ destroy()

void clang::DeclaratorChunk::destroy ( )
inline

Definition at line 1692 of file DeclSpec.h.

References Arr, Array, BlockPointer, Cls, Fun, Function, Kind, Mem, MemberPointer, Paren, Pipe, PipeInfo, Pointer, Ptr, Ref, and Reference.

◆ getArray()

◆ getAttrs() [1/2]

ParsedAttributesView & clang::DeclaratorChunk::getAttrs ( )
inline

Definition at line 1708 of file DeclSpec.h.

References AttrList.

◆ getAttrs() [2/2]

◆ getBlockPointer()

DeclaratorChunk clang::DeclaratorChunk::getBlockPointer ( unsigned TypeQuals,
SourceLocation Loc )
inlinestatic

◆ getFunction()

DeclaratorChunk DeclaratorChunk::getFunction ( bool hasProto,
bool isAmbiguous,
SourceLocation LParenLoc,
ParamInfo * Params,
unsigned NumParams,
SourceLocation EllipsisLoc,
SourceLocation RParenLoc,
bool RefQualifierIsLvalueRef,
SourceLocation RefQualifierLoc,
SourceLocation MutableLoc,
ExceptionSpecificationType ESpecType,
SourceRange ESpecRange,
ParsedType * Exceptions,
SourceRange * ExceptionRanges,
unsigned NumExceptions,
Expr * NoexceptExpr,
CachedTokens * ExceptionSpecTokens,
ArrayRef< NamedDecl * > DeclsInPrototype,
SourceLocation LocalRangeBegin,
SourceLocation LocalRangeEnd,
Declarator & TheDeclarator,
TypeResult TrailingReturnType = TypeResult(),
SourceLocation TrailingReturnTypeLoc = SourceLocation(),
DeclSpec * MethodQualifiers = nullptr )
static

DeclaratorChunk::getFunction - Return a DeclaratorChunk for a function.

"TheDeclarator" is the declarator that this will be added to.

Definition at line 132 of file DeclSpec.cpp.

References DeclaratorChunk(), clang::DeclaratorChunk::FunctionTypeInfo::DeclsInPrototype, clang::DeclaratorChunk::FunctionTypeInfo::DeleteParams, clang::DeclaratorChunk::FunctionTypeInfo::EllipsisLoc, EndLoc, clang::EST_DependentNoexcept, clang::EST_Dynamic, clang::EST_NoexceptFalse, clang::EST_NoexceptTrue, clang::EST_None, clang::EST_Unparsed, clang::DeclaratorChunk::FunctionTypeInfo::Exceptions, clang::DeclaratorChunk::FunctionTypeInfo::ExceptionSpecLocBeg, clang::DeclaratorChunk::FunctionTypeInfo::ExceptionSpecLocEnd, clang::DeclaratorChunk::FunctionTypeInfo::ExceptionSpecTokens, clang::DeclaratorChunk::FunctionTypeInfo::ExceptionSpecType, clang::DeclSpec::forEachCVRUQualifier(), Fun, Function, clang::DeclSpec::getAttributePool(), clang::DeclSpec::getAttributes(), clang::SourceRange::getBegin(), clang::SourceRange::getEnd(), clang::DeclSpec::getTypeQualifiers(), clang::DeclaratorChunk::FunctionTypeInfo::hasPrototype, clang::DeclaratorChunk::FunctionTypeInfo::HasTrailingReturnType, clang::Declarator::InlineParams, clang::DeclaratorChunk::FunctionTypeInfo::isAmbiguous, clang::SourceLocation::isValid(), clang::DeclaratorChunk::FunctionTypeInfo::isVariadic, Kind, Loc, clang::DeclaratorChunk::FunctionTypeInfo::LParenLoc, clang::DeclaratorChunk::FunctionTypeInfo::MethodQualifiers, clang::DeclaratorChunk::FunctionTypeInfo::MutableLoc, clang::DeclaratorChunk::FunctionTypeInfo::NoexceptExpr, clang::DeclaratorChunk::FunctionTypeInfo::NumExceptionsOrDecls, clang::DeclaratorChunk::FunctionTypeInfo::NumParams, clang::DeclaratorChunk::FunctionTypeInfo::Params, clang::DeclaratorChunk::FunctionTypeInfo::QualAttrFactory, clang::DeclaratorChunk::TypeAndRange::Range, clang::DeclaratorChunk::FunctionTypeInfo::RefQualifierIsLValueRef, clang::DeclaratorChunk::FunctionTypeInfo::RefQualifierLoc, clang::DeclaratorChunk::FunctionTypeInfo::RParenLoc, clang::DeclSpec::SetTypeQual(), clang::ParsedAttributesView::size(), clang::AttributePool::takeAllFrom(), clang::ParsedAttributes::takeAllPrependingFrom(), clang::DeclSpec::TQ_atomic, clang::DeclaratorChunk::FunctionTypeInfo::TrailingReturnType, clang::DeclaratorChunk::FunctionTypeInfo::TrailingReturnTypeLoc, and clang::DeclaratorChunk::TypeAndRange::Ty.

Referenced by clang::Sema::ImplicitlyDefineFunction(), and maybeSynthesizeBlockSignature().

◆ getMemberPointer()

◆ getParen()

DeclaratorChunk clang::DeclaratorChunk::getParen ( SourceLocation LParenLoc,
SourceLocation RParenLoc )
inlinestatic

Return a DeclaratorChunk for a paren.

Definition at line 1824 of file DeclSpec.h.

References DeclaratorChunk(), EndLoc, Kind, Loc, and Paren.

◆ getPipe()

DeclaratorChunk clang::DeclaratorChunk::getPipe ( unsigned TypeQuals,
SourceLocation Loc )
inlinestatic

Return a DeclaratorChunk for a block.

Definition at line 1799 of file DeclSpec.h.

References Cls, DeclaratorChunk(), Kind, Loc, Pipe, and clang::DeclaratorChunk::BlockPointerTypeInfo::TypeQuals.

◆ getPointer()

DeclaratorChunk clang::DeclaratorChunk::getPointer ( unsigned TypeQuals,
SourceLocation Loc,
SourceLocation ConstQualLoc,
SourceLocation VolatileQualLoc,
SourceLocation RestrictQualLoc,
SourceLocation AtomicQualLoc,
SourceLocation UnalignedQualLoc,
SourceLocation OverflowBehaviorLoc = {},
bool OverflowBehaviorIsWrap = false )
inlinestatic

Return a DeclaratorChunk for a pointer.

Definition at line 1711 of file DeclSpec.h.

References DeclaratorChunk(), and Loc.

Referenced by clang::SemaObjC::actOnObjCTypeArgsOrProtocolQualifiers().

◆ getReference()

◆ getSourceRange()

SourceRange clang::DeclaratorChunk::getSourceRange ( ) const
inline

Definition at line 1299 of file DeclSpec.h.

References EndLoc, and Loc.

Referenced by diagnoseInvalidDeclaratorChunks().

◆ isParen()

bool clang::DeclaratorChunk::isParen ( ) const
inline

Definition at line 1833 of file DeclSpec.h.

References Kind, and Paren.

Member Data Documentation

◆ [union]

union { ... } clang::DeclaratorChunk

◆ Arr

◆ AttrList

ParsedAttributesView clang::DeclaratorChunk::AttrList

Definition at line 1305 of file DeclSpec.h.

Referenced by clang::Declarator::AddTypeInfo(), getAttrs(), and getAttrs().

◆ Cls

BlockPointerTypeInfo clang::DeclaratorChunk::Cls

Definition at line 1687 of file DeclSpec.h.

Referenced by destroy(), getBlockPointer(), GetFullTypeForDeclarator(), and getPipe().

◆ EndLoc

SourceLocation clang::DeclaratorChunk::EndLoc

EndLoc - If valid, the place where this chunck ends.

Definition at line 1297 of file DeclSpec.h.

Referenced by getArray(), GetFullTypeForDeclarator(), getFunction(), getMemberPointer(), getParen(), getSourceRange(), and warnAboutAmbiguousFunction().

◆ Fun

◆ []

◆ Loc

◆ Mem

◆ PipeInfo

PipeTypeInfo clang::DeclaratorChunk::PipeInfo

Definition at line 1689 of file DeclSpec.h.

Referenced by destroy().

◆ Ptr

PointerTypeInfo clang::DeclaratorChunk::Ptr

◆ Ref

ReferenceTypeInfo clang::DeclaratorChunk::Ref

Definition at line 1684 of file DeclSpec.h.

Referenced by destroy(), GetFullTypeForDeclarator(), and getReference().


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