summaryrefslogtreecommitdiff
path: root/include/llvm/MC/MCObjectStreamer.h
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-06-16 20:04:22 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-06-16 20:04:22 +0000
commit8dc68ab931e0f0a7c5caf9cd341b2ec855733863 (patch)
tree958d7d2e5261254d929186a30e4424b87eb913b3 /include/llvm/MC/MCObjectStreamer.h
parent4c470956657366ead4b03f9cefa9034eaec5b71d (diff)
downloadllvm-8dc68ab931e0f0a7c5caf9cd341b2ec855733863.tar.gz
llvm-8dc68ab931e0f0a7c5caf9cd341b2ec855733863.tar.bz2
llvm-8dc68ab931e0f0a7c5caf9cd341b2ec855733863.tar.xz
MC: Factor out an MCObjectStreamer class, which will be shared by the concrete
object file format writers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106140 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/MC/MCObjectStreamer.h')
-rw-r--r--include/llvm/MC/MCObjectStreamer.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/include/llvm/MC/MCObjectStreamer.h b/include/llvm/MC/MCObjectStreamer.h
new file mode 100644
index 0000000000..8a993756f4
--- /dev/null
+++ b/include/llvm/MC/MCObjectStreamer.h
@@ -0,0 +1,43 @@
+//===- MCObjectStreamer.h - MCStreamer Object File Interface ----*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MC_MCOBJECTSTREAMER_H
+#define LLVM_MC_MCOBJECTSTREAMER_H
+
+#include "llvm/MC/MCStreamer.h"
+
+namespace llvm {
+class MCAssembler;
+class MCCodeEmitter;
+class MCSectionData;
+class TargetAsmBackend;
+class raw_ostream;
+
+/// \brief Streaming object file generation interface.
+///
+/// This class provides an implementation of the MCStreamer interface which is
+/// suitable for use with the assembler backend. Specific object file formats
+/// are expected to subclass this interface to implement directives specific
+/// to that file format or custom semantics expected by the object writer
+/// implementation.
+class MCObjectStreamer : public MCStreamer {
+ MCAssembler *Assembler;
+
+protected:
+ MCObjectStreamer(MCContext &Context, TargetAsmBackend &TAB,
+ raw_ostream &_OS, MCCodeEmitter *_Emitter);
+ ~MCObjectStreamer();
+
+public:
+ MCAssembler &getAssembler() { return *Assembler; }
+};
+
+} // end namespace llvm
+
+#endif