1//===- NativeTypeBuiltin.h ---------------------------------------- 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_NATIVETYPEBUILTIN_H
10#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEBUILTIN_H
11
12#include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
13
14#include "llvm/DebugInfo/PDB/PDBTypes.h"
15
16namespace llvm {
17namespace pdb {
18
19class NativeSession;
20
21class NativeTypeBuiltin : public NativeRawSymbol {
22public:
23  NativeTypeBuiltin(NativeSession &PDBSession, SymIndexId Id,
24                    codeview::ModifierOptions Mods, PDB_BuiltinType T,
25                    uint64_t L);
26  ~NativeTypeBuiltin() override;
27
28  void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
29            PdbSymbolIdField RecurseIdFields) const override;
30
31  PDB_SymType getSymTag() const override;
32
33  PDB_BuiltinType getBuiltinType() const override;
34  bool isConstType() const override;
35  uint64_t getLength() const override;
36  bool isUnalignedType() const override;
37  bool isVolatileType() const override;
38
39protected:
40  NativeSession &Session;
41  codeview::ModifierOptions Mods;
42  PDB_BuiltinType Type;
43  uint64_t Length;
44};
45
46} // namespace pdb
47} // namespace llvm
48
49#endif
50