| //===- lib/MC/MCNullStreamer.cpp - Dummy Streamer Implementation ----------===// | 
 | // | 
 | //                     The LLVM Compiler Infrastructure | 
 | // | 
 | // This file is distributed under the University of Illinois Open Source | 
 | // License. See LICENSE.TXT for details. | 
 | // | 
 | //===----------------------------------------------------------------------===// | 
 |  | 
 | #include "llvm/MC/MCStreamer.h" | 
 |  | 
 | #include "llvm/MC/MCContext.h" | 
 | #include "llvm/MC/MCInst.h" | 
 | #include "llvm/MC/MCSectionMachO.h" | 
 | #include "llvm/MC/MCSymbol.h" | 
 |  | 
 | using namespace llvm; | 
 |  | 
 | namespace { | 
 |  | 
 |   class MCNullStreamer : public MCStreamer { | 
 |   public: | 
 |     MCNullStreamer(MCContext &Context) : MCStreamer(Context) {} | 
 |  | 
 |     /// @name MCStreamer Interface | 
 |     /// @{ | 
 |  | 
 |     virtual void SwitchSection(const MCSection *Section) { | 
 |       CurSection = Section; | 
 |     } | 
 |  | 
 |     virtual void EmitLabel(MCSymbol *Symbol) { | 
 |       assert(Symbol->isUndefined() && "Cannot define a symbol twice!"); | 
 |       assert(CurSection && "Cannot emit before setting section!"); | 
 |       Symbol->setSection(*CurSection); | 
 |     } | 
 |  | 
 |     virtual void EmitAssemblerFlag(MCAssemblerFlag Flag) {} | 
 |  | 
 |     virtual void EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) {} | 
 |  | 
 |     virtual void EmitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute){} | 
 |  | 
 |     virtual void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) {} | 
 |  | 
 |     virtual void BeginCOFFSymbolDef(const MCSymbol *Symbol) {} | 
 |     virtual void EmitCOFFSymbolStorageClass(int StorageClass) {} | 
 |     virtual void EmitCOFFSymbolType(int Type) {} | 
 |     virtual void EndCOFFSymbolDef() {} | 
 |  | 
 |     virtual void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) {} | 
 |     virtual void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size, | 
 |                                   unsigned ByteAlignment) {} | 
 |     virtual void EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size) {} | 
 |  | 
 |     virtual void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = 0, | 
 |                               unsigned Size = 0, unsigned ByteAlignment = 0) {} | 
 |  | 
 |     virtual void EmitBytes(StringRef Data, unsigned AddrSpace) {} | 
 |  | 
 |     virtual void EmitValue(const MCExpr *Value, unsigned Size, | 
 |                            unsigned AddrSpace) {} | 
 |     virtual void EmitGPRel32Value(const MCExpr *Value) {} | 
 |     virtual void EmitValueToAlignment(unsigned ByteAlignment, int64_t Value = 0, | 
 |                                       unsigned ValueSize = 1, | 
 |                                       unsigned MaxBytesToEmit = 0) {} | 
 |  | 
 |     virtual void EmitCodeAlignment(unsigned ByteAlignment, | 
 |                                    unsigned MaxBytesToEmit = 0) {} | 
 |  | 
 |     virtual void EmitValueToOffset(const MCExpr *Offset, | 
 |                                    unsigned char Value = 0) {} | 
 |      | 
 |     virtual void EmitFileDirective(StringRef Filename) {} | 
 |     virtual void EmitDwarfFileDirective(unsigned FileNo,StringRef Filename) {} | 
 |     virtual void EmitInstruction(const MCInst &Inst) {} | 
 |  | 
 |     virtual void Finish() {} | 
 |      | 
 |     /// @} | 
 |   }; | 
 |  | 
 | } | 
 |      | 
 | MCStreamer *llvm::createNullStreamer(MCContext &Context) { | 
 |   return new MCNullStreamer(Context); | 
 | } |