Line data Source code
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 43 : class DebugSubsectionRef {
21 : public:
22 2124 : explicit DebugSubsectionRef(DebugSubsectionKind Kind) : Kind(Kind) {}
23 : virtual ~DebugSubsectionRef();
24 :
25 : static bool classof(const DebugSubsectionRef *S) { return true; }
26 :
27 0 : DebugSubsectionKind kind() const { return Kind; }
28 :
29 : protected:
30 : DebugSubsectionKind Kind;
31 : };
32 :
33 : class DebugSubsection {
34 : public:
35 764 : explicit DebugSubsection(DebugSubsectionKind Kind) : Kind(Kind) {}
36 : virtual ~DebugSubsection();
37 :
38 : static bool classof(const DebugSubsection *S) { return true; }
39 :
40 0 : 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
|