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