13#ifndef LLVM_CLANG_AST_INTERP_RECORD_H
14#define LLVM_CLANG_AST_INTERP_RECORD_H
54 const std::string
getName()
const;
58 unsigned getSize()
const {
return BaseSize; }
60 unsigned getFullSize()
const {
return BaseSize + VirtualSize; }
71 if (
const auto *CXXDecl = dyn_cast<CXXRecordDecl>(
Decl))
72 return CXXDecl->getDestructor();
77 llvm::iterator_range<const_field_iter>
fields()
const {
78 return llvm::make_range(Fields.begin(), Fields.end());
85 llvm::iterator_range<const_base_iter>
bases()
const {
86 return llvm::make_range(Bases.begin(), Bases.end());
97 return llvm::make_range(VirtualBases.begin(), VirtualBases.end());
103 void dump(llvm::raw_ostream &OS,
unsigned Indentation = 0,
104 unsigned Offset = 0)
const;
126 llvm::DenseMap<const RecordDecl *, const Base *> BaseMap;
128 llvm::DenseMap<const FieldDecl *, const Field *> FieldMap;
130 llvm::DenseMap<const RecordDecl *, Base *> VirtualBaseMap;
134 unsigned VirtualSize;
Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate....
Represents a C++ destructor within a class.
Decl - This represents one declaration (or definition), e.g.
Represents a member of a struct/union/class.
A (possibly-)qualified type.
Represents a struct/union/class.
The program contains and links the bytecode for all functions.
Structure/Class descriptor.
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.
const Field * getField(unsigned I) const
BaseList::const_iterator const_base_iter
const std::string getName() const
Returns the name of the underlying declaration.
unsigned getNumBases() const
const CXXDestructorDecl * getDestructor() const
Returns the destructor of the record, if any.
const Field * getField(const FieldDecl *FD) const
Returns a field.
const Base * getBase(unsigned I) const
llvm::iterator_range< const_virtual_iter > virtual_bases() const
llvm::SmallVector< Field, 8 > FieldList
Mapping from identifiers to field descriptors.
llvm::SmallVector< Base, 2 > VirtualBaseList
List of virtual base classes.
VirtualBaseList::const_iterator const_virtual_iter
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
const Base * getVirtualBase(const RecordDecl *RD) const
Returns a virtual base descriptor.
unsigned getFullSize() const
Returns the full size of the record, including records.
unsigned getNumFields() const
unsigned getNumVirtualBases() const
llvm::iterator_range< const_field_iter > fields() const
const Base * getBase(const RecordDecl *FD) const
Returns a base descriptor.
The JSON file list parser is used to communicate input to InstallAPI.
const FunctionProtoType * T
Describes a memory block created by an allocation site.
Describes a record field.