clang 18.0.0git
Classes | Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
clang::interp::Descriptor Struct Referencefinal

Describes a memory block created by an allocation site. More...

#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/AST/Interp/Descriptor.h"

Classes

struct  UnknownSize
 Token to denote structures of unknown size. More...
 

Public Types

using MetadataSize = std::optional< unsigned >
 

Public Member Functions

 Descriptor (const DeclTy &D, PrimType Type, MetadataSize MD, bool IsConst, bool IsTemporary, bool IsMutable)
 Allocates a descriptor for a primitive.
 
 Descriptor (const DeclTy &D, PrimType Type, MetadataSize MD, size_t NumElems, bool IsConst, bool IsTemporary, bool IsMutable)
 Allocates a descriptor for an array of primitives.
 
 Descriptor (const DeclTy &D, PrimType Type, bool IsTemporary, UnknownSize)
 Allocates a descriptor for an array of primitives of unknown size.
 
 Descriptor (const DeclTy &D, const Descriptor *Elem, MetadataSize MD, unsigned NumElems, bool IsConst, bool IsTemporary, bool IsMutable)
 Allocates a descriptor for an array of composites.
 
 Descriptor (const DeclTy &D, Descriptor *Elem, bool IsTemporary, UnknownSize)
 Allocates a descriptor for an array of composites of unknown size.
 
 Descriptor (const DeclTy &D, Record *R, MetadataSize MD, bool IsConst, bool IsTemporary, bool IsMutable)
 Allocates a descriptor for a record.
 
 Descriptor (const DeclTy &D, MetadataSize MD)
 
QualType getType () const
 
QualType getElemQualType () const
 
SourceLocation getLocation () const
 
const DeclasDecl () const
 
const ExprasExpr () const
 
const ValueDeclasValueDecl () const
 
const FieldDeclasFieldDecl () const
 
const RecordDeclasRecordDecl () const
 
unsigned getSize () const
 Returns the size of the object without metadata.
 
unsigned getAllocSize () const
 Returns the allocated size, including metadata.
 
unsigned getElemSize () const
 returns the size of an element when the structure is viewed as an array.
 
unsigned getMetadataSize () const
 Returns the size of the metadata.
 
unsigned getNumElems () const
 Returns the number of elements stored in the block.
 
bool isPrimitiveArray () const
 Checks if the descriptor is of an array of primitives.
 
bool isCompositeArray () const
 Checks if the descriptor is of an array of composites.
 
bool isZeroSizeArray () const
 Checks if the descriptor is of an array of zero size.
 
bool isUnknownSizeArray () const
 Checks if the descriptor is of an array of unknown size.
 
bool isPrimitive () const
 Checks if the descriptor is of a primitive.
 
bool isArray () const
 Checks if the descriptor is of an array.
 
bool isRecord () const
 Checks if the descriptor is of a record.
 
bool isDummy () const
 Checks if this is a dummy descriptor.
 

Public Attributes

Record *const ElemRecord = nullptr
 Pointer to the record, if block contains records.
 
const Descriptor *const ElemDesc = nullptr
 Descriptor of the array element.
 
const bool IsConst = false
 Flag indicating if the block is mutable.
 
const bool IsMutable = false
 Flag indicating if a field is mutable.
 
const bool IsTemporary = false
 Flag indicating if the block is a temporary.
 
const bool IsArray = false
 Flag indicating if the block is an array.
 
const bool IsDummy = false
 Flag indicating if this is a dummy descriptor.
 
const BlockCtorFn CtorFn = nullptr
 Storage management methods.
 
const BlockDtorFn DtorFn = nullptr
 
const BlockMoveFn MoveFn = nullptr
 

Static Public Attributes

static constexpr MetadataSize InlineDescMD = sizeof(InlineDescriptor)
 

Detailed Description

Describes a memory block created by an allocation site.

Definition at line 79 of file Descriptor.h.

Member Typedef Documentation

◆ MetadataSize

Definition at line 99 of file Descriptor.h.

Constructor & Destructor Documentation

◆ Descriptor() [1/7]

Descriptor::Descriptor ( const DeclTy D,
PrimType  Type,
MetadataSize  MD,
bool  IsConst,
bool  IsTemporary,
bool  IsMutable 
)

Allocates a descriptor for a primitive.

Primitives.

Definition at line 230 of file Descriptor.cpp.

◆ Descriptor() [2/7]

Descriptor::Descriptor ( const DeclTy D,
PrimType  Type,
MetadataSize  MD,
size_t  NumElems,
bool  IsConst,
bool  IsTemporary,
bool  IsMutable 
)

Allocates a descriptor for an array of primitives.

Primitive arrays.

Definition at line 241 of file Descriptor.cpp.

◆ Descriptor() [3/7]

Descriptor::Descriptor ( const DeclTy D,
PrimType  Type,
bool  IsTemporary,
UnknownSize   
)

Allocates a descriptor for an array of primitives of unknown size.

Primitive unknown-size arrays.

Definition at line 254 of file Descriptor.cpp.

◆ Descriptor() [4/7]

Descriptor::Descriptor ( const DeclTy D,
const Descriptor Elem,
MetadataSize  MD,
unsigned  NumElems,
bool  IsConst,
bool  IsTemporary,
bool  IsMutable 
)

Allocates a descriptor for an array of composites.

Arrays of composite elements.

Definition at line 265 of file Descriptor.cpp.

◆ Descriptor() [5/7]

Descriptor::Descriptor ( const DeclTy D,
Descriptor Elem,
bool  IsTemporary,
UnknownSize   
)

Allocates a descriptor for an array of composites of unknown size.

Unknown-size arrays of composite elements.

Definition at line 278 of file Descriptor.cpp.

◆ Descriptor() [6/7]

Descriptor::Descriptor ( const DeclTy D,
Record R,
MetadataSize  MD,
bool  IsConst,
bool  IsTemporary,
bool  IsMutable 
)

Allocates a descriptor for a record.

Composite records.

Definition at line 289 of file Descriptor.cpp.

◆ Descriptor() [7/7]

Descriptor::Descriptor ( const DeclTy D,
MetadataSize  MD 
)

Definition at line 299 of file Descriptor.cpp.

Member Function Documentation

◆ asDecl()

const Decl * clang::interp::Descriptor::asDecl ( ) const
inline

◆ asExpr()

const Expr * clang::interp::Descriptor::asExpr ( ) const
inline

Definition at line 151 of file Descriptor.h.

Referenced by getType(), and clang::interp::Pointer::toAPValue().

◆ asFieldDecl()

const FieldDecl * clang::interp::Descriptor::asFieldDecl ( ) const
inline

Definition at line 157 of file Descriptor.h.

References asDecl().

Referenced by clang::interp::Pointer::getField().

◆ asRecordDecl()

const RecordDecl * clang::interp::Descriptor::asRecordDecl ( ) const
inline

Definition at line 161 of file Descriptor.h.

References asDecl().

◆ asValueDecl()

const ValueDecl * clang::interp::Descriptor::asValueDecl ( ) const
inline

Definition at line 153 of file Descriptor.h.

References asDecl().

Referenced by clang::interp::CheckExtern(), getType(), and clang::interp::Pointer::toAPValue().

◆ getAllocSize()

unsigned clang::interp::Descriptor::getAllocSize ( ) const
inline

◆ getElemQualType()

QualType Descriptor::getElemQualType ( ) const

Definition at line 316 of file Descriptor.cpp.

References getType(), and isArray().

◆ getElemSize()

unsigned clang::interp::Descriptor::getElemSize ( ) const
inline

returns the size of an element when the structure is viewed as an array.

Definition at line 174 of file Descriptor.h.

Referenced by clang::interp::Pointer::elemSize(), and getNumElems().

◆ getLocation()

SourceLocation Descriptor::getLocation ( ) const

Definition at line 322 of file Descriptor.cpp.

Referenced by clang::interp::Pointer::getDeclLoc().

◆ getMetadataSize()

unsigned clang::interp::Descriptor::getMetadataSize ( ) const
inline

Returns the size of the metadata.

Definition at line 176 of file Descriptor.h.

Referenced by clang::interp::Block::data(), and clang::interp::InterpState::deallocate().

◆ getNumElems()

unsigned clang::interp::Descriptor::getNumElems ( ) const
inline

Returns the number of elements stored in the block.

Definition at line 179 of file Descriptor.h.

References getElemSize(), and getSize().

Referenced by ctorArrayDesc(), ctorArrayTy(), dtorArrayDesc(), dtorArrayTy(), clang::interp::Pointer::initialize(), moveArrayDesc(), and moveArrayTy().

◆ getSize()

unsigned clang::interp::Descriptor::getSize ( ) const
inline

Returns the size of the object without metadata.

Definition at line 166 of file Descriptor.h.

References isUnknownSizeArray().

Referenced by clang::interp::Pointer::elemSize(), getNumElems(), and clang::interp::Pointer::getSize().

◆ getType()

QualType Descriptor::getType ( ) const

◆ isArray()

bool clang::interp::Descriptor::isArray ( ) const
inline

Checks if the descriptor is of an array.

Definition at line 196 of file Descriptor.h.

References IsArray.

Referenced by getElemQualType().

◆ isCompositeArray()

bool clang::interp::Descriptor::isCompositeArray ( ) const
inline

Checks if the descriptor is of an array of composites.

Definition at line 186 of file Descriptor.h.

References ElemDesc, and IsArray.

◆ isDummy()

bool clang::interp::Descriptor::isDummy ( ) const
inline

Checks if this is a dummy descriptor.

Definition at line 200 of file Descriptor.h.

References IsDummy.

Referenced by clang::interp::Pointer::isDummy().

◆ isPrimitive()

bool clang::interp::Descriptor::isPrimitive ( ) const
inline

Checks if the descriptor is of a primitive.

Definition at line 193 of file Descriptor.h.

References ElemRecord, and IsArray.

◆ isPrimitiveArray()

bool clang::interp::Descriptor::isPrimitiveArray ( ) const
inline

◆ isRecord()

bool clang::interp::Descriptor::isRecord ( ) const
inline

Checks if the descriptor is of a record.

Definition at line 198 of file Descriptor.h.

References ElemRecord, and IsArray.

◆ isUnknownSizeArray()

bool clang::interp::Descriptor::isUnknownSizeArray ( ) const
inline

Checks if the descriptor is of an array of unknown size.

Definition at line 190 of file Descriptor.h.

Referenced by getSize(), and clang::interp::Pointer::isUnknownSizeArray().

◆ isZeroSizeArray()

bool clang::interp::Descriptor::isZeroSizeArray ( ) const
inline

Checks if the descriptor is of an array of zero size.

Definition at line 188 of file Descriptor.h.

Member Data Documentation

◆ CtorFn

const BlockCtorFn clang::interp::Descriptor::CtorFn = nullptr

Storage management methods.

Definition at line 118 of file Descriptor.h.

Referenced by ctorArrayDesc(), and clang::interp::Block::invokeCtor().

◆ DtorFn

const BlockDtorFn clang::interp::Descriptor::DtorFn = nullptr

Definition at line 119 of file Descriptor.h.

Referenced by dtorArrayDesc(), and clang::interp::Block::invokeDtor().

◆ ElemDesc

const Descriptor* const clang::interp::Descriptor::ElemDesc = nullptr

◆ ElemRecord

Record* const clang::interp::Descriptor::ElemRecord = nullptr

Pointer to the record, if block contains records.

Definition at line 103 of file Descriptor.h.

Referenced by ctorRecord(), dtorRecord(), clang::interp::Pointer::getElemRecord(), clang::interp::Pointer::getRecord(), isPrimitive(), isRecord(), and moveRecord().

◆ InlineDescMD

constexpr MetadataSize clang::interp::Descriptor::InlineDescMD = sizeof(InlineDescriptor)
staticconstexpr

◆ IsArray

const bool clang::interp::Descriptor::IsArray = false

◆ IsConst

const bool clang::interp::Descriptor::IsConst = false

Flag indicating if the block is mutable.

Definition at line 107 of file Descriptor.h.

Referenced by ctorArrayDesc(), clang::interp::Block::invokeCtor(), and clang::interp::Pointer::isConst().

◆ IsDummy

const bool clang::interp::Descriptor::IsDummy = false

Flag indicating if this is a dummy descriptor.

Definition at line 115 of file Descriptor.h.

Referenced by isDummy().

◆ IsMutable

const bool clang::interp::Descriptor::IsMutable = false

Flag indicating if a field is mutable.

Definition at line 109 of file Descriptor.h.

Referenced by ctorArrayDesc(), and clang::interp::Block::invokeCtor().

◆ IsTemporary

const bool clang::interp::Descriptor::IsTemporary = false

Flag indicating if the block is a temporary.

Definition at line 111 of file Descriptor.h.

Referenced by clang::interp::Block::isTemporary().

◆ MoveFn

const BlockMoveFn clang::interp::Descriptor::MoveFn = nullptr

Definition at line 120 of file Descriptor.h.

Referenced by clang::interp::InterpState::deallocate(), and moveArrayDesc().


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