1#ifndef INC_ANTLRException_hpp__
2#define INC_ANTLRException_hpp__
3
4/* ANTLR Translator Generator
5 * Project led by Terence Parr at http://www.jGuru.com
6 * Software rights: http://www.antlr.org/license.html
7 *
8 * $Id: //depot/code/org.antlr/release/antlr-2.7.7/lib/cpp/antlr/ANTLRException.hpp#2 $
9 */
10
11#include <antlr/config.hpp>
12#include <string>
13
14#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
15namespace antlr {
16#endif
17
18class ANTLR_API ANTLRException
19{
20public:
21	/// Create ANTLR base exception without error message
22	ANTLRException() : text("")
23	{
24	}
25	/// Create ANTLR base exception with error message
26	ANTLRException(const ANTLR_USE_NAMESPACE(std)string& s)
27	: text(s)
28	{
29	}
30	virtual ~ANTLRException() throw()
31	{
32	}
33
34	/** Return complete error message with line/column number info (if present)
35	 * @note for your own exceptions override this one. Call getMessage from
36	 * here to get the 'clean' error message stored in the text attribute.
37	 */
38	virtual ANTLR_USE_NAMESPACE(std)string toString() const
39	{
40		return text;
41	}
42
43	/** Return error message without additional info (if present)
44	 * @note when making your own exceptions classes override toString
45	 * and call in toString getMessage which relays the text attribute
46	 * from here.
47	 */
48	virtual ANTLR_USE_NAMESPACE(std)string getMessage() const
49	{
50		return text;
51	}
52private:
53	ANTLR_USE_NAMESPACE(std)string text;
54};
55#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
56}
57#endif
58
59#endif //INC_ANTLRException_hpp__
60