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 #include <precomp.h>
29 #include <all_toks.hxx>
30 
31 
32 // NOT FULLY DEFINED SERVICES
33 #include <cpp/ctokdeal.hxx>
34 #include "c_dealer.hxx"
35 #include "tokintpr.hxx"
36 
37 
38 
39 namespace cpp {
40 
41 
42 void
43 Token::DealOut( ::TokenDealer & o_rDealer )
44 {
45     // KORR_FUTURE HACK (casting to derivation cpp::TokenDealer)
46     o_rDealer.AsDistributor()->Deal_CppCode(*this);
47 }
48 
49 
50 #define DEF_TOKEN_CLASS(name) \
51 void \
52 Tok_##name::Trigger( TokenInterpreter & io_rInterpreter ) const \
53 { io_rInterpreter.Hdl_##name(*this); } \
54 INT16 \
55 Tok_##name::TypeId() const { return Tid_##name; } \
56 const char * \
57 Tok_##name::Text() const { return #name; }
58 
59 #define DEF_TOKEN_CLASS_WITHTEXT(name, text ) \
60 void \
61 Tok_##name::Trigger( TokenInterpreter & io_rInterpreter ) const \
62 { io_rInterpreter.Hdl_##name(*this); } \
63 INT16 \
64 Tok_##name::TypeId() const { return Tid_##name; } \
65 const char * \
66 Tok_##name::Text() const { return text; }
67 
68 
69 DEF_TOKEN_CLASS_WITHTEXT(Identifier,sText)
70 DEF_TOKEN_CLASS_WITHTEXT(Operator,sText)
71 
72 DEF_TOKEN_CLASS(operator)
73 DEF_TOKEN_CLASS(class)
74 DEF_TOKEN_CLASS(struct)
75 DEF_TOKEN_CLASS(union)
76 DEF_TOKEN_CLASS(enum)
77 DEF_TOKEN_CLASS(typedef)
78 DEF_TOKEN_CLASS(public)
79 DEF_TOKEN_CLASS(protected)
80 DEF_TOKEN_CLASS(private)
81 DEF_TOKEN_CLASS(template)
82 DEF_TOKEN_CLASS(virtual)
83 DEF_TOKEN_CLASS(friend)
84 DEF_TOKEN_CLASS_WITHTEXT(Tilde,"~")
85 DEF_TOKEN_CLASS(const)
86 DEF_TOKEN_CLASS(volatile)
87 DEF_TOKEN_CLASS(extern)
88 DEF_TOKEN_CLASS(static)
89 DEF_TOKEN_CLASS(mutable)
90 DEF_TOKEN_CLASS(register)
91 DEF_TOKEN_CLASS(inline)
92 DEF_TOKEN_CLASS(explicit)
93 DEF_TOKEN_CLASS(namespace)
94 DEF_TOKEN_CLASS(using)
95 DEF_TOKEN_CLASS(throw)
96 DEF_TOKEN_CLASS_WITHTEXT(SwBracket_Left,"{")
97 DEF_TOKEN_CLASS_WITHTEXT(SwBracket_Right,"}")
98 DEF_TOKEN_CLASS_WITHTEXT(ArrayBracket_Left,"[")
99 DEF_TOKEN_CLASS_WITHTEXT(ArrayBracket_Right,"]")
100 DEF_TOKEN_CLASS_WITHTEXT(Bracket_Left,"(")
101 DEF_TOKEN_CLASS_WITHTEXT(Bracket_Right,")")
102 DEF_TOKEN_CLASS_WITHTEXT(DoubleColon,"::")
103 DEF_TOKEN_CLASS_WITHTEXT(Semicolon,";")
104 DEF_TOKEN_CLASS_WITHTEXT(Comma,",")
105 DEF_TOKEN_CLASS_WITHTEXT(Colon,":")
106 DEF_TOKEN_CLASS_WITHTEXT(Assign,"=")
107 DEF_TOKEN_CLASS_WITHTEXT(Less,"<")
108 DEF_TOKEN_CLASS_WITHTEXT(Greater,">")
109 DEF_TOKEN_CLASS_WITHTEXT(Asterix,"*")
110 DEF_TOKEN_CLASS_WITHTEXT(AmpersAnd,"&")
111 DEF_TOKEN_CLASS_WITHTEXT(Ellipse,"...")
112 DEF_TOKEN_CLASS(typename)
113 
114 DEF_TOKEN_CLASS_WITHTEXT(DefineName,sText)
115 DEF_TOKEN_CLASS_WITHTEXT(MacroName,sText)
116 DEF_TOKEN_CLASS_WITHTEXT(MacroParameter,sText)
117 // DEF_TOKEN_CLASS_WITHTEXT(PreProDefinition,sText)
118 
119 void
120 Tok_PreProDefinition::Trigger( TokenInterpreter &   io_rInterpreter ) const
121 { io_rInterpreter.Hdl_PreProDefinition(*this); }
122 
123 INT16
124 Tok_PreProDefinition::TypeId() const { return Tid_PreProDefinition; }
125 
126 const char *
127 Tok_PreProDefinition::Text() const
128 {
129     return sText;
130 }
131 
132 
133 
134 DEF_TOKEN_CLASS_WITHTEXT(BuiltInType,sText)
135 DEF_TOKEN_CLASS_WITHTEXT(TypeSpecializer,sText)
136 DEF_TOKEN_CLASS_WITHTEXT(Constant,sText)
137 
138 const char *
139 Tok_UnblockMacro::Text() const
140 {
141     return sMacroName;
142 }
143 
144 void
145 Tok_UnblockMacro::DealOut( ::TokenDealer & o_rDealer )
146 {
147     // KORR_FUTURE HACK (casting to derivation cpp::TokenDealer)
148     o_rDealer.AsDistributor()->Deal_Cpp_UnblockMacro(*this);
149 }
150 
151 }   // namespace cpp
152