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: MCParsedAsmOperand()23 MCParsedAsmOperand() {} ~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