]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/include/llvm/DebugInfo/CodeView/DebugSubsection.h
Merge llvm, clang, lld, lldb, compiler-rt and libc++ r304222, and update
[FreeBSD/FreeBSD.git] / contrib / llvm / include / llvm / DebugInfo / CodeView / DebugSubsection.h
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:
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
29 protected:
30   DebugSubsectionKind Kind;
31 };
32
33 class DebugSubsection {
34 public:
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
45 protected:
46   DebugSubsectionKind Kind;
47 };
48
49 } // namespace codeview
50 } // namespace llvm
51
52 #endif // LLVM_DEBUGINFO_CODEVIEW_MODULEDEBUGFRAGMENT_H