Home | History | Annotate | Download | only in MCParser
      1 //===-- llvm/MC/MCParsedAsmOperand.h - Asm Parser Operand -------*- 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_MCASMOPERAND_H
     11 #define LLVM_MC_MCASMOPERAND_H
     12 
     13 namespace llvm {
     14 class SMLoc;
     15 class raw_ostream;
     16 
     17 /// MCParsedAsmOperand - This abstract class represents a source-level assembly
     18 /// instruction operand.  It should be subclassed by target-specific code.  This
     19 /// base class is used by target-independent clients and is the interface
     20 /// between parsing an asm instruction and recognizing it.
     21 class MCParsedAsmOperand {
     22 public:
     23   MCParsedAsmOperand() {}
     24   virtual ~MCParsedAsmOperand() {}
     25 
     26   /// getStartLoc - Get the location of the first token of this operand.
     27   virtual SMLoc getStartLoc() const = 0;
     28   /// getEndLoc - Get the location of the last token of this operand.
     29   virtual SMLoc getEndLoc() const = 0;
     30 
     31   /// print - Print a debug representation of the operand to the given stream.
     32   virtual void print(raw_ostream &OS) const = 0;
     33   /// dump - Print to the debug stream.
     34   virtual void dump() const;
     35 };
     36 
     37 //===----------------------------------------------------------------------===//
     38 // Debugging Support
     39 
     40 inline raw_ostream& operator<<(raw_ostream &OS, const MCParsedAsmOperand &MO) {
     41   MO.print(OS);
     42   return OS;
     43 }
     44 
     45 } // end namespace llvm.
     46 
     47 #endif
     48