1 //===- NativeTypeArray.h ------------------------------------------ C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEARRAY_H
11 #define LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEARRAY_H
12 
13 #include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
14 
15 #include "llvm/DebugInfo/CodeView/TypeRecord.h"
16 #include "llvm/DebugInfo/PDB/PDBTypes.h"
17 
18 namespace llvm {
19 namespace pdb {
20 
21 class NativeSession;
22 
23 class NativeTypeArray : public NativeRawSymbol {
24 public:
25   NativeTypeArray(NativeSession &Session, SymIndexId Id, codeview::TypeIndex TI,
26                   codeview::ArrayRecord Record);
27   ~NativeTypeArray() override;
28 
29   void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
30             PdbSymbolIdField RecurseIdFields) const override;
31 
32   SymIndexId getArrayIndexTypeId() const override;
33 
34   bool isConstType() const override;
35   bool isUnalignedType() const override;
36   bool isVolatileType() const override;
37 
38   uint32_t getCount() const override;
39   SymIndexId getTypeId() const override;
40   uint64_t getLength() const override;
41 
42 protected:
43   codeview::ArrayRecord Record;
44   codeview::TypeIndex Index;
45 };
46 
47 } // namespace pdb
48 } // namespace llvm
49 
50 #endif
51