summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/Interp/Record.h
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/AST/Interp/Record.h')
-rw-r--r--clang/lib/AST/Interp/Record.h121
1 files changed, 0 insertions, 121 deletions
diff --git a/clang/lib/AST/Interp/Record.h b/clang/lib/AST/Interp/Record.h
deleted file mode 100644
index 351cf677746..00000000000
--- a/clang/lib/AST/Interp/Record.h
+++ /dev/null
@@ -1,121 +0,0 @@
-//===--- Record.h - struct and class metadata for the VM --------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// A record is part of a program to describe the layout and methods of a struct.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_AST_INTERP_RECORD_H
-#define LLVM_CLANG_AST_INTERP_RECORD_H
-
-#include "Pointer.h"
-
-namespace clang {
-namespace interp {
-class Program;
-
-/// Structure/Class descriptor.
-class Record {
-public:
- /// Describes a record field.
- struct Field {
- const FieldDecl *Decl;
- unsigned Offset;
- Descriptor *Desc;
- };
-
- /// Describes a base class.
- struct Base {
- const RecordDecl *Decl;
- unsigned Offset;
- Descriptor *Desc;
- Record *Record;
- };
-
- /// Mapping from identifiers to field descriptors.
- using FieldList = llvm::SmallVector<Field, 8>;
- /// Mapping from identifiers to base classes.
- using BaseList = llvm::SmallVector<Base, 8>;
- /// List of virtual base classes.
- using VirtualBaseList = llvm::SmallVector<Base, 2>;
-
-public:
- /// Returns the underlying declaration.
- const RecordDecl *getDecl() const { return Decl; }
- /// Checks if the record is a union.
- bool isUnion() const { return getDecl()->isUnion(); }
- /// Returns the size of the record.
- unsigned getSize() const { return BaseSize; }
- /// Returns the full size of the record, including records.
- unsigned getFullSize() const { return BaseSize + VirtualSize; }
- /// Returns a field.
- const Field *getField(const FieldDecl *FD) const;
- /// Returns a base descriptor.
- const Base *getBase(const RecordDecl *FD) const;
- /// Returns a virtual base descriptor.
- const Base *getVirtualBase(const RecordDecl *RD) const;
-
- using const_field_iter = FieldList::const_iterator;
- llvm::iterator_range<const_field_iter> fields() const {
- return llvm::make_range(Fields.begin(), Fields.end());
- }
-
- unsigned getNumFields() { return Fields.size(); }
- Field *getField(unsigned I) { return &Fields[I]; }
-
- using const_base_iter = BaseList::const_iterator;
- llvm::iterator_range<const_base_iter> bases() const {
- return llvm::make_range(Bases.begin(), Bases.end());
- }
-
- unsigned getNumBases() { return Bases.size(); }
- Base *getBase(unsigned I) { return &Bases[I]; }
-
- using const_virtual_iter = VirtualBaseList::const_iterator;
- llvm::iterator_range<const_virtual_iter> virtual_bases() const {
- return llvm::make_range(VirtualBases.begin(), VirtualBases.end());
- }
-
- unsigned getNumVirtualBases() { return VirtualBases.size(); }
- Base *getVirtualBase(unsigned I) { return &VirtualBases[I]; }
-
-private:
- /// Constructor used by Program to create record descriptors.
- Record(const RecordDecl *, BaseList &&Bases, FieldList &&Fields,
- VirtualBaseList &&VirtualBases, unsigned VirtualSize,
- unsigned BaseSize);
-
-private:
- friend class Program;
-
- /// Original declaration.
- const RecordDecl *Decl;
- /// List of all base classes.
- BaseList Bases;
- /// List of all the fields in the record.
- FieldList Fields;
- /// List o fall virtual bases.
- VirtualBaseList VirtualBases;
-
- /// Mapping from declarations to bases.
- llvm::DenseMap<const RecordDecl *, Base *> BaseMap;
- /// Mapping from field identifiers to descriptors.
- llvm::DenseMap<const FieldDecl *, Field *> FieldMap;
- /// Mapping from declarations to virtual bases.
- llvm::DenseMap<const RecordDecl *, Base *> VirtualBaseMap;
- /// Mapping from
- /// Size of the structure.
- unsigned BaseSize;
- /// Size of all virtual bases.
- unsigned VirtualSize;
-};
-
-} // namespace interp
-} // namespace clang
-
-#endif
OpenPOWER on IntegriCloud