1343171Sdim//===- NativeTypeVTShape.h - info about virtual table shape ------*- C++-*-===//
2343171Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6343171Sdim//
7343171Sdim//===----------------------------------------------------------------------===//
8343171Sdim
9343171Sdim#ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEVTSHAPE_H
10343171Sdim#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEVTSHAPE_H
11343171Sdim
12343171Sdim#include "llvm/ADT/Optional.h"
13343171Sdim#include "llvm/DebugInfo/CodeView/CodeView.h"
14343171Sdim#include "llvm/DebugInfo/CodeView/TypeRecord.h"
15343171Sdim#include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
16343171Sdim#include "llvm/DebugInfo/PDB/Native/NativeSession.h"
17343171Sdim
18343171Sdimnamespace llvm {
19343171Sdimnamespace pdb {
20343171Sdim
21343171Sdimclass NativeTypeVTShape : public NativeRawSymbol {
22343171Sdimpublic:
23343171Sdim  // Create a pointer record for a non-simple type.
24343171Sdim  NativeTypeVTShape(NativeSession &Session, SymIndexId Id,
25343171Sdim                    codeview::TypeIndex TI, codeview::VFTableShapeRecord SR);
26343171Sdim
27343171Sdim  ~NativeTypeVTShape() override;
28343171Sdim
29343171Sdim  void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
30343171Sdim            PdbSymbolIdField RecurseIdFields) const override;
31343171Sdim
32343171Sdim  bool isConstType() const override;
33343171Sdim  bool isVolatileType() const override;
34343171Sdim  bool isUnalignedType() const override;
35343171Sdim  uint32_t getCount() const override;
36343171Sdim
37343171Sdimprotected:
38343171Sdim  codeview::TypeIndex TI;
39343171Sdim  codeview::VFTableShapeRecord Record;
40343171Sdim};
41343171Sdim
42343171Sdim} // namespace pdb
43343171Sdim} // namespace llvm
44343171Sdim
45343171Sdim#endif // LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEVTSHAPE_H