comparison anagram/agcore/coreinst.cpp @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:13d2b8934445
1 /*
2 * AnaGram, A System for Syntax Directed Programming
3 * Copyright 1997-1999 Parsifal Software. All Rights Reserved.
4 * Copyright 2006 David A. Holland. All Rights Reserved.
5 * See the file COPYING for license and usage terms.
6 *
7 * coreinst.cpp - template instantiation
8 */
9
10 #include "agarray.h"
11 #include "agbaltree.h"
12 #include "agstring.h"
13 #include "checksum.h"
14 #include "csexp.h"
15 #include "error.h"
16 #include "ftpar.h"
17 #include "keyword.h"
18 #include "minmax.h"
19 #include "mrule.h"
20 #include "register.h"
21 #include "rproc.h"
22 #include "rule.h"
23 #include "symbol.h"
24 #include "token.h"
25 #include "tree.h"
26
27 //#define INCLUDE_LOGGING
28 #include "log.h"
29
30 #include "agarray-imp.h"
31 #include "agbaltree-imp.h"
32 #include "agstack-imp.h"
33 #include "register-imp.h"
34
35
36 ////////////////////////////////////////////////////////////
37
38 #ifdef __IBMCPP__
39 /* last pruned who-knows-when */
40 /* last tested 20061022 */
41
42 // data.h
43 #pragma define(Triple<int>)
44 #pragma define(OrderedPair<int>)
45
46 // array
47 #pragma define(AgArray< AgBalancedTree <int> >)
48 #pragma define(AgArray< AgBalancedTree<MarkedRule> >)
49 #pragma define(AgArray<MarkedRule>)
50 #pragma define(AgArray<Rule>)
51 #pragma define(AgArray<Token>)
52 #pragma define(AgArray<int>)
53 #pragma define(AgArray<unsigned char>)
54 #pragma define(AgArray<unsigned>)
55
56 // stack
57 #pragma define(AgStack< AgStack<RuleElement> >)
58 #pragma define(AgStack<CastDescriptor>)
59 #pragma define(AgStack<CSegment>)
60 #pragma define(AgStack<CharSetExpression *>)
61 #pragma define(AgStack<Error>)
62 #pragma define(AgStack<FtParser::State>)
63 #pragma define(AgStack<FtParser::Transaction>)
64 #pragma define(AgStack<Keyword>)
65 #pragma define(AgStack<KeywordDescriptor>)
66 #pragma define(AgStack<MarkedRule>)
67 #pragma define(AgStack<Procedure>)
68 #pragma define(AgStack<ProcedureDescriptor>)
69 #pragma define(AgStack<Rule>)
70 #pragma define(AgStack<RuleDescriptor>)
71 #pragma define(AgStack<RuleElement>)
72 //#pragma define(AgStack<StateDescriptor>)
73 #pragma define(AgStack<Token>)
74 #pragma define(AgStack<VpRuleDescriptor>)
75 #pragma define(AgStack<int>)
76 #pragma define(AgStack<parse_tree_map>)
77 #pragma define(AgStack<sumentry>)
78 #pragma define(AgStack<token_name_map>)
79 #pragma define(AgStack<token_number_map>)
80 #pragma define(AgStack<unsigned int>)
81
82 // register
83 #pragma define(ObjectRegister<Procedure>)
84 #pragma define(ObjectRegister<RuleDescriptor>)
85 #pragma define(ObjectRegister<token_number_map>)
86 #pragma define(KeyedObjectRegister<parse_tree_map>)
87 #pragma define(KeyedObjectRegister<CastDescriptor>)
88 #pragma define(KeyedObjectRegister<KeywordDescriptor>)
89 //#pragma define(KeyedObjectRegister<StateDescriptor>)
90 #pragma define(KeyedObjectRegister<SymbolDescriptor>)
91 #pragma define(KeyedObjectRegister<VpRuleDescriptor>)
92 #pragma define(Each<Rule>)
93 #pragma define(Each<Token>)
94 #pragma define(Each<Cast>)
95 #pragma define(Each<Keyword>)
96 #pragma define(Each<Procedure>)
97
98 #endif /* __IBMCPP__ */
99
100 ////////////////////////////////////////////////////////////
101
102 #ifdef __WATCOM_CPLUSPLUS__
103 /* last pruned who-knows-when */
104 /* last tested who-knows-when */
105
106 // Watcom 10.6 doesn't seem to have any mechanism for forcing template
107 // expansions.
108
109 // data.h
110 typedef Triple<int> tripleJunk;
111 typedef OrderedPair<int> pairJunk;
112
113 // array
114 typedef AgArray< AgBalancedTree <int> > junk1;
115 typedef AgArray< AgBalancedTree<MarkedRule> > junk2;
116 typedef AgArray<MarkedRule> junk3;
117 typedef AgArray<Rule> junk4;
118 typedef AgArray<Token> junk5;
119 typedef AgArray<int> junk6;
120 typedef AgArray<unsigned char> junk7;
121 typedef AgArray<unsigned> junk8;
122
123 // register
124 typedef ObjectRegister<Procedure> rjunk1;
125 typedef ObjectRegister<RuleDescriptor> rjunk2;
126 typedef ObjectRegister<token_number_map> rjunk3;
127 typedef KeyedObjectRegister<parse_tree_map> rjunk4;
128 typedef KeyedObjectRegister<CastDescriptor> rjunk5;
129 typedef KeyedObjectRegister<KeywordDescriptor> rjunk6;
130 //typedef KeyedObjectRegister<StateDescriptor> rjunk8;
131 typedef KeyedObjectRegister<SymbolDescriptor> rjunk7;
132 typedef KeyedObjectRegister<VpRuleDescriptor> rjunk9;
133 typedef Each<Rule> fake9;
134 typedef Each<Token> fake10;
135 typedef Each<Procedure> fake11;
136 typedef Each<Cast> fake12;
137 typedef Each<Keyword> fake13;
138
139 #endif /* __WATCOM_CPLUSPLUS__ */
140
141 ////////////////////////////////////////////////////////////
142
143 #ifdef _MSC_VER
144 /* last pruned who-knows-when */
145 /* last tested who-knows-when */
146
147 // data.h
148 template class OrderedPair<int>;
149 template class Triple<int>;
150
151 // array
152 template class AgArray< AgBalancedTree <int> >;
153 template class AgArray< AgBalancedTree<MarkedRule> >;
154 template class AgArray<MarkedRule>;
155 template class AgArray<Rule>;
156 template class AgArray<Token>;
157 template class AgArray<int>;
158 template class AgArray<unsigned char>;
159 template class AgArray<unsigned>;
160
161 // stack
162 template class AgStack< AgStack<RuleElement> >;
163 template class AgStack<CastDescriptor>;
164 template class AgStack<CSegment>;
165 template class AgStack<CharSetExpression *>;
166 template class AgStack<Error>;
167 template class AgStack<FtParser::State>;
168 template class AgStack<FtParser::Transaction>;
169 template class AgStack<Keyword>;
170 template class AgStack<KeywordDescriptor>;
171 template class AgStack<MarkedRule>;
172 template class AgStack<Procedure>;
173 template class AgStack<ProcedureDescriptor>;
174 template class AgStack<Rule>;
175 template class AgStack<RuleDescriptor>;
176 template class AgStack<RuleElement>;
177 //template class AgStack<StateDescriptor>;
178 template class AgStack<Token>;
179 template class AgStack<VpRuleDescriptor>;
180 template class AgStack<int>;
181 template class AgStack<parse_tree_map>;
182 template class AgStack<token_name_map>;
183 template class AgStack<token_number_map>;
184 template class AgStack<unsigned int>;
185
186 // register
187 template class ObjectRegister<Procedure>;
188 template class ObjectRegister<RuleDescriptor>;
189 template class ObjectRegister<token_number_map>;
190 template class KeyedObjectRegister<parse_tree_map>;
191 template class KeyedObjectRegister<CastDescriptor>;
192 template class KeyedObjectRegister<KeywordDescriptor>;
193 //template class KeyedObjectRegister<StateDescriptor>;
194 template class KeyedObjectRegister<SymbolDescriptor>;
195 template class KeyedObjectRegister<VpRuleDescriptor>;
196
197 #endif /* _MSC_VER */
198
199 ////////////////////////////////////////////////////////////
200
201 #ifdef __GNUC__
202 /* last pruned 20061022 */
203 /* last tested 20061022 */
204
205 // array
206 template class AgArray< AgBalancedTree <int> >;
207 template class AgArray<Rule>;
208 template class AgArray<RuleElement>;
209 template class AgArray<Token>;
210 template class AgArray<int>;
211 template class AgArray<unsigned>;
212
213 // balanced tree
214 template class AgBalancedTree<AgArray<int> >;
215 template class AgBalancedTree<OrderedPair<int> >;
216 template class AgBalancedTree<Triple<int> >;
217
218 // stack
219 template class AgStack< AgStack<RuleElement> >;
220 template class AgStack<CSegment>;
221 template class AgStack<Error>;
222 template class AgStack<FtParser::State>;
223 template class AgStack<FtParser::Transaction>;
224 template class AgStack<KeywordDescriptor>;
225 template class AgStack< Listener<FtParser::StackChanged> *>;
226 template class AgStack<ProcedureDescriptor>;
227 template class AgStack<Rule>;
228 template class AgStack<RuleDescriptor>;
229 template class AgStack<RuleElement>;
230 template class AgStack<SymbolDescriptor>;
231 template class AgStack<Token>;
232 template class AgStack<int>;
233 template class AgStack<parse_tree_map>;
234 template class AgStack<sumentry>;
235 template class AgStack<token_number_map>;
236
237 // register
238 template class ObjectRegister<CastDescriptor>;
239 template class ObjectRegister<KeywordDescriptor>;
240 template class ObjectRegister<ProcedureDescriptor>;
241 template class ObjectRegister<RuleDescriptor>;
242 template class ObjectRegister<SymbolDescriptor>;
243 template class ObjectRegister<VpRuleDescriptor>;
244 template class ObjectRegister<parse_tree_map>;
245 template class ObjectRegister<token_number_map>;
246 template class KeyedObjectRegister<CastDescriptor>;
247 template class KeyedObjectRegister<KeywordDescriptor>;
248 template class KeyedObjectRegister<SymbolDescriptor>;
249 template class KeyedObjectRegister<VpRuleDescriptor>;
250 template class KeyedObjectRegister<parse_tree_map>;
251
252 template class Each<Cast>;
253 template class Each<Keyword>;
254 template class Each<Procedure>;
255 template class Each<Rule>;
256 template class Each<Token>;
257
258 #endif /* __GNUC__ */
259
260 ////////////////////////////////////////////////////////////
261
262 #ifdef __BCPLUSPLUS__
263 /* last pruned who-knows-when */
264 /* last tested who-knows-when */
265
266 #pragma option -Jgd
267
268 // data.h
269 typedef Triple<int> tripleJunk;
270 typedef OrderedPair<int> pairJunk;
271
272 // array
273 typedef AgArray< AgBalancedTree <int> > fake1;
274 typedef AgArray< AgBalancedTree<MarkedRule> > fake2;
275 typedef AgArray<MarkedRule> fake3;
276 typedef AgArray<Rule> fake4;
277 typedef AgArray<Token> fake5;
278 typedef AgArray<int> fake6;
279 typedef AgArray<unsigned char> fake7;
280 typedef AgArray<unsigned> fake8;
281
282 // stack
283 typedef AgStack< AgStack<RuleElement> > fake1;
284 typedef AgStack<CastDescriptor> fake2a;
285 typedef AgStack<CSegment> fake3;
286 typedef AgStack<CharSetExpression *> fake4;
287 typedef AgStack<Error> fake5;
288 typedef AgStack<FtParser::State> fake6;
289 typedef AgStack<FtParser::Transaction> fake7;
290 typedef AgStack<Keyword> fake8;
291 typedef AgStack<KeywordDescriptor> fake8d;
292 typedef AgStack<MarkedRule> fake9;
293 typedef AgStack<Procedure> fake10;
294 typedef AgStack<ProcedureDescriptor> fake11;
295 typedef AgStack<Rule> fake12;
296 typedef AgStack<RuleDescriptor> fake13;
297 typedef AgStack<RuleElement> fake14;
298 //typedef AgStack<StateDescriptor> fake15;
299 typedef AgStack<Token> fake16;
300 typedef AgStack<VpRuleDescriptor> fake17;
301 typedef AgStack<int> fake19;
302 typedef AgStack<parse_tree_map> fake20;
303 typedef AgStack<token_name_map> fake21;
304 typedef AgStack<token_number_map> fake22;
305 typedef AgStack<unsigned int> fake23;
306
307 // register
308 typedef ObjectRegister<Procedure> fake1;
309 typedef ObjectRegister<RuleDescriptor> fake2;
310 typedef ObjectRegister<token_number_map> fake3;
311 typedef KeyedObjectRegister<parse_tree_map> fake4;
312 typedef KeyedObjectRegister<CastDescriptor> fake5;
313 typedef KeyedObjectRegister<KeywordDescriptor> fake6;
314 //typedef KeyedObjectRegister<StateDescriptor> fake8;
315 typedef KeyedObjectRegister<SymbolDescriptor> fake7;
316 typedef KeyedObjectRegister<VpRuleDescriptor> fake8;
317 typedef Each<Rule> fake9;
318 typedef Each<Token> fake10;
319 typedef Each<Procedure> fake11;
320 typedef Each<Cast> fake12;
321 typedef Each<Keyword> fake13;
322
323 #endif /* __BCPLUSPLUS__ */
324
325