1*78bc99aaSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*78bc99aaSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*78bc99aaSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*78bc99aaSAndrew Rist  * distributed with this work for additional information
6*78bc99aaSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*78bc99aaSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*78bc99aaSAndrew Rist  * "License"); you may not use this file except in compliance
9*78bc99aaSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*78bc99aaSAndrew Rist  *
11*78bc99aaSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*78bc99aaSAndrew Rist  *
13*78bc99aaSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*78bc99aaSAndrew Rist  * software distributed under the License is distributed on an
15*78bc99aaSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*78bc99aaSAndrew Rist  * KIND, either express or implied.  See the License for the
17*78bc99aaSAndrew Rist  * specific language governing permissions and limitations
18*78bc99aaSAndrew Rist  * under the License.
19*78bc99aaSAndrew Rist  *
20*78bc99aaSAndrew Rist  *************************************************************/
21cdf0e10cSrcweir 
22cdf0e10cSrcweir #include <precomp.h>
23cdf0e10cSrcweir #include <all_toks.hxx>
24cdf0e10cSrcweir 
25cdf0e10cSrcweir 
26cdf0e10cSrcweir // NOT FULLY DEFINED SERVICES
27cdf0e10cSrcweir #include <cpp/ctokdeal.hxx>
28cdf0e10cSrcweir #include "c_dealer.hxx"
29cdf0e10cSrcweir #include "tokintpr.hxx"
30cdf0e10cSrcweir 
31cdf0e10cSrcweir 
32cdf0e10cSrcweir 
33cdf0e10cSrcweir namespace cpp {
34cdf0e10cSrcweir 
35cdf0e10cSrcweir 
36cdf0e10cSrcweir void
DealOut(::TokenDealer & o_rDealer)37cdf0e10cSrcweir Token::DealOut( ::TokenDealer & o_rDealer )
38cdf0e10cSrcweir {
39cdf0e10cSrcweir     // KORR_FUTURE HACK (casting to derivation cpp::TokenDealer)
40cdf0e10cSrcweir     o_rDealer.AsDistributor()->Deal_CppCode(*this);
41cdf0e10cSrcweir }
42cdf0e10cSrcweir 
43cdf0e10cSrcweir 
44cdf0e10cSrcweir #define DEF_TOKEN_CLASS(name) \
45cdf0e10cSrcweir void \
46cdf0e10cSrcweir Tok_##name::Trigger( TokenInterpreter & io_rInterpreter ) const \
47cdf0e10cSrcweir { io_rInterpreter.Hdl_##name(*this); } \
48cdf0e10cSrcweir INT16 \
49cdf0e10cSrcweir Tok_##name::TypeId() const { return Tid_##name; } \
50cdf0e10cSrcweir const char * \
51cdf0e10cSrcweir Tok_##name::Text() const { return #name; }
52cdf0e10cSrcweir 
53cdf0e10cSrcweir #define DEF_TOKEN_CLASS_WITHTEXT(name, text ) \
54cdf0e10cSrcweir void \
55cdf0e10cSrcweir Tok_##name::Trigger( TokenInterpreter & io_rInterpreter ) const \
56cdf0e10cSrcweir { io_rInterpreter.Hdl_##name(*this); } \
57cdf0e10cSrcweir INT16 \
58cdf0e10cSrcweir Tok_##name::TypeId() const { return Tid_##name; } \
59cdf0e10cSrcweir const char * \
60cdf0e10cSrcweir Tok_##name::Text() const { return text; }
61cdf0e10cSrcweir 
62cdf0e10cSrcweir 
DEF_TOKEN_CLASS_WITHTEXT(Identifier,sText)63cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Identifier,sText)
64cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Operator,sText)
65cdf0e10cSrcweir 
66cdf0e10cSrcweir DEF_TOKEN_CLASS(operator)
67cdf0e10cSrcweir DEF_TOKEN_CLASS(class)
68cdf0e10cSrcweir DEF_TOKEN_CLASS(struct)
69cdf0e10cSrcweir DEF_TOKEN_CLASS(union)
70cdf0e10cSrcweir DEF_TOKEN_CLASS(enum)
71cdf0e10cSrcweir DEF_TOKEN_CLASS(typedef)
72cdf0e10cSrcweir DEF_TOKEN_CLASS(public)
73cdf0e10cSrcweir DEF_TOKEN_CLASS(protected)
74cdf0e10cSrcweir DEF_TOKEN_CLASS(private)
75cdf0e10cSrcweir DEF_TOKEN_CLASS(template)
76cdf0e10cSrcweir DEF_TOKEN_CLASS(virtual)
77cdf0e10cSrcweir DEF_TOKEN_CLASS(friend)
78cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Tilde,"~")
79cdf0e10cSrcweir DEF_TOKEN_CLASS(const)
80cdf0e10cSrcweir DEF_TOKEN_CLASS(volatile)
81cdf0e10cSrcweir DEF_TOKEN_CLASS(extern)
82cdf0e10cSrcweir DEF_TOKEN_CLASS(static)
83cdf0e10cSrcweir DEF_TOKEN_CLASS(mutable)
84cdf0e10cSrcweir DEF_TOKEN_CLASS(register)
85cdf0e10cSrcweir DEF_TOKEN_CLASS(inline)
86cdf0e10cSrcweir DEF_TOKEN_CLASS(explicit)
87cdf0e10cSrcweir DEF_TOKEN_CLASS(namespace)
88cdf0e10cSrcweir DEF_TOKEN_CLASS(using)
89cdf0e10cSrcweir DEF_TOKEN_CLASS(throw)
90cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(SwBracket_Left,"{")
91cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(SwBracket_Right,"}")
92cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(ArrayBracket_Left,"[")
93cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(ArrayBracket_Right,"]")
94cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Bracket_Left,"(")
95cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Bracket_Right,")")
96cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(DoubleColon,"::")
97cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Semicolon,";")
98cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Comma,",")
99cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Colon,":")
100cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Assign,"=")
101cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Less,"<")
102cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Greater,">")
103cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Asterix,"*")
104cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(AmpersAnd,"&")
105cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Ellipse,"...")
106cdf0e10cSrcweir DEF_TOKEN_CLASS(typename)
107cdf0e10cSrcweir 
108cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(DefineName,sText)
109cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(MacroName,sText)
110cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(MacroParameter,sText)
111cdf0e10cSrcweir // DEF_TOKEN_CLASS_WITHTEXT(PreProDefinition,sText)
112cdf0e10cSrcweir 
113cdf0e10cSrcweir void
114cdf0e10cSrcweir Tok_PreProDefinition::Trigger( TokenInterpreter &   io_rInterpreter ) const
115cdf0e10cSrcweir { io_rInterpreter.Hdl_PreProDefinition(*this); }
116cdf0e10cSrcweir 
117cdf0e10cSrcweir INT16
TypeId() const118cdf0e10cSrcweir Tok_PreProDefinition::TypeId() const { return Tid_PreProDefinition; }
119cdf0e10cSrcweir 
120cdf0e10cSrcweir const char *
Text() const121cdf0e10cSrcweir Tok_PreProDefinition::Text() const
122cdf0e10cSrcweir {
123cdf0e10cSrcweir     return sText;
124cdf0e10cSrcweir }
125cdf0e10cSrcweir 
126cdf0e10cSrcweir 
127cdf0e10cSrcweir 
DEF_TOKEN_CLASS_WITHTEXT(BuiltInType,sText)128cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(BuiltInType,sText)
129cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(TypeSpecializer,sText)
130cdf0e10cSrcweir DEF_TOKEN_CLASS_WITHTEXT(Constant,sText)
131cdf0e10cSrcweir 
132cdf0e10cSrcweir const char *
133cdf0e10cSrcweir Tok_UnblockMacro::Text() const
134cdf0e10cSrcweir {
135cdf0e10cSrcweir     return sMacroName;
136cdf0e10cSrcweir }
137cdf0e10cSrcweir 
138cdf0e10cSrcweir void
DealOut(::TokenDealer & o_rDealer)139cdf0e10cSrcweir Tok_UnblockMacro::DealOut( ::TokenDealer & o_rDealer )
140cdf0e10cSrcweir {
141cdf0e10cSrcweir     // KORR_FUTURE HACK (casting to derivation cpp::TokenDealer)
142cdf0e10cSrcweir     o_rDealer.AsDistributor()->Deal_Cpp_UnblockMacro(*this);
143cdf0e10cSrcweir }
144cdf0e10cSrcweir 
145cdf0e10cSrcweir }   // namespace cpp
146