Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:43:45

0001 //===- NativeTypeEnum.h - info about enum type ------------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 
0009 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEENUM_H
0010 #define LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEENUM_H
0011 
0012 #include "llvm/DebugInfo/CodeView/TypeIndex.h"
0013 #include "llvm/DebugInfo/CodeView/TypeRecord.h"
0014 #include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
0015 #include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
0016 #include "llvm/DebugInfo/PDB/PDBTypes.h"
0017 
0018 namespace llvm {
0019 class raw_ostream;
0020 namespace pdb {
0021 
0022 class NativeTypeBuiltin;
0023 
0024 class NativeTypeEnum : public NativeRawSymbol {
0025 public:
0026   NativeTypeEnum(NativeSession &Session, SymIndexId Id, codeview::TypeIndex TI,
0027                  codeview::EnumRecord Record);
0028 
0029   NativeTypeEnum(NativeSession &Session, SymIndexId Id,
0030                  NativeTypeEnum &UnmodifiedType,
0031                  codeview::ModifierRecord Modifier);
0032   ~NativeTypeEnum() override;
0033 
0034   void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
0035             PdbSymbolIdField RecurseIdFields) const override;
0036 
0037   std::unique_ptr<IPDBEnumSymbols>
0038   findChildren(PDB_SymType Type) const override;
0039 
0040   PDB_BuiltinType getBuiltinType() const override;
0041   PDB_SymType getSymTag() const override;
0042   SymIndexId getUnmodifiedTypeId() const override;
0043   bool hasConstructor() const override;
0044   bool hasAssignmentOperator() const override;
0045   bool hasCastOperator() const override;
0046   uint64_t getLength() const override;
0047   std::string getName() const override;
0048   bool isConstType() const override;
0049   bool isVolatileType() const override;
0050   bool isUnalignedType() const override;
0051   bool isNested() const override;
0052   bool hasOverloadedOperator() const override;
0053   bool hasNestedTypes() const override;
0054   bool isIntrinsic() const override;
0055   bool isPacked() const override;
0056   bool isScoped() const override;
0057   SymIndexId getTypeId() const override;
0058   bool isRefUdt() const override;
0059   bool isValueUdt() const override;
0060   bool isInterfaceUdt() const override;
0061 
0062   const NativeTypeBuiltin &getUnderlyingBuiltinType() const;
0063   const codeview::EnumRecord &getEnumRecord() const { return *Record; }
0064 
0065 protected:
0066   codeview::TypeIndex Index;
0067   std::optional<codeview::EnumRecord> Record;
0068   NativeTypeEnum *UnmodifiedType = nullptr;
0069   std::optional<codeview::ModifierRecord> Modifiers;
0070 };
0071 
0072 } // namespace pdb
0073 } // namespace llvm
0074 
0075 #endif // LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEENUM_H