Subversion Repositories tendra.SVN

Rev

Rev 2 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 7u83 1
/*
2
    		 Crown Copyright (c) 1997
3
 
4
    This TenDRA(r) Computer Program is subject to Copyright
5
    owned by the United Kingdom Secretary of State for Defence
6
    acting through the Defence Evaluation and Research Agency
7
    (DERA).  It is made available to Recipients with a
8
    royalty-free licence for its use, reproduction, transfer
9
    to other parties and amendment for any purpose not excluding
10
    product development provided that any such use et cetera
11
    shall be deemed to be acceptance of the following conditions:-
12
 
13
        (1) Its Recipients shall ensure that this Notice is
14
        reproduced upon any copies or amended versions of it;
15
 
16
        (2) Any amended version of it shall be clearly marked to
17
        show both the nature of and the organisation responsible
18
        for the relevant amendment or amendments;
19
 
20
        (3) Its onward transfer from a recipient to another
21
        party shall be deemed to be that party's acceptance of
22
        these conditions;
23
 
24
        (4) DERA gives no warranty or assurance as to its
25
        quality or suitability for any purpose and DERA accepts
26
        no liability whatsoever in relation to any use to which
27
        it may be put.
28
*/
29
 
30
/*
31
    AUTOMATICALLY GENERATED FROM ALGEBRA tdf (VERSION 1.0)
32
    BY calculus (VERSION 1.2)
33
*/
34
 
35
#ifndef TDF_H_INCLUDED
36
#define TDF_H_INCLUDED
37
 
38
#ifndef tdf_NAME
39
#define tdf_NAME			"tdf"
40
#define tdf_VERSION			"1.0"
41
#define tdf_SPECIFICATION		0
42
#define tdf_IMPLEMENTATION		1
43
#endif
44
 
45
 
46
/* Prototype macros */
47
 
48
#ifndef PROTO_S
49
#ifdef __STDC__
50
#define PROTO_S( types )		types
51
#define PROTO_N( names )
52
#define PROTO_T( parms )		( parms )
53
#define PROTO_Z()			( void )
54
#define X				,
55
#else
56
#define PROTO_S( types )		()
57
#define PROTO_N( names )		names
58
#define PROTO_T( parms )		parms ;
59
#define PROTO_Z()			()
60
#define X				;
61
#endif
62
#endif
63
 
64
#ifndef CONST_S
65
#define CONST_S
66
#endif
67
 
68
 
69
/* Primitive types */
70
 
71
typedef char * string ;
72
 
73
 
74
/* Basic types */
75
 
76
typedef union tdf_tag {
77
    unsigned ag_tag ;
78
    union tdf_tag *ag_ptr ;
79
    unsigned ag_enum ;
80
    unsigned long ag_long_enum ;
81
    int ag_prim_int ;
82
    unsigned ag_prim_unsigned ;
83
    string ag_prim_string ;
84
} tdf ;
85
 
86
typedef tdf *tdf_PTR ;
87
 
88
#ifndef tdf_DESTR_DEFINED
89
#define tdf_DESTR_DEFINED
90
typedef void ( *DESTROYER ) PROTO_S ( ( tdf *, unsigned ) ) ;
91
#endif
92
 
93
#define PTR( A )	tdf_PTR
94
#define LIST( A )	tdf_PTR
95
#define STACK( A )	tdf_PTR
96
#define SIZE( A )	int
97
 
98
 
99
/* Assertion macros */
100
 
101
#ifdef ASSERTS
102
extern tdf *check_null_tdf PROTO_S ( ( tdf *, CONST_S char *, int ) ) ;
103
extern tdf *check_tag_tdf PROTO_S ( ( tdf *, unsigned, CONST_S char *, int ) ) ;
104
extern tdf *check_tag_etc_tdf PROTO_S ( ( tdf *, unsigned, unsigned, CONST_S char *, int ) ) ;
105
#define CHECK_NULL( P )\
106
    ( check_null_tdf ( ( P ), __FILE__, __LINE__ ) )
107
#define CHECK_TAG( P, N )\
108
    ( check_tag_tdf ( ( P ), ( unsigned ) ( N ), __FILE__, __LINE__ ) )
109
#define CHECK_TAG_ETC( P, L, U )\
110
    ( check_tag_etc_tdf ( ( P ), ( unsigned ) ( L ), ( unsigned ) ( U ), __FILE__, __LINE__ ) )
111
#else
112
#define CHECK_NULL( P )			( P )
113
#define CHECK_TAG( P, N )		( P )
114
#define CHECK_TAG_ETC( P, L, U )	( P )
115
#endif
116
 
117
 
118
/* Enumeration definitions */
119
 
120
 
121
 
122
/* Union type definitions */
123
 
124
typedef tdf *PARAMETER ;
125
typedef tdf *CONSTRUCT ;
126
typedef tdf *SORT_INFO ;
127
typedef tdf *SORT ;
128
typedef tdf *LINKAGE ;
129
typedef tdf *SPECIFICATION ;
130
typedef tdf *COMMAND ;
131
 
132
 
133
/* Structure declarations */
134
 
135
 
136
 
137
/* Identity type definitions */
138
 
139
 
140
 
141
/* Structure definitions */
142
 
143
#ifndef tdf_STRUCT_DEFINED
144
#define tdf_STRUCT_DEFINED
145
 
146
#endif /* tdf_STRUCT_DEFINED */
147
 
148
 
149
/* Function declarations */
150
 
151
extern tdf *gen_tdf PROTO_S ( ( unsigned ) ) ;
152
extern void destroy_tdf PROTO_S ( ( tdf *, unsigned ) ) ;
153
extern void dummy_destroy_tdf PROTO_S ( ( tdf *, unsigned ) ) ;
154
extern void destroy_tdf_list PROTO_S ( ( tdf *, unsigned ) ) ;
155
extern tdf *append_tdf_list PROTO_S ( ( tdf *, tdf * ) ) ;
156
extern tdf *end_tdf_list PROTO_S ( ( tdf * ) ) ;
157
extern unsigned length_tdf_list PROTO_S ( ( tdf * ) ) ;
158
extern tdf *reverse_tdf_list PROTO_S ( ( tdf * ) ) ;
159
#ifdef tdf_IO_ROUTINES
160
extern unsigned crt_tdf_alias ;
161
extern void set_tdf_alias PROTO_S ( ( tdf *, unsigned ) ) ;
162
extern tdf *find_tdf_alias PROTO_S ( ( unsigned ) ) ;
163
extern void clear_tdf_alias PROTO_S ( ( void ) ) ;
164
#endif
165
 
166
 
167
/* Run-time type information */
168
 
169
#ifndef GEN_tdf
170
#define GEN_tdf( A, B )			gen_tdf ( ( unsigned ) ( A ) )
171
#endif
172
#define TYPEID_ptr			( ( unsigned ) 0 )
173
#define TYPEID_list			( ( unsigned ) 1 )
174
#define TYPEID_stack			( ( unsigned ) 2 )
175
#define TYPEID_par			( ( unsigned ) 3 )
176
#define TYPEID_cons			( ( unsigned ) 4 )
177
#define TYPEID_info			( ( unsigned ) 5 )
178
#define TYPEID_sort			( ( unsigned ) 6 )
179
#define TYPEID_link			( ( unsigned ) 7 )
180
#define TYPEID_spec			( ( unsigned ) 8 )
181
#define TYPEID_cmd			( ( unsigned ) 9 )
182
 
183
 
184
/* Definitions for pointers */
185
 
186
#define STEP_ptr( A, B )		( CHECK_NULL ( A ) + B )
187
#define SIZE_ptr( A )			1
188
#define NULL_ptr( A )			( ( tdf * ) 0 )
189
#define IS_NULL_ptr( A )		( ( A ) == 0 )
190
#define EQ_ptr( A, B )			( ( A ) == ( B ) )
191
#define MAKE_ptr( A )			GEN_tdf ( ( A ), TYPEID_ptr )
192
#define DESTROY_ptr( A, B )		destroy_tdf ( ( A ), ( unsigned ) ( B ) )
193
#define UNIQ_ptr( A )			GEN_tdf ( 1, TYPEID_ptr )
194
#define DESTROY_UNIQ_ptr( A )		destroy_tdf ( ( A ), ( unsigned ) 1 )
195
#ifdef tdf_IO_ROUTINES
196
#define VOIDSTAR_ptr( A )		( ( void * ) ( A ) )
197
#endif
198
 
199
#define COPY_ptr( A, B )		( CHECK_NULL ( A )->ag_ptr = ( B ) )
200
#define DEREF_ptr( A )			( CHECK_NULL ( A )->ag_ptr )
201
#define CONS_ptr( A, B, C )\
202
    {\
203
	tdf *x0_ = GEN_tdf ( 2, TYPEID_list ) ;\
204
	x0_ [1].ag_ptr = ( A ) ;\
205
	x0_->ag_ptr = ( B ) ;\
206
	( C ) = x0_ ;\
207
    }
208
 
209
#define UN_CONS_ptr( A, B, C )\
210
    {\
211
	tdf *x1_ = CHECK_NULL ( C ) ;\
212
	( A ) = x1_ [1].ag_ptr ;\
213
	( B ) = x1_->ag_ptr ;\
214
    }
215
 
216
#define DESTROY_CONS_ptr( D, A, B, C )\
217
    {\
218
	tdf *x2_ = CHECK_NULL ( C ) ;\
219
	( A ) = x2_ [1].ag_ptr ;\
220
	( B ) = x2_->ag_ptr ;\
221
	( D ) ( x2_, ( unsigned ) 2 ) ;\
222
    }
223
 
224
#define PUSH_ptr( A, B )\
225
    {\
226
	tdf **r3_ = &( B ) ;\
227
	tdf *x3_ = GEN_tdf ( 2, TYPEID_stack ) ;\
228
	x3_ [1].ag_ptr = ( A ) ;\
229
	x3_->ag_ptr = *r3_ ;\
230
	*r3_ = x3_ ;\
231
    }
232
 
233
#define POP_ptr( A, B )\
234
    {\
235
	tdf **r4_ = &( B ) ;\
236
	tdf *x4_ = CHECK_NULL ( *r4_ ) ;\
237
	( A ) = x4_ [1].ag_ptr ;\
238
	*r4_ = x4_->ag_ptr ;\
239
	destroy_tdf ( x4_, ( unsigned ) 2 ) ;\
240
    }
241
 
242
 
243
/* Definitions for lists */
244
 
245
#define HEAD_list( A )			( CHECK_NULL ( A ) + 1 )
246
#define PTR_TAIL_list( A )		( CHECK_NULL ( A ) )
247
#define TAIL_list( A )			( CHECK_NULL ( A )->ag_ptr )
248
#define LENGTH_list( A )		length_tdf_list ( ( A ) )
249
#define END_list( A )			end_tdf_list ( ( A ) )
250
#define REVERSE_list( A )		reverse_tdf_list ( ( A ) )
251
#define APPEND_list( A, B )		append_tdf_list ( ( A ), ( B ) )
252
 
253
#define SIZE_list( A )			1
254
#define NULL_list( A )			( ( tdf * ) 0 )
255
#define IS_NULL_list( A )		( ( A ) == 0 )
256
#define EQ_list( A, B )			( ( A ) == ( B ) )
257
#define UNIQ_list( A )			GEN_tdf ( 1, TYPEID_list )
258
#define DESTROY_UNIQ_list( A )		destroy_tdf ( ( A ), ( unsigned ) 1 )
259
#ifdef tdf_IO_ROUTINES
260
#define VOIDSTAR_list( A )		( ( void * ) ( A ) )
261
#endif
262
 
263
#define DESTROY_list( A, B )\
264
    {\
265
	destroy_tdf_list ( ( A ), ( unsigned ) ( B ) ) ;\
266
    }
267
 
268
#define COPY_list( A, B )		( CHECK_NULL ( A )->ag_ptr = ( B ) )
269
#define DEREF_list( A )			( CHECK_NULL ( A )->ag_ptr )
270
#define CONS_list( A, B, C )\
271
    {\
272
	tdf *x5_ = GEN_tdf ( 2, TYPEID_list ) ;\
273
	x5_ [1].ag_ptr = ( A ) ;\
274
	x5_->ag_ptr = ( B ) ;\
275
	( C ) = x5_ ;\
276
    }
277
 
278
#define UN_CONS_list( A, B, C )\
279
    {\
280
	tdf *x6_ = CHECK_NULL ( C ) ;\
281
	( A ) = x6_ [1].ag_ptr ;\
282
	( B ) = x6_->ag_ptr ;\
283
    }
284
 
285
#define DESTROY_CONS_list( D, A, B, C )\
286
    {\
287
	tdf *x7_ = CHECK_NULL ( C ) ;\
288
	( A ) = x7_ [1].ag_ptr ;\
289
	( B ) = x7_->ag_ptr ;\
290
	( D ) ( x7_, ( unsigned ) 2 ) ;\
291
    }
292
 
293
#define PUSH_list( A, B )\
294
    {\
295
	tdf **r8_ = &( B ) ;\
296
	tdf *x8_ = GEN_tdf ( 2, TYPEID_stack ) ;\
297
	x8_ [1].ag_ptr = ( A ) ;\
298
	x8_->ag_ptr = *r8_ ;\
299
	*r8_ = x8_ ;\
300
    }
301
 
302
#define POP_list( A, B )\
303
    {\
304
	tdf **r9_ = &( B ) ;\
305
	tdf *x9_ = CHECK_NULL ( *r9_ ) ;\
306
	( A ) = x9_ [1].ag_ptr ;\
307
	*r9_ = x9_->ag_ptr ;\
308
	destroy_tdf ( x9_, ( unsigned ) 2 ) ;\
309
    }
310
 
311
 
312
/* Definitions for stacks */
313
 
314
#define SIZE_stack( A )			1
315
#define NULL_stack( A )			( ( tdf * ) 0 )
316
#define IS_NULL_stack( A )		( ( A ) == 0 )
317
#define STACK_list( A )			( A )
318
#define LIST_stack( A )			( A )
319
 
320
#define COPY_stack( A, B )		( CHECK_NULL ( A )->ag_ptr = ( B ) )
321
#define DEREF_stack( A )		( CHECK_NULL ( A )->ag_ptr )
322
#define CONS_stack( A, B, C )\
323
    {\
324
	tdf *x10_ = GEN_tdf ( 2, TYPEID_list ) ;\
325
	x10_ [1].ag_ptr = ( A ) ;\
326
	x10_->ag_ptr = ( B ) ;\
327
	( C ) = x10_ ;\
328
    }
329
 
330
#define UN_CONS_stack( A, B, C )\
331
    {\
332
	tdf *x11_ = CHECK_NULL ( C ) ;\
333
	( A ) = x11_ [1].ag_ptr ;\
334
	( B ) = x11_->ag_ptr ;\
335
    }
336
 
337
#define DESTROY_CONS_stack( D, A, B, C )\
338
    {\
339
	tdf *x12_ = CHECK_NULL ( C ) ;\
340
	( A ) = x12_ [1].ag_ptr ;\
341
	( B ) = x12_->ag_ptr ;\
342
	( D ) ( x12_, ( unsigned ) 2 ) ;\
343
    }
344
 
345
#define PUSH_stack( A, B )\
346
    {\
347
	tdf **r13_ = &( B ) ;\
348
	tdf *x13_ = GEN_tdf ( 2, TYPEID_stack ) ;\
349
	x13_ [1].ag_ptr = ( A ) ;\
350
	x13_->ag_ptr = *r13_ ;\
351
	*r13_ = x13_ ;\
352
    }
353
 
354
#define POP_stack( A, B )\
355
    {\
356
	tdf **r14_ = &( B ) ;\
357
	tdf *x14_ = CHECK_NULL ( *r14_ ) ;\
358
	( A ) = x14_ [1].ag_ptr ;\
359
	*r14_ = x14_->ag_ptr ;\
360
	destroy_tdf ( x14_, ( unsigned ) 2 ) ;\
361
    }
362
 
363
 
364
/* Definitions for sizes */
365
 
366
#define SCALE( A, B )			( ( A ) * ( int ) ( B ) )
367
 
368
 
369
/* Definitions for primitive int */
370
 
371
#define SIZE_int			1
372
 
373
#define COPY_int( A, B )		( CHECK_NULL ( A )->ag_prim_int = ( B ) )
374
#define DEREF_int( A )			( CHECK_NULL ( A )->ag_prim_int )
375
#define CONS_int( A, B, C )\
376
    {\
377
	tdf *x15_ = GEN_tdf ( 2, TYPEID_list ) ;\
378
	COPY_int ( x15_ + 1, ( A ) ) ;\
379
	x15_->ag_ptr = ( B ) ;\
380
	( C ) = x15_ ;\
381
    }
382
 
383
#define UN_CONS_int( A, B, C )\
384
    {\
385
	tdf *x16_ = CHECK_NULL ( C ) ;\
386
	( A ) = DEREF_int ( x16_ + 1 ) ;\
387
	( B ) = x16_->ag_ptr ;\
388
    }
389
 
390
#define DESTROY_CONS_int( D, A, B, C )\
391
    {\
392
	tdf *x17_ = CHECK_NULL ( C ) ;\
393
	( A ) = DEREF_int ( x17_ + 1 ) ;\
394
	( B ) = x17_->ag_ptr ;\
395
	( D ) ( x17_, ( unsigned ) 2 ) ;\
396
    }
397
 
398
#define PUSH_int( A, B )\
399
    {\
400
	tdf **r18_ = &( B ) ;\
401
	tdf *x18_ = GEN_tdf ( 2, TYPEID_stack ) ;\
402
	COPY_int ( x18_ + 1, ( A ) ) ;\
403
	x18_->ag_ptr = *r18_ ;\
404
	*r18_ = x18_ ;\
405
    }
406
 
407
#define POP_int( A, B )\
408
    {\
409
	tdf **r19_ = &( B ) ;\
410
	tdf *x19_ = CHECK_NULL ( *r19_ ) ;\
411
	( A ) = DEREF_int ( x19_ + 1 ) ;\
412
	*r19_ = x19_->ag_ptr ;\
413
	destroy_tdf ( x19_, ( unsigned ) 2 ) ;\
414
    }
415
 
416
 
417
/* Definitions for primitive unsigned */
418
 
419
#define SIZE_unsigned			1
420
 
421
#define COPY_unsigned( A, B )		( CHECK_NULL ( A )->ag_prim_unsigned = ( B ) )
422
#define DEREF_unsigned( A )		( CHECK_NULL ( A )->ag_prim_unsigned )
423
#define CONS_unsigned( A, B, C )\
424
    {\
425
	tdf *x20_ = GEN_tdf ( 2, TYPEID_list ) ;\
426
	COPY_unsigned ( x20_ + 1, ( A ) ) ;\
427
	x20_->ag_ptr = ( B ) ;\
428
	( C ) = x20_ ;\
429
    }
430
 
431
#define UN_CONS_unsigned( A, B, C )\
432
    {\
433
	tdf *x21_ = CHECK_NULL ( C ) ;\
434
	( A ) = DEREF_unsigned ( x21_ + 1 ) ;\
435
	( B ) = x21_->ag_ptr ;\
436
    }
437
 
438
#define DESTROY_CONS_unsigned( D, A, B, C )\
439
    {\
440
	tdf *x22_ = CHECK_NULL ( C ) ;\
441
	( A ) = DEREF_unsigned ( x22_ + 1 ) ;\
442
	( B ) = x22_->ag_ptr ;\
443
	( D ) ( x22_, ( unsigned ) 2 ) ;\
444
    }
445
 
446
#define PUSH_unsigned( A, B )\
447
    {\
448
	tdf **r23_ = &( B ) ;\
449
	tdf *x23_ = GEN_tdf ( 2, TYPEID_stack ) ;\
450
	COPY_unsigned ( x23_ + 1, ( A ) ) ;\
451
	x23_->ag_ptr = *r23_ ;\
452
	*r23_ = x23_ ;\
453
    }
454
 
455
#define POP_unsigned( A, B )\
456
    {\
457
	tdf **r24_ = &( B ) ;\
458
	tdf *x24_ = CHECK_NULL ( *r24_ ) ;\
459
	( A ) = DEREF_unsigned ( x24_ + 1 ) ;\
460
	*r24_ = x24_->ag_ptr ;\
461
	destroy_tdf ( x24_, ( unsigned ) 2 ) ;\
462
    }
463
 
464
 
465
/* Definitions for primitive string */
466
 
467
#define SIZE_string			1
468
 
469
#define COPY_string( A, B )		( CHECK_NULL ( A )->ag_prim_string = ( B ) )
470
#define DEREF_string( A )		( CHECK_NULL ( A )->ag_prim_string )
471
#define CONS_string( A, B, C )\
472
    {\
473
	tdf *x25_ = GEN_tdf ( 2, TYPEID_list ) ;\
474
	COPY_string ( x25_ + 1, ( A ) ) ;\
475
	x25_->ag_ptr = ( B ) ;\
476
	( C ) = x25_ ;\
477
    }
478
 
479
#define UN_CONS_string( A, B, C )\
480
    {\
481
	tdf *x26_ = CHECK_NULL ( C ) ;\
482
	( A ) = DEREF_string ( x26_ + 1 ) ;\
483
	( B ) = x26_->ag_ptr ;\
484
    }
485
 
486
#define DESTROY_CONS_string( D, A, B, C )\
487
    {\
488
	tdf *x27_ = CHECK_NULL ( C ) ;\
489
	( A ) = DEREF_string ( x27_ + 1 ) ;\
490
	( B ) = x27_->ag_ptr ;\
491
	( D ) ( x27_, ( unsigned ) 2 ) ;\
492
    }
493
 
494
#define PUSH_string( A, B )\
495
    {\
496
	tdf **r28_ = &( B ) ;\
497
	tdf *x28_ = GEN_tdf ( 2, TYPEID_stack ) ;\
498
	COPY_string ( x28_ + 1, ( A ) ) ;\
499
	x28_->ag_ptr = *r28_ ;\
500
	*r28_ = x28_ ;\
501
    }
502
 
503
#define POP_string( A, B )\
504
    {\
505
	tdf **r29_ = &( B ) ;\
506
	tdf *x29_ = CHECK_NULL ( *r29_ ) ;\
507
	( A ) = DEREF_string ( x29_ + 1 ) ;\
508
	*r29_ = x29_->ag_ptr ;\
509
	destroy_tdf ( x29_, ( unsigned ) 2 ) ;\
510
    }
511
 
512
 
513
/* Definitions for union PARAMETER */
514
 
515
#define ORDER_par			( ( unsigned ) 1 )
516
#define SIZE_par			1
517
#define NULL_par			( ( PARAMETER ) 0 )
518
#define IS_NULL_par( A )		( ( A ) == 0 )
519
#define EQ_par( A, B )			( ( A ) == ( B ) )
520
 
521
#define COPY_par( A, B )		( CHECK_NULL ( A )->ag_ptr = ( B ) )
522
#define DEREF_par( A )			( CHECK_NULL ( A )->ag_ptr )
523
 
524
#define CONS_par( A, B, C )\
525
    {\
526
	tdf *x30_ = GEN_tdf ( 2, TYPEID_list ) ;\
527
	COPY_par ( x30_ + 1, ( A ) ) ;\
528
	x30_->ag_ptr = ( B ) ;\
529
	( C ) = x30_ ;\
530
    }
531
 
532
#define UN_CONS_par( A, B, C )\
533
    {\
534
	tdf *x31_ = CHECK_NULL ( C ) ;\
535
	( A ) = DEREF_par ( x31_ + 1 ) ;\
536
	( B ) = x31_->ag_ptr ;\
537
    }
538
 
539
#define DESTROY_CONS_par( D, A, B, C )\
540
    {\
541
	tdf *x32_ = CHECK_NULL ( C ) ;\
542
	( A ) = DEREF_par ( x32_ + 1 ) ;\
543
	( B ) = x32_->ag_ptr ;\
544
	( D ) ( x32_, ( unsigned ) 2 ) ;\
545
    }
546
 
547
#define PUSH_par( A, B )\
548
    {\
549
	tdf **r33_ = &( B ) ;\
550
	tdf *x33_ = GEN_tdf ( 2, TYPEID_stack ) ;\
551
	COPY_par ( x33_ + 1, ( A ) ) ;\
552
	x33_->ag_ptr = *r33_ ;\
553
	*r33_ = x33_ ;\
554
    }
555
 
556
#define POP_par( A, B )\
557
    {\
558
	tdf **r34_ = &( B ) ;\
559
	tdf *x34_ = CHECK_NULL ( *r34_ ) ;\
560
	( A ) = DEREF_par ( x34_ + 1 ) ;\
561
	*r34_ = x34_->ag_ptr ;\
562
	destroy_tdf ( x34_, ( unsigned ) 2 ) ;\
563
    }
564
 
565
 
566
/* Definitions for union CONSTRUCT */
567
 
568
#define ORDER_cons			( ( unsigned ) 1 )
569
#define SIZE_cons			1
570
#define NULL_cons			( ( CONSTRUCT ) 0 )
571
#define IS_NULL_cons( A )		( ( A ) == 0 )
572
#define EQ_cons( A, B )			( ( A ) == ( B ) )
573
 
574
#define COPY_cons( A, B )		( CHECK_NULL ( A )->ag_ptr = ( B ) )
575
#define DEREF_cons( A )			( CHECK_NULL ( A )->ag_ptr )
576
 
577
#define CONS_cons( A, B, C )\
578
    {\
579
	tdf *x35_ = GEN_tdf ( 2, TYPEID_list ) ;\
580
	COPY_cons ( x35_ + 1, ( A ) ) ;\
581
	x35_->ag_ptr = ( B ) ;\
582
	( C ) = x35_ ;\
583
    }
584
 
585
#define UN_CONS_cons( A, B, C )\
586
    {\
587
	tdf *x36_ = CHECK_NULL ( C ) ;\
588
	( A ) = DEREF_cons ( x36_ + 1 ) ;\
589
	( B ) = x36_->ag_ptr ;\
590
    }
591
 
592
#define DESTROY_CONS_cons( D, A, B, C )\
593
    {\
594
	tdf *x37_ = CHECK_NULL ( C ) ;\
595
	( A ) = DEREF_cons ( x37_ + 1 ) ;\
596
	( B ) = x37_->ag_ptr ;\
597
	( D ) ( x37_, ( unsigned ) 2 ) ;\
598
    }
599
 
600
#define PUSH_cons( A, B )\
601
    {\
602
	tdf **r38_ = &( B ) ;\
603
	tdf *x38_ = GEN_tdf ( 2, TYPEID_stack ) ;\
604
	COPY_cons ( x38_ + 1, ( A ) ) ;\
605
	x38_->ag_ptr = *r38_ ;\
606
	*r38_ = x38_ ;\
607
    }
608
 
609
#define POP_cons( A, B )\
610
    {\
611
	tdf **r39_ = &( B ) ;\
612
	tdf *x39_ = CHECK_NULL ( *r39_ ) ;\
613
	( A ) = DEREF_cons ( x39_ + 1 ) ;\
614
	*r39_ = x39_->ag_ptr ;\
615
	destroy_tdf ( x39_, ( unsigned ) 2 ) ;\
616
    }
617
 
618
 
619
/* Definitions for union SORT_INFO */
620
 
621
#define ORDER_info			( ( unsigned ) 6 )
622
#define SIZE_info			1
623
#define NULL_info			( ( SORT_INFO ) 0 )
624
#define IS_NULL_info( A )		( ( A ) == 0 )
625
#define EQ_info( A, B )			( ( A ) == ( B ) )
626
 
627
#define COPY_info( A, B )		( CHECK_NULL ( A )->ag_ptr = ( B ) )
628
#define DEREF_info( A )			( CHECK_NULL ( A )->ag_ptr )
629
 
630
#define CONS_info( A, B, C )\
631
    {\
632
	tdf *x40_ = GEN_tdf ( 2, TYPEID_list ) ;\
633
	COPY_info ( x40_ + 1, ( A ) ) ;\
634
	x40_->ag_ptr = ( B ) ;\
635
	( C ) = x40_ ;\
636
    }
637
 
638
#define UN_CONS_info( A, B, C )\
639
    {\
640
	tdf *x41_ = CHECK_NULL ( C ) ;\
641
	( A ) = DEREF_info ( x41_ + 1 ) ;\
642
	( B ) = x41_->ag_ptr ;\
643
    }
644
 
645
#define DESTROY_CONS_info( D, A, B, C )\
646
    {\
647
	tdf *x42_ = CHECK_NULL ( C ) ;\
648
	( A ) = DEREF_info ( x42_ + 1 ) ;\
649
	( B ) = x42_->ag_ptr ;\
650
	( D ) ( x42_, ( unsigned ) 2 ) ;\
651
    }
652
 
653
#define PUSH_info( A, B )\
654
    {\
655
	tdf **r43_ = &( B ) ;\
656
	tdf *x43_ = GEN_tdf ( 2, TYPEID_stack ) ;\
657
	COPY_info ( x43_ + 1, ( A ) ) ;\
658
	x43_->ag_ptr = *r43_ ;\
659
	*r43_ = x43_ ;\
660
    }
661
 
662
#define POP_info( A, B )\
663
    {\
664
	tdf **r44_ = &( B ) ;\
665
	tdf *x44_ = CHECK_NULL ( *r44_ ) ;\
666
	( A ) = DEREF_info ( x44_ + 1 ) ;\
667
	*r44_ = x44_->ag_ptr ;\
668
	destroy_tdf ( x44_, ( unsigned ) 2 ) ;\
669
    }
670
 
671
 
672
/* Definitions for union SORT */
673
 
674
#define ORDER_sort			( ( unsigned ) 1 )
675
#define SIZE_sort			1
676
#define NULL_sort			( ( SORT ) 0 )
677
#define IS_NULL_sort( A )		( ( A ) == 0 )
678
#define EQ_sort( A, B )			( ( A ) == ( B ) )
679
 
680
#define COPY_sort( A, B )		( CHECK_NULL ( A )->ag_ptr = ( B ) )
681
#define DEREF_sort( A )			( CHECK_NULL ( A )->ag_ptr )
682
 
683
#define CONS_sort( A, B, C )\
684
    {\
685
	tdf *x45_ = GEN_tdf ( 2, TYPEID_list ) ;\
686
	COPY_sort ( x45_ + 1, ( A ) ) ;\
687
	x45_->ag_ptr = ( B ) ;\
688
	( C ) = x45_ ;\
689
    }
690
 
691
#define UN_CONS_sort( A, B, C )\
692
    {\
693
	tdf *x46_ = CHECK_NULL ( C ) ;\
694
	( A ) = DEREF_sort ( x46_ + 1 ) ;\
695
	( B ) = x46_->ag_ptr ;\
696
    }
697
 
698
#define DESTROY_CONS_sort( D, A, B, C )\
699
    {\
700
	tdf *x47_ = CHECK_NULL ( C ) ;\
701
	( A ) = DEREF_sort ( x47_ + 1 ) ;\
702
	( B ) = x47_->ag_ptr ;\
703
	( D ) ( x47_, ( unsigned ) 2 ) ;\
704
    }
705
 
706
#define PUSH_sort( A, B )\
707
    {\
708
	tdf **r48_ = &( B ) ;\
709
	tdf *x48_ = GEN_tdf ( 2, TYPEID_stack ) ;\
710
	COPY_sort ( x48_ + 1, ( A ) ) ;\
711
	x48_->ag_ptr = *r48_ ;\
712
	*r48_ = x48_ ;\
713
    }
714
 
715
#define POP_sort( A, B )\
716
    {\
717
	tdf **r49_ = &( B ) ;\
718
	tdf *x49_ = CHECK_NULL ( *r49_ ) ;\
719
	( A ) = DEREF_sort ( x49_ + 1 ) ;\
720
	*r49_ = x49_->ag_ptr ;\
721
	destroy_tdf ( x49_, ( unsigned ) 2 ) ;\
722
    }
723
 
724
 
725
/* Definitions for union LINKAGE */
726
 
727
#define ORDER_link			( ( unsigned ) 1 )
728
#define SIZE_link			1
729
#define NULL_link			( ( LINKAGE ) 0 )
730
#define IS_NULL_link( A )		( ( A ) == 0 )
731
#define EQ_link( A, B )			( ( A ) == ( B ) )
732
 
733
#define COPY_link( A, B )		( CHECK_NULL ( A )->ag_ptr = ( B ) )
734
#define DEREF_link( A )			( CHECK_NULL ( A )->ag_ptr )
735
 
736
#define CONS_link( A, B, C )\
737
    {\
738
	tdf *x50_ = GEN_tdf ( 2, TYPEID_list ) ;\
739
	COPY_link ( x50_ + 1, ( A ) ) ;\
740
	x50_->ag_ptr = ( B ) ;\
741
	( C ) = x50_ ;\
742
    }
743
 
744
#define UN_CONS_link( A, B, C )\
745
    {\
746
	tdf *x51_ = CHECK_NULL ( C ) ;\
747
	( A ) = DEREF_link ( x51_ + 1 ) ;\
748
	( B ) = x51_->ag_ptr ;\
749
    }
750
 
751
#define DESTROY_CONS_link( D, A, B, C )\
752
    {\
753
	tdf *x52_ = CHECK_NULL ( C ) ;\
754
	( A ) = DEREF_link ( x52_ + 1 ) ;\
755
	( B ) = x52_->ag_ptr ;\
756
	( D ) ( x52_, ( unsigned ) 2 ) ;\
757
    }
758
 
759
#define PUSH_link( A, B )\
760
    {\
761
	tdf **r53_ = &( B ) ;\
762
	tdf *x53_ = GEN_tdf ( 2, TYPEID_stack ) ;\
763
	COPY_link ( x53_ + 1, ( A ) ) ;\
764
	x53_->ag_ptr = *r53_ ;\
765
	*r53_ = x53_ ;\
766
    }
767
 
768
#define POP_link( A, B )\
769
    {\
770
	tdf **r54_ = &( B ) ;\
771
	tdf *x54_ = CHECK_NULL ( *r54_ ) ;\
772
	( A ) = DEREF_link ( x54_ + 1 ) ;\
773
	*r54_ = x54_->ag_ptr ;\
774
	destroy_tdf ( x54_, ( unsigned ) 2 ) ;\
775
    }
776
 
777
 
778
/* Definitions for union SPECIFICATION */
779
 
780
#define ORDER_spec			( ( unsigned ) 1 )
781
#define SIZE_spec			1
782
#define NULL_spec			( ( SPECIFICATION ) 0 )
783
#define IS_NULL_spec( A )		( ( A ) == 0 )
784
#define EQ_spec( A, B )			( ( A ) == ( B ) )
785
 
786
#define COPY_spec( A, B )		( CHECK_NULL ( A )->ag_ptr = ( B ) )
787
#define DEREF_spec( A )			( CHECK_NULL ( A )->ag_ptr )
788
 
789
#define CONS_spec( A, B, C )\
790
    {\
791
	tdf *x55_ = GEN_tdf ( 2, TYPEID_list ) ;\
792
	COPY_spec ( x55_ + 1, ( A ) ) ;\
793
	x55_->ag_ptr = ( B ) ;\
794
	( C ) = x55_ ;\
795
    }
796
 
797
#define UN_CONS_spec( A, B, C )\
798
    {\
799
	tdf *x56_ = CHECK_NULL ( C ) ;\
800
	( A ) = DEREF_spec ( x56_ + 1 ) ;\
801
	( B ) = x56_->ag_ptr ;\
802
    }
803
 
804
#define DESTROY_CONS_spec( D, A, B, C )\
805
    {\
806
	tdf *x57_ = CHECK_NULL ( C ) ;\
807
	( A ) = DEREF_spec ( x57_ + 1 ) ;\
808
	( B ) = x57_->ag_ptr ;\
809
	( D ) ( x57_, ( unsigned ) 2 ) ;\
810
    }
811
 
812
#define PUSH_spec( A, B )\
813
    {\
814
	tdf **r58_ = &( B ) ;\
815
	tdf *x58_ = GEN_tdf ( 2, TYPEID_stack ) ;\
816
	COPY_spec ( x58_ + 1, ( A ) ) ;\
817
	x58_->ag_ptr = *r58_ ;\
818
	*r58_ = x58_ ;\
819
    }
820
 
821
#define POP_spec( A, B )\
822
    {\
823
	tdf **r59_ = &( B ) ;\
824
	tdf *x59_ = CHECK_NULL ( *r59_ ) ;\
825
	( A ) = DEREF_spec ( x59_ + 1 ) ;\
826
	*r59_ = x59_->ag_ptr ;\
827
	destroy_tdf ( x59_, ( unsigned ) 2 ) ;\
828
    }
829
 
830
 
831
/* Definitions for union COMMAND */
832
 
833
#define ORDER_cmd			( ( unsigned ) 6 )
834
#define SIZE_cmd			1
835
#define NULL_cmd			( ( COMMAND ) 0 )
836
#define IS_NULL_cmd( A )		( ( A ) == 0 )
837
#define EQ_cmd( A, B )			( ( A ) == ( B ) )
838
 
839
#define COPY_cmd( A, B )		( CHECK_NULL ( A )->ag_ptr = ( B ) )
840
#define DEREF_cmd( A )			( CHECK_NULL ( A )->ag_ptr )
841
 
842
#define CONS_cmd( A, B, C )\
843
    {\
844
	tdf *x60_ = GEN_tdf ( 2, TYPEID_list ) ;\
845
	COPY_cmd ( x60_ + 1, ( A ) ) ;\
846
	x60_->ag_ptr = ( B ) ;\
847
	( C ) = x60_ ;\
848
    }
849
 
850
#define UN_CONS_cmd( A, B, C )\
851
    {\
852
	tdf *x61_ = CHECK_NULL ( C ) ;\
853
	( A ) = DEREF_cmd ( x61_ + 1 ) ;\
854
	( B ) = x61_->ag_ptr ;\
855
    }
856
 
857
#define DESTROY_CONS_cmd( D, A, B, C )\
858
    {\
859
	tdf *x62_ = CHECK_NULL ( C ) ;\
860
	( A ) = DEREF_cmd ( x62_ + 1 ) ;\
861
	( B ) = x62_->ag_ptr ;\
862
	( D ) ( x62_, ( unsigned ) 2 ) ;\
863
    }
864
 
865
#define PUSH_cmd( A, B )\
866
    {\
867
	tdf **r63_ = &( B ) ;\
868
	tdf *x63_ = GEN_tdf ( 2, TYPEID_stack ) ;\
869
	COPY_cmd ( x63_ + 1, ( A ) ) ;\
870
	x63_->ag_ptr = *r63_ ;\
871
	*r63_ = x63_ ;\
872
    }
873
 
874
#define POP_cmd( A, B )\
875
    {\
876
	tdf **r64_ = &( B ) ;\
877
	tdf *x64_ = CHECK_NULL ( *r64_ ) ;\
878
	( A ) = DEREF_cmd ( x64_ + 1 ) ;\
879
	*r64_ = x64_->ag_ptr ;\
880
	destroy_tdf ( x64_, ( unsigned ) 2 ) ;\
881
    }
882
 
883
 
884
/* Maximum allocation size */
885
 
886
#define tdf_GEN_MAX			10
887
 
888
#endif