diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-06-16 20:04:22 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-06-16 20:04:22 +0000 |
commit | 8dc68ab931e0f0a7c5caf9cd341b2ec855733863 (patch) | |
tree | 958d7d2e5261254d929186a30e4424b87eb913b3 /include/llvm/MC | |
parent | 4c470956657366ead4b03f9cefa9034eaec5b71d (diff) | |
download | external_llvm-8dc68ab931e0f0a7c5caf9cd341b2ec855733863.zip external_llvm-8dc68ab931e0f0a7c5caf9cd341b2ec855733863.tar.gz external_llvm-8dc68ab931e0f0a7c5caf9cd341b2ec855733863.tar.bz2 |
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')
-rw-r--r-- | include/llvm/MC/MCObjectStreamer.h | 43 |
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 0000000..8a99375 --- /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 |