1#ifndef INC_CommonAST_hpp__
2#define INC_CommonAST_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/CommonAST.hpp#2 $
9 */
10
11#include <antlr/config.hpp>
12#include <antlr/BaseAST.hpp>
13
14#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
15namespace antlr {
16#endif
17
18class ANTLR_API CommonAST : public BaseAST {
19public:
20	CommonAST()
21	: BaseAST()
22	, ttype( Token::INVALID_TYPE )
23	, text()
24	{
25	}
26
27	CommonAST( RefToken t )
28	: BaseAST()
29	, ttype( t->getType() )
30	, text( t->getText() )
31	{
32	}
33
34	CommonAST( const CommonAST& other )
35	: BaseAST(other)
36	, ttype(other.ttype)
37	, text(other.text)
38	{
39	}
40
41	virtual ~CommonAST()
42	{
43	}
44
45	virtual const char* typeName( void ) const
46	{
47		return CommonAST::TYPE_NAME;
48	}
49
50	/// Clone this AST node.
51	virtual RefAST clone( void ) const
52	{
53		CommonAST *ast = new CommonAST( *this );
54		return RefAST(ast);
55	}
56
57	virtual ANTLR_USE_NAMESPACE(std)string getText() const
58	{
59		return text;
60	}
61	virtual int getType() const
62	{
63		return ttype;
64	}
65
66	virtual void initialize( int t, const ANTLR_USE_NAMESPACE(std)string& txt )
67	{
68		setType(t);
69		setText(txt);
70	}
71
72	virtual void initialize( RefAST t )
73	{
74		setType(t->getType());
75		setText(t->getText());
76	}
77	virtual void initialize( RefToken t )
78	{
79		setType(t->getType());
80		setText(t->getText());
81	}
82
83#ifdef ANTLR_SUPPORT_XML
84	virtual void initialize( ANTLR_USE_NAMESPACE(std)istream& in );
85#endif
86
87	virtual void setText( const ANTLR_USE_NAMESPACE(std)string& txt )
88	{
89		text = txt;
90	}
91	virtual void setType( int type )
92	{
93		ttype = type;
94	}
95
96	static RefAST factory();
97
98	static const char* const TYPE_NAME;
99protected:
100	int ttype;
101	ANTLR_USE_NAMESPACE(std)string text;
102};
103
104typedef ASTRefCount<CommonAST> RefCommonAST;
105
106#ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
107}
108#endif
109
110#endif //INC_CommonAST_hpp__
111