MC/AsmParser: Fix TokError() to accept a Twine.
[oota-llvm.git] / include / llvm / MC / MCParser / MCAsmParserExtension.h
1 //===-- llvm/MC/MCAsmParserExtension.h - Asm Parser Hooks -------*- 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_MCASMPARSEREXTENSION_H
11 #define LLVM_MC_MCASMPARSEREXTENSION_H
12
13 #include "llvm/MC/MCParser/MCAsmParser.h"
14 #include "llvm/Support/SMLoc.h"
15
16 namespace llvm {
17 class Twine;
18
19 /// \brief Generic interface for extending the MCAsmParser,
20 /// which is implemented by target and object file assembly parser
21 /// implementations.
22 class MCAsmParserExtension {
23   MCAsmParserExtension(const MCAsmParserExtension &);   // DO NOT IMPLEMENT
24   void operator=(const MCAsmParserExtension &);  // DO NOT IMPLEMENT
25
26   MCAsmParser *Parser;
27
28 protected:
29   MCAsmParserExtension();
30
31 public:
32   virtual ~MCAsmParserExtension();
33
34   /// \brief Initialize the extension for parsing using the given \arg
35   /// Parser. The extension should use the AsmParser interfaces to register its
36   /// parsing routines.
37   virtual void Initialize(MCAsmParser &Parser);
38
39   /// @name MCAsmParser Proxy Interfaces
40   /// @{
41
42   MCContext &getContext() { return getParser().getContext(); }
43   MCAsmLexer &getLexer() { return getParser().getLexer(); }
44   MCAsmParser &getParser() { return *Parser; }
45   SourceMgr &getSourceManager() { return getParser().getSourceManager(); }
46   MCStreamer &getStreamer() { return getParser().getStreamer(); }
47   void Warning(SMLoc L, const Twine &Msg) {
48     return getParser().Warning(L, Msg);
49   }
50   bool Error(SMLoc L, const Twine &Msg) {
51     return getParser().Error(L, Msg);
52   }
53   bool TokError(const Twine &Msg) {
54     return getParser().TokError(Msg);
55   }
56
57   const AsmToken &Lex() { return getParser().Lex(); }
58
59   const AsmToken &getTok() { return getParser().getTok(); }
60
61   /// @}
62 };
63
64 } // End llvm namespace
65
66 #endif