10b57cec5SDimitry Andric //===- NativeTypeBuiltin.h ---------------------------------------- C++ -*-===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric 
90b57cec5SDimitry Andric #ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEBUILTIN_H
100b57cec5SDimitry Andric #define LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEBUILTIN_H
110b57cec5SDimitry Andric 
120b57cec5SDimitry Andric #include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
130b57cec5SDimitry Andric 
140b57cec5SDimitry Andric #include "llvm/DebugInfo/PDB/PDBTypes.h"
150b57cec5SDimitry Andric 
160b57cec5SDimitry Andric namespace llvm {
170b57cec5SDimitry Andric namespace pdb {
180b57cec5SDimitry Andric 
190b57cec5SDimitry Andric class NativeSession;
200b57cec5SDimitry Andric 
210b57cec5SDimitry Andric class NativeTypeBuiltin : public NativeRawSymbol {
220b57cec5SDimitry Andric public:
230b57cec5SDimitry Andric   NativeTypeBuiltin(NativeSession &PDBSession, SymIndexId Id,
240b57cec5SDimitry Andric                     codeview::ModifierOptions Mods, PDB_BuiltinType T,
250b57cec5SDimitry Andric                     uint64_t L);
260b57cec5SDimitry Andric   ~NativeTypeBuiltin() override;
270b57cec5SDimitry Andric 
280b57cec5SDimitry Andric   void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
290b57cec5SDimitry Andric             PdbSymbolIdField RecurseIdFields) const override;
300b57cec5SDimitry Andric 
310b57cec5SDimitry Andric   PDB_SymType getSymTag() const override;
320b57cec5SDimitry Andric 
330b57cec5SDimitry Andric   PDB_BuiltinType getBuiltinType() const override;
340b57cec5SDimitry Andric   bool isConstType() const override;
350b57cec5SDimitry Andric   uint64_t getLength() const override;
360b57cec5SDimitry Andric   bool isUnalignedType() const override;
370b57cec5SDimitry Andric   bool isVolatileType() const override;
380b57cec5SDimitry Andric 
390b57cec5SDimitry Andric protected:
400b57cec5SDimitry Andric   NativeSession &Session;
410b57cec5SDimitry Andric   codeview::ModifierOptions Mods;
420b57cec5SDimitry Andric   PDB_BuiltinType Type;
430b57cec5SDimitry Andric   uint64_t Length;
440b57cec5SDimitry Andric };
450b57cec5SDimitry Andric 
460b57cec5SDimitry Andric } // namespace pdb
470b57cec5SDimitry Andric } // namespace llvm
480b57cec5SDimitry Andric 
490b57cec5SDimitry Andric #endif
50