xref: /trunk/main/autodoc/source/parser/cpp/all_toks.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef ADC_CPP_ALL_TOKS_HXX
29 #define ADC_CPP_ALL_TOKS_HXX
30 
31 // USED SERVICES
32     // BASE CLASSES
33 #include "cpp_tok.hxx"
34     // COMPONENTS
35     // PARAMETERS
36 
37 namespace cpp {
38 
39 class Tok_Identifier : public cpp::Token
40 {
41   public:
42                         Tok_Identifier(
43                             const char *        i_sText ) : sText(i_sText) {}
44     virtual void        Trigger(
45                             TokenInterpreter &  io_rInterpreter ) const;
46     virtual INT16       TypeId() const;
47     virtual const char *
48                         Text() const;
49   private:
50     String              sText;
51 };
52 const INT16 Tid_Identifier = 1;
53 
54 /** == != <= >=  && || !
55 
56     new delete sizeof typeid
57     + - / %  ^ | << >>
58     . ->  ?
59     += -= *= /= %= &= |= ^= <<= >>=
60 */
61 class Tok_Operator : public cpp::Token
62 {
63   public:
64                         Tok_Operator(
65                             const char *        i_sText ) : sText(i_sText) {}
66     virtual void        Trigger(
67                             TokenInterpreter &  io_rInterpreter ) const;
68     virtual INT16       TypeId() const;
69     virtual const char *
70                         Text() const;
71   private:
72     String              sText;
73 };
74 const INT16 Tid_Operator = 2;
75 
76 
77 
78 #define DECL_TOKEN_CLASS(name,tid) \
79 class Tok_##name : public cpp::Token \
80 { public: \
81     virtual void        Trigger( \
82                             TokenInterpreter &  io_rInterpreter ) const; \
83     virtual INT16       TypeId() const; \
84     virtual const char * \
85                         Text() const; \
86 }; \
87 const INT16 Tid_##name = tid
88 
89 DECL_TOKEN_CLASS(operator,3);
90 DECL_TOKEN_CLASS(class,4);
91 DECL_TOKEN_CLASS(struct,5);
92 DECL_TOKEN_CLASS(union,6);
93 DECL_TOKEN_CLASS(enum,7);
94 DECL_TOKEN_CLASS(typedef,8);
95 DECL_TOKEN_CLASS(public,9);
96 DECL_TOKEN_CLASS(protected,10);
97 DECL_TOKEN_CLASS(private,11);
98 DECL_TOKEN_CLASS(template,12);
99 DECL_TOKEN_CLASS(virtual,13);
100 DECL_TOKEN_CLASS(friend,14);
101 DECL_TOKEN_CLASS(Tilde,15);
102 DECL_TOKEN_CLASS(const,16);
103 DECL_TOKEN_CLASS(volatile,17);
104 DECL_TOKEN_CLASS(extern,18);
105 DECL_TOKEN_CLASS(static,19);
106 DECL_TOKEN_CLASS(mutable,20);
107 DECL_TOKEN_CLASS(register,21);
108 DECL_TOKEN_CLASS(inline,22);
109 DECL_TOKEN_CLASS(explicit,23);
110 DECL_TOKEN_CLASS(namespace,24);
111 DECL_TOKEN_CLASS(using,25);
112 DECL_TOKEN_CLASS(throw,26);
113 DECL_TOKEN_CLASS(SwBracket_Left,27);
114 DECL_TOKEN_CLASS(SwBracket_Right,28);
115 DECL_TOKEN_CLASS(ArrayBracket_Left,29);
116 DECL_TOKEN_CLASS(ArrayBracket_Right,30);
117 DECL_TOKEN_CLASS(Bracket_Left,31);
118 DECL_TOKEN_CLASS(Bracket_Right,32);
119 DECL_TOKEN_CLASS(DoubleColon,33);
120 DECL_TOKEN_CLASS(Semicolon,34);
121 DECL_TOKEN_CLASS(Comma,35);
122 DECL_TOKEN_CLASS(Colon,36);
123 DECL_TOKEN_CLASS(Assign,37);
124 DECL_TOKEN_CLASS(Less,38);
125 DECL_TOKEN_CLASS(Greater,39);
126 DECL_TOKEN_CLASS(Asterix,40);
127 DECL_TOKEN_CLASS(AmpersAnd,41);
128 DECL_TOKEN_CLASS(Ellipse,42);
129 DECL_TOKEN_CLASS(typename,43);
130 
131 #undef DECL_TOKEN_CLASS
132 
133 #define DECL_TOKEN_CLASS_WITHTEXT(name,tid) \
134 class Tok_##name : public cpp::Token \
135 { public: \
136                         Tok_##name( \
137                             const char *        i_sText ) : sText(i_sText) {} \
138     virtual void        Trigger( \
139                             TokenInterpreter &  io_rInterpreter ) const; \
140     virtual INT16       TypeId() const; \
141     virtual const char * \
142                         Text() const; \
143   private: \
144     String              sText; \
145 }; \
146 const INT16 Tid_##name = tid
147 
148 
149 
150 DECL_TOKEN_CLASS_WITHTEXT(DefineName,44);
151 DECL_TOKEN_CLASS_WITHTEXT(MacroName,45);
152 DECL_TOKEN_CLASS_WITHTEXT(MacroParameter,46);
153 DECL_TOKEN_CLASS_WITHTEXT(PreProDefinition,47);
154 
155 /** char short int long float double wchar_t size_t
156 */
157 DECL_TOKEN_CLASS_WITHTEXT(BuiltInType, 48);
158 
159 /** signed unsigned
160 */
161 DECL_TOKEN_CLASS_WITHTEXT(TypeSpecializer, 49);
162 DECL_TOKEN_CLASS_WITHTEXT(Constant, 50);
163 
164 
165 
166 /** This token does nothing in C++ code. It is added by the
167     internal macro-replacer to mark the position, where a
168     define or macro becomes valid again, which was until then
169     invalid, because the text was a replacement of this macro.
170     ( Avoiding endless recursive macro replacement. )
171 */
172 class Tok_UnblockMacro : public ::TextToken
173 {
174   public:
175                         Tok_UnblockMacro(
176                             const char *        i_sMacroName ) : sMacroName(i_sMacroName) {}
177     virtual const char* Text() const;
178 
179     virtual void        DealOut(
180                             ::TokenDealer &     o_rDealer );
181   private:
182     String              sMacroName;
183 };
184 
185 
186 
187 #if 0 // just for viewing:
188 class Tok_TypeKey : public cpp::Token                  // file-><type-PE>
189 class Tok_Template : public cpp::Token                 // file
190 class Tok_Namespace : public cpp::Token                // file
191 class Tok_Bracket : public cpp::Token                  // ueberall
192 class Tok_Separator : public cpp::Token                // ueberall
193 
194 class Tok_Identifier : public cpp::Token               // ueberall
195 class Tok_NameSeparator : public cpp::Token            // Type, Name
196 class Tok_BuiltInType : public cpp::Token              // ueberall
197 class Tok_ConVol : public cpp::Token                   // class-><FuVa>
198 class Tok_StorageClass : public cpp::Token             // file-><type>,<FuVa>
199 class Tok_OperatorFunctionName : public cpp::Token     // class
200 
201 class Tok_Protection : public cpp::Token               // class
202 class Tok_Virtual : public cpp::Token                  // class
203 class Tok_Friend : public cpp::Token                   // class
204 class Tok_Tilde : public cpp::Token                    // class, expression
205 
206 class Tok_Ellipse : public cpp::Token                  // function-ParaList
207 class Tok_Assignment : public cpp::Token               // VariableDeclaraton, Function, Parameter
208 class Tok_Throw : public cpp::Token                    // function
209 class Tok_LessMore : public cpp::Token
210 class Tok_Operator : public cpp::Token                 // expression
211 
212 class Tok_Ignore : public cpp::Token
213 class Tok_ContextChanger : public cpp::Token
214 #endif // 0
215 
216 
217 }   // namespace cpp
218 
219 #endif
220