]> git.saurik.com Git - apple/security.git/blob - Security/libsecurity_codesigning/antlr2/antlr/Token.hpp
Security-57031.40.6.tar.gz
[apple/security.git] / Security / libsecurity_codesigning / antlr2 / antlr / Token.hpp
1 #ifndef INC_Token_hpp__
2 #define INC_Token_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/Token.hpp#2 $
9 */
10
11 #include <antlr/config.hpp>
12 #include <antlr/TokenRefCount.hpp>
13 #include <string>
14
15 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
16 namespace antlr {
17 #endif
18
19 struct TokenRef;
20
21 /** A token is minimally a token type. Subclasses can add the text matched
22 * for the token and line info.
23 */
24 class ANTLR_API Token
25 {
26 public:
27 // constants
28 #ifndef NO_STATIC_CONSTS
29 static const int MIN_USER_TYPE = 4;
30 static const int NULL_TREE_LOOKAHEAD = 3;
31 static const int INVALID_TYPE = 0;
32 static const int EOF_TYPE = 1;
33 static const int SKIP = -1;
34 #else
35 enum {
36 MIN_USER_TYPE = 4,
37 NULL_TREE_LOOKAHEAD = 3,
38 INVALID_TYPE = 0,
39 EOF_TYPE = 1,
40 SKIP = -1
41 };
42 #endif
43
44 Token()
45 : ref(0)
46 , type(INVALID_TYPE)
47 {
48 }
49 Token(int t)
50 : ref(0)
51 , type(t)
52 {
53 }
54 Token(int t, const ANTLR_USE_NAMESPACE(std)string& txt)
55 : ref(0)
56 , type(t)
57 {
58 setText(txt);
59 }
60 virtual ~Token()
61 {
62 }
63
64 virtual int getColumn() const;
65 virtual int getLine() const;
66 virtual ANTLR_USE_NAMESPACE(std)string getText() const;
67 virtual const ANTLR_USE_NAMESPACE(std)string& getFilename() const;
68 virtual int getType() const;
69
70 virtual void setColumn(int c);
71
72 virtual void setLine(int l);
73 virtual void setText(const ANTLR_USE_NAMESPACE(std)string& t);
74 virtual void setType(int t);
75
76 virtual void setFilename( const std::string& file );
77
78 virtual ANTLR_USE_NAMESPACE(std)string toString() const;
79
80 private:
81 friend struct TokenRef;
82 TokenRef* ref;
83
84 int type; ///< the type of the token
85
86 Token(RefToken other);
87 Token& operator=(const Token& other);
88 Token& operator=(RefToken other);
89
90 Token(const Token&);
91 };
92
93 extern ANTLR_API RefToken nullToken;
94
95 #ifdef NEEDS_OPERATOR_LESS_THAN
96 // RK: Added after 2.7.2 previously it was undefined.
97 // AL: what to return if l and/or r point to nullToken???
98 inline bool operator<( RefToken l, RefToken r )
99 {
100 return nullToken == l ? ( nullToken == r ? false : true ) : l->getType() < r->getType();
101 }
102 #endif
103
104 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
105 }
106 #endif
107
108 #endif //INC_Token_hpp__