1 //===- DebugSubsection.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_CODEVIEW_MODULEDEBUGFRAGMENT_H 11 #define LLVM_DEBUGINFO_CODEVIEW_MODULEDEBUGFRAGMENT_H 12 13 #include "llvm/DebugInfo/CodeView/CodeView.h" 14 #include "llvm/Support/BinaryStreamWriter.h" 15 #include "llvm/Support/Casting.h" 16 17 namespace llvm { 18 namespace codeview { 19 20 class DebugSubsectionRef { 21 public: DebugSubsectionRef(DebugSubsectionKind Kind)22 explicit DebugSubsectionRef(DebugSubsectionKind Kind) : Kind(Kind) {} 23 virtual ~DebugSubsectionRef(); 24 classof(const DebugSubsectionRef * S)25 static bool classof(const DebugSubsectionRef *S) { return true; } 26 kind()27 DebugSubsectionKind kind() const { return Kind; } 28 29 protected: 30 DebugSubsectionKind Kind; 31 }; 32 33 class DebugSubsection { 34 public: DebugSubsection(DebugSubsectionKind Kind)35 explicit DebugSubsection(DebugSubsectionKind Kind) : Kind(Kind) {} 36 virtual ~DebugSubsection(); 37 classof(const DebugSubsection * S)38 static bool classof(const DebugSubsection *S) { return true; } 39 kind()40 DebugSubsectionKind kind() const { return Kind; } 41 42 virtual Error commit(BinaryStreamWriter &Writer) const = 0; 43 virtual uint32_t calculateSerializedSize() const = 0; 44 45 protected: 46 DebugSubsectionKind Kind; 47 }; 48 49 } // namespace codeview 50 } // namespace llvm 51 52 #endif // LLVM_DEBUGINFO_CODEVIEW_MODULEDEBUGFRAGMENT_H 53