~ubuntu-branches/ubuntu/feisty/clamav/feisty

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/include/llvm/MC/MCObjectStreamer.h

  • Committer: Bazaar Package Importer
  • Author(s): Kees Cook
  • Date: 2007-02-20 10:33:44 UTC
  • mto: This revision was merged to the branch mainline in revision 16.
  • Revision ID: james.westby@ubuntu.com-20070220103344-zgcu2psnx9d98fpa
Tags: upstream-0.90
ImportĀ upstreamĀ versionĀ 0.90

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//===- MCObjectStreamer.h - MCStreamer Object File Interface ----*- 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_MC_MCOBJECTSTREAMER_H
11
 
#define LLVM_MC_MCOBJECTSTREAMER_H
12
 
 
13
 
#include "llvm/MC/MCStreamer.h"
14
 
 
15
 
namespace llvm {
16
 
class MCAssembler;
17
 
class MCCodeEmitter;
18
 
class MCSectionData;
19
 
class MCExpr;
20
 
class MCFragment;
21
 
class MCDataFragment;
22
 
class TargetAsmBackend;
23
 
class raw_ostream;
24
 
 
25
 
/// \brief Streaming object file generation interface.
26
 
///
27
 
/// This class provides an implementation of the MCStreamer interface which is
28
 
/// suitable for use with the assembler backend. Specific object file formats
29
 
/// are expected to subclass this interface to implement directives specific
30
 
/// to that file format or custom semantics expected by the object writer
31
 
/// implementation.
32
 
class MCObjectStreamer : public MCStreamer {
33
 
  MCAssembler *Assembler;
34
 
  MCSectionData *CurSectionData;
35
 
 
36
 
protected:
37
 
  MCObjectStreamer(MCContext &Context, TargetAsmBackend &TAB,
38
 
                   raw_ostream &_OS, MCCodeEmitter *_Emitter);
39
 
  ~MCObjectStreamer();
40
 
 
41
 
  MCSectionData *getCurrentSectionData() const {
42
 
    return CurSectionData;
43
 
  }
44
 
 
45
 
  MCFragment *getCurrentFragment() const;
46
 
 
47
 
  /// Get a data fragment to write into, creating a new one if the current
48
 
  /// fragment is not a data fragment.
49
 
  MCDataFragment *getOrCreateDataFragment() const;
50
 
 
51
 
  const MCExpr *AddValueSymbols(const MCExpr *Value);
52
 
 
53
 
public:
54
 
  MCAssembler &getAssembler() { return *Assembler; }
55
 
 
56
 
  /// @name MCStreamer Interface
57
 
  /// @{
58
 
 
59
 
  virtual void SwitchSection(const MCSection *Section);
60
 
  virtual void Finish();
61
 
 
62
 
  /// @}
63
 
};
64
 
 
65
 
} // end namespace llvm
66
 
 
67
 
#endif