13#ifndef LLVM_CLANG_AST_INTERP_RECORD_H
14#define LLVM_CLANG_AST_INTERP_RECORD_H
69 unsigned getSize()
const {
return BaseSize; }
71 unsigned getFullSize()
const {
return BaseSize + VirtualSize; }
74 if (
const auto *CXXDecl = dyn_cast<CXXRecordDecl>(Decl))
75 return CXXDecl->getDestructor();
86 llvm::iterator_range<const_field_iter>
fields()
const {
87 return llvm::make_range(Fields.begin(), Fields.end());
98 llvm::iterator_range<const_base_iter>
bases()
const {
99 return llvm::make_range(Bases.begin(), Bases.end());
114 return llvm::make_range(VirtualBases.begin(), VirtualBases.end());
122 void dump(llvm::raw_ostream &OS,
unsigned Indentation = 0,
123 unsigned Offset = 0)
const;
130 unsigned BaseSize,
bool HasPtrField =
true);
145 llvm::DenseMap<const RecordDecl *, const Base *> BaseMap;
147 llvm::DenseMap<const RecordDecl *, Base *> VirtualBaseMap;
151 unsigned VirtualSize;
155 bool IsAnonymousUnion;
157 bool HasPtrField =
false;
Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate....
llvm::MachO::Record Record
Represents a C++ destructor within a class.
Represents a member of a struct/union/class.
unsigned getFieldIndex() const
Returns the index of this field within its record, as appropriate for passing to ASTRecordLayout::get...
A (possibly-)qualified type.
Represents a struct/union/class.
The program contains and links the bytecode for all functions.
const RecordDecl * getDecl() const
Returns the underlying declaration.
bool isUnion() const
Checks if the record is a union.
llvm::SmallVector< Base, 8 > BaseList
Mapping from identifiers to base classes.
std::string getName() const
Returns the name of the underlying declaration.
const Field * getField(unsigned I) const
bool hasPtrField() const
If this record (or any of its bases) contains a field of type PT_Ptr.
BaseList::const_iterator const_base_iter
unsigned getNumBases() const
const CXXDestructorDecl * getDestructor() const
Returns the destructor of the record, if any.
const Base * getBase(unsigned I) const
const Field * getField(const FieldDecl *FD) const
Returns a field.
llvm::iterator_range< const_virtual_iter > virtual_bases() const
llvm::SmallVector< Field, 8 > FieldList
Mapping from identifiers to field descriptors.
bool hasTrivialDtor() const
Returns true for anonymous unions and records with no destructor or for those with a trivial destruct...
VirtualBaseList::const_iterator const_virtual_iter
llvm::SmallVector< Base, 0 > VirtualBaseList
List of virtual base classes.
const Base * getVirtualBase(unsigned I) const
FieldList::const_iterator const_field_iter
unsigned getSize() const
Returns the size of the record.
llvm::iterator_range< const_base_iter > bases() const
unsigned getFullSize() const
Returns the full size of the record, including records.
unsigned getNumFields() const
unsigned getNumVirtualBases() const
bool isAnonymousUnion() const
Checks if the record is an anonymous union.
llvm::iterator_range< const_field_iter > fields() const
The JSON file list parser is used to communicate input to InstallAPI.
Describes a memory block created by an allocation site.
Base(const RecordDecl *D, const Descriptor *Desc, const Record *R, unsigned Offset)
Describes a record field.
bool isUnnamedBitField() const
Field(const FieldDecl *D, const Descriptor *Desc, unsigned Offset)