1 ///////////////////////////////////////////////////////////////////////////////
2 // This file is generated automatically using Prop (version 2.3.4),
3 // last updated on Apr 3, 1997.
4 // The original source file is "T10.pcc".
5 ///////////////////////////////////////////////////////////////////////////////
7 #define PROP_GARBAGE_COLLECTION_USED
12 struct IA
{ void hasIA() {} };
13 struct IB
{ void hasIB() {} };
14 struct IC
{ void hasIC() {} };
15 struct ID
{ void hasID() {} };
16 struct IE
{ void hasIE() {} };
17 struct I1
{ void hasI1() {} };
18 struct I2
{ void hasI2() {} };
19 struct I3
{ void hasI3() {} };
24 ///////////////////////////////////////////////////////////////////////////////
26 // Forward class definition for T
28 ///////////////////////////////////////////////////////////////////////////////
29 #ifndef datatype_T_defined
30 #define datatype_T_defined
35 ///////////////////////////////////////////////////////////////////////////////
37 // Base class for datatype T
39 ///////////////////////////////////////////////////////////////////////////////
40 class a_T
: public GCObject
, public I1
{
43 tag_A
= 0, tag_B
= 1, tag_C
= 2,
48 const Tag_T tag__
; // variant tag
50 inline a_T(Tag_T t__
) : tag__(t__
) {}
55 ////////////////////////////////////////////////////////////////////////////
57 // Method for garbage collection tracing
59 ////////////////////////////////////////////////////////////////////////////
61 virtual void trace(GC
*);
68 virtual std::ostream
& print(std::ostream
&) = 0;
71 inline int boxed(const a_T
*) { return 1; }
72 inline int untag(const a_T
* x
) { return x
->tag__
; }
73 ///////////////////////////////////////////////////////////////////////////////
75 // Class for datatype constructor T::A
77 ///////////////////////////////////////////////////////////////////////////////
78 class T_A
: public a_T
, public IA
, public I2
{
89 ////////////////////////////////////////////////////////////////////////////
91 // Method for garbage collection tracing
93 ////////////////////////////////////////////////////////////////////////////
95 virtual void trace(GC
*);
101 std::ostream
& print(std::ostream
&);
105 ///////////////////////////////////////////////////////////////////////////////
107 // Class for datatype constructor T::B
109 ///////////////////////////////////////////////////////////////////////////////
110 class T_B
: public a_T
, public IB
, public I2
{
121 ////////////////////////////////////////////////////////////////////////////
123 // Method for garbage collection tracing
125 ////////////////////////////////////////////////////////////////////////////
127 virtual void trace(GC
*);
133 std::ostream
& print(std::ostream
&);
137 ///////////////////////////////////////////////////////////////////////////////
139 // Class for datatype constructor T::C
141 ///////////////////////////////////////////////////////////////////////////////
142 class T_C
: public a_T
, public IC
, public I2
{
153 ////////////////////////////////////////////////////////////////////////////
155 // Method for garbage collection tracing
157 ////////////////////////////////////////////////////////////////////////////
159 virtual void trace(GC
*);
165 std::ostream
& print(std::ostream
&);
169 ///////////////////////////////////////////////////////////////////////////////
171 // Class for datatype constructor T::D
173 ///////////////////////////////////////////////////////////////////////////////
174 class T_D
: public a_T
, public ID
, public I2
{
185 ////////////////////////////////////////////////////////////////////////////
187 // Method for garbage collection tracing
189 ////////////////////////////////////////////////////////////////////////////
191 virtual void trace(GC
*);
197 std::ostream
& print(std::ostream
&);
201 ///////////////////////////////////////////////////////////////////////////////
203 // Datatype constructor functions for T
205 ///////////////////////////////////////////////////////////////////////////////
222 ///////////////////////////////////////////////////////////////////////////////
224 // Downcasting functions for T
226 ///////////////////////////////////////////////////////////////////////////////
227 inline T_A
* _A(const a_T
* _x_
) { return (T_A
*)_x_
; }
228 inline T_B
* _B(const a_T
* _x_
) { return (T_B
*)_x_
; }
229 inline T_C
* _C(const a_T
* _x_
) { return (T_C
*)_x_
; }
230 inline T_D
* _D(const a_T
* _x_
) { return (T_D
*)_x_
; }
238 ///////////////////////////////////////////////////////////////////////////////
240 // Forward class definition for T2
242 ///////////////////////////////////////////////////////////////////////////////
243 #ifndef datatype_T2_defined
244 #define datatype_T2_defined
249 ///////////////////////////////////////////////////////////////////////////////
251 // Class for datatype constructor T2::E
253 ///////////////////////////////////////////////////////////////////////////////
254 class a_T2
: public GCObject
, public IE
, public I3
{
262 inline virtual ~a_T2()
265 ////////////////////////////////////////////////////////////////////////////
267 // Method for garbage collection tracing
269 ////////////////////////////////////////////////////////////////////////////
271 virtual void trace(GC
*);
281 virtual std::ostream
& print(std::ostream
&);
284 inline int boxed(const a_T2
*) { return 1; }
285 inline int untag(const a_T2
*) { return 0; }
286 ///////////////////////////////////////////////////////////////////////////////
288 // Datatype constructor functions for T2
290 ///////////////////////////////////////////////////////////////////////////////
295 ///////////////////////////////////////////////////////////////////////////////
297 // Downcasting functions for T2
299 ///////////////////////////////////////////////////////////////////////////////
312 ///////////////////////////////////////////////////////////////////////////////
314 // Interface specification of datatype T
316 ///////////////////////////////////////////////////////////////////////////////
320 ///////////////////////////////////////////////////////////////////////////////
322 // Interface specification of datatype T2
324 ///////////////////////////////////////////////////////////////////////////////
328 ///////////////////////////////////////////////////////////////////////////////
330 // Instantiation of datatype T
332 ///////////////////////////////////////////////////////////////////////////////
334 void a_T::trace(GC
* gc__
)
338 void T_A::trace(GC
* gc__
)
340 // call to method a_T::trace() has been optimized out
343 void T_B::trace(GC
* gc__
)
345 // call to method a_T::trace() has been optimized out
348 void T_C::trace(GC
* gc__
)
350 // call to method a_T::trace() has been optimized out
353 void T_D::trace(GC
* gc__
)
355 // call to method a_T::trace() has been optimized out
360 ///////////////////////////////////////////////////////////////////////////////
362 // Instantiation of datatype T2
364 ///////////////////////////////////////////////////////////////////////////////
366 void a_T2::trace(GC
* gc__
)
380 ::get_A() { hasIA(); hasI1(); hasI2(); }
385 ::get_B() { hasIB(); hasI1(); hasI2(); }
390 ::get_C() { hasIC(); hasI1(); hasI2(); }
395 ::get_D() { hasID(); hasI1(); hasI2(); }
400 ::get_E() { hasIE(); hasI3(); }
406 ::print(std::ostream
& s
) { return s
<< "A"; }
411 ::print(std::ostream
& s
) { return s
<< "B"; }
416 ::print(std::ostream
& s
) { return s
<< "C"; }
421 ::print(std::ostream
& s
) { return s
<< "D"; }
426 ::print(std::ostream
& s
) { return s
<< "E"; }
431 x
->print(cout
) << '\n';
434 y
->print(cout
) << '\n';
439 ------------------------------- Statistics -------------------------------
440 Merge matching rules = yes
441 Number of DFA nodes merged = 0
442 Number of ifs generated = 0
443 Number of switches generated = 0
446 Adaptive matching = disabled
447 Fast string matching = disabled
448 Inline downcasts = disabled
449 --------------------------------------------------------------------------