13#ifndef LLVM_CLANG_AST_INTERP_RECORD_H
14#define LLVM_CLANG_AST_INTERP_RECORD_H
55 const std::string
getName()
const;
61 unsigned getSize()
const {
return BaseSize; }
63 unsigned getFullSize()
const {
return BaseSize + VirtualSize; }
74 if (
const auto *CXXDecl = dyn_cast<CXXRecordDecl>(
Decl))
75 return CXXDecl->getDestructor();
80 llvm::iterator_range<const_field_iter>
fields()
const {
81 return llvm::make_range(Fields.begin(), Fields.end());
88 llvm::iterator_range<const_base_iter>
bases()
const {
89 return llvm::make_range(Bases.begin(), Bases.end());
100 return llvm::make_range(VirtualBases.begin(), VirtualBases.end());
106 void dump(llvm::raw_ostream &OS,
unsigned Indentation = 0,
107 unsigned Offset = 0)
const;
129 llvm::DenseMap<const RecordDecl *, const Base *> BaseMap;
131 llvm::DenseMap<const FieldDecl *, const Field *> FieldMap;
133 llvm::DenseMap<const RecordDecl *, Base *> VirtualBaseMap;
137 unsigned VirtualSize;
141 bool IsAnonymousUnion;
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
bool isAnonymousUnion() const
Checks if the record is an anonymous union.
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.
bool isUnnamedBitField() const