1//===- NativeTypeVTShape.h - info about virtual table shape ------*- C++-*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEVTSHAPE_H
10#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEVTSHAPE_H
11
12#include "llvm/ADT/Optional.h"
13#include "llvm/DebugInfo/CodeView/CodeView.h"
14#include "llvm/DebugInfo/CodeView/TypeRecord.h"
15#include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
16#include "llvm/DebugInfo/PDB/Native/NativeSession.h"
17
18namespace llvm {
19namespace pdb {
20
21class NativeTypeVTShape : public NativeRawSymbol {
22public:
23  // Create a pointer record for a non-simple type.
24  NativeTypeVTShape(NativeSession &Session, SymIndexId Id,
25                    codeview::TypeIndex TI, codeview::VFTableShapeRecord SR);
26
27  ~NativeTypeVTShape() override;
28
29  void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
30            PdbSymbolIdField RecurseIdFields) const override;
31
32  bool isConstType() const override;
33  bool isVolatileType() const override;
34  bool isUnalignedType() const override;
35  uint32_t getCount() const override;
36
37protected:
38  codeview::TypeIndex TI;
39  codeview::VFTableShapeRecord Record;
40};
41
42} // namespace pdb
43} // namespace llvm
44
45#endif // LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEVTSHAPE_H