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 10cdf0e10cSrcweir * 11*78bc99aaSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 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. 19cdf0e10cSrcweir * 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 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 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 118cdf0e10cSrcweir Tok_PreProDefinition::TypeId() const { return Tid_PreProDefinition; } 119cdf0e10cSrcweir 120cdf0e10cSrcweir const char * 121cdf0e10cSrcweir Tok_PreProDefinition::Text() const 122cdf0e10cSrcweir { 123cdf0e10cSrcweir return sText; 124cdf0e10cSrcweir } 125cdf0e10cSrcweir 126cdf0e10cSrcweir 127cdf0e10cSrcweir 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 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