1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef ADC_CPP_TOKINTPR_HXX
25*b1cdbd2cSJim Jagielski #define ADC_CPP_TOKINTPR_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski // USED SERVICES
30*b1cdbd2cSJim Jagielski 	// BASE CLASSES
31*b1cdbd2cSJim Jagielski #include <all_toks.hxx>
32*b1cdbd2cSJim Jagielski 	// COMPONENTS
33*b1cdbd2cSJim Jagielski 	// PARAMETERS
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski namespace cpp {
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski #define DECL_TOK_HANDLER(token) \
40*b1cdbd2cSJim Jagielski 	void				Hdl_##token( \
41*b1cdbd2cSJim Jagielski 							const Tok_##token & i_rTok ) { Call_Handler(i_rTok); }
42*b1cdbd2cSJim Jagielski 
43*b1cdbd2cSJim Jagielski class TokenInterpreter
44*b1cdbd2cSJim Jagielski {
45*b1cdbd2cSJim Jagielski   public:
~TokenInterpreter()46*b1cdbd2cSJim Jagielski 	virtual				~TokenInterpreter() {}
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Identifier)
49*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Operator)
50*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(operator)
51*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(class)
52*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(struct)
53*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(union)
54*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(enum)
55*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(typedef)
56*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(public)
57*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(protected)
58*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(private)
59*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(template)
60*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(virtual)
61*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(friend)
62*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Tilde)
63*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(const)
64*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(volatile)
65*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(extern)
66*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(static)
67*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(mutable)
68*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(register)
69*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(inline)
70*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(explicit)
71*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(namespace)
72*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(using)
73*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(throw)
74*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(SwBracket_Left)
75*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(SwBracket_Right)
76*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(ArrayBracket_Left)
77*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(ArrayBracket_Right)
78*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Bracket_Left)
79*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Bracket_Right)
80*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(DoubleColon)
81*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Semicolon)
82*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Comma)
83*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Colon)
84*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Assign)
85*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Less)
86*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Greater)
87*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Asterix)
88*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(AmpersAnd)
89*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Ellipse)
90*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(typename)
91*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(DefineName)
92*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(MacroName)
93*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(MacroParameter)
94*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(PreProDefinition)
95*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(BuiltInType)
96*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(TypeSpecializer)
97*b1cdbd2cSJim Jagielski 						DECL_TOK_HANDLER(Constant)
98*b1cdbd2cSJim Jagielski 
99*b1cdbd2cSJim Jagielski   protected:
100*b1cdbd2cSJim Jagielski 	virtual void		Call_Handler(
101*b1cdbd2cSJim Jagielski 							const cpp::Token &	i_rTok ) = 0;
102*b1cdbd2cSJim Jagielski };
103*b1cdbd2cSJim Jagielski 
104*b1cdbd2cSJim Jagielski #undef DECL_TOK_HANDLER
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski 
107*b1cdbd2cSJim Jagielski // IMPLEMENTATION
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski }   // namespace cpp
111*b1cdbd2cSJim Jagielski 
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski #endif
114