NativeTypeVTShape.h revision 343171
1132718Skan//===- NativeTypeVTShape.h - info about virtual table shape ------*- C++-*-===//
2169689Skan//
3132718Skan//                     The LLVM Compiler Infrastructure
4132718Skan//
5132718Skan// This file is distributed under the University of Illinois Open Source
6132718Skan// License. See LICENSE.TXT for details.
7132718Skan//
8132718Skan//===----------------------------------------------------------------------===//
9132718Skan
10132718Skan#ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEVTSHAPE_H
11132718Skan#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEVTSHAPE_H
12132718Skan
13132718Skan#include "llvm/ADT/Optional.h"
14132718Skan#include "llvm/DebugInfo/CodeView/CodeView.h"
15132718Skan#include "llvm/DebugInfo/CodeView/TypeRecord.h"
16132718Skan#include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
17132718Skan#include "llvm/DebugInfo/PDB/Native/NativeSession.h"
18169689Skan
19169689Skannamespace llvm {
20132718Skannamespace pdb {
21132718Skan
22132718Skanclass NativeTypeVTShape : public NativeRawSymbol {
23132718Skanpublic:
24132718Skan  // Create a pointer record for a non-simple type.
25132718Skan  NativeTypeVTShape(NativeSession &Session, SymIndexId Id,
26132718Skan                    codeview::TypeIndex TI, codeview::VFTableShapeRecord SR);
27169689Skan
28132718Skan  ~NativeTypeVTShape() override;
29132718Skan
30132718Skan  void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
31132718Skan            PdbSymbolIdField RecurseIdFields) const override;
32132718Skan
33169689Skan  bool isConstType() const override;
34132718Skan  bool isVolatileType() const override;
35132718Skan  bool isUnalignedType() const override;
36169689Skan  uint32_t getCount() const override;
37132718Skan
38132718Skanprotected:
39132718Skan  codeview::TypeIndex TI;
40132718Skan  codeview::VFTableShapeRecord Record;
41132718Skan};
42132718Skan
43132718Skan} // namespace pdb
44132718Skan} // namespace llvm
45132718Skan
46132718Skan#endif // LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEVTSHAPE_H