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, 1998
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 c_class (VERSION 1.1)
32
    BY calculus (VERSION 1.2)
33
*/
34
 
35
#ifndef HASHID_OPS_H_INCLUDED
36
#define HASHID_OPS_H_INCLUDED
37
 
38
/* Operations for union HASHID */
39
 
40
#define TAG_hashid( P )			( CHECK_NULL ( P )->ag_tag )
41
 
42
 
43
/* Operations for component id of union HASHID */
44
 
45
#define hashid_id( P )			( CHECK_NULL ( P ) + 1 )
46
 
47
 
48
/* Operations for component cache of union HASHID */
49
 
50
#define hashid_cache( P )		( CHECK_NULL ( P ) + 2 )
51
 
52
 
53
/* Operations for component next of union HASHID */
54
 
55
#define hashid_next( P )		( CHECK_NULL ( P ) + 3 )
56
 
57
 
58
/* Operations for component hash of union HASHID */
59
 
60
#define hashid_hash( P )		( CHECK_NULL ( P ) + 4 )
61
 
62
 
63
/* Operations for field set name_etc of union HASHID */
64
 
65
#define hashid_name_etc_tag		( ( unsigned ) 2 )
66
#define IS_hashid_name_etc( P )		( ( unsigned ) ( CHECK_NULL ( P )->ag_tag - 0 ) < ( unsigned ) 2 )
67
 
68
#define hashid_name_etc_text( P )	( CHECK_TAG_ETC ( ( P ), 0, 2 ) + 5 )
69
 
70
#define MAKE_hashid_name_etc( tag, next_, hash_, text_, c_class_hashid )\
71
    {\
72
	c_class *x288_ = GEN_c_class ( 6, TYPEID_hashid ) ;\
73
	x288_->ag_tag = ( tag ) ;\
74
	COPY_id ( x288_ + 1, NULL_id ) ;\
75
	COPY_id ( x288_ + 2, NULL_id ) ;\
76
	COPY_hashid ( x288_ + 3, ( next_ ) ) ;\
77
	COPY_ulong ( x288_ + 4, ( hash_ ) ) ;\
78
	COPY_string ( x288_ + 5, ( text_ ) ) ;\
79
	( c_class_hashid ) = CHECK_TAG_ETC ( x288_, 0, 2 ) ;\
80
    }
81
 
82
#define MODIFY_hashid_name_etc( tag, c_class_hashid )\
83
    {\
84
	c_class *x289_ = CHECK_TAG_ETC ( ( c_class_hashid ), 0, 2 ) ;\
85
	x289_->ag_tag = ( tag ) ;\
86
	( void ) CHECK_TAG_ETC ( x289_, 0, 2 ) ;\
87
    }
88
 
89
#define DECONS_hashid_name_etc( id_, cache_, next_, hash_, text_, c_class_hashid )\
90
    {\
91
	c_class *x290_ = CHECK_TAG_ETC ( ( c_class_hashid ), 0, 2 ) ;\
92
	( id_ ) = DEREF_id ( x290_ + 1 ) ;\
93
	( cache_ ) = DEREF_id ( x290_ + 2 ) ;\
94
	( next_ ) = DEREF_hashid ( x290_ + 3 ) ;\
95
	( hash_ ) = DEREF_ulong ( x290_ + 4 ) ;\
96
	( text_ ) = DEREF_string ( x290_ + 5 ) ;\
97
    }
98
 
99
#define DESTROY_hashid_name_etc( destroyer_, id_, cache_, next_, hash_, text_, c_class_hashid )\
100
    {\
101
	c_class *x291_ = CHECK_TAG_ETC ( ( c_class_hashid ), 0, 2 ) ;\
102
	( id_ ) = DEREF_id ( x291_ + 1 ) ;\
103
	( cache_ ) = DEREF_id ( x291_ + 2 ) ;\
104
	( next_ ) = DEREF_hashid ( x291_ + 3 ) ;\
105
	( hash_ ) = DEREF_ulong ( x291_ + 4 ) ;\
106
	( text_ ) = DEREF_string ( x291_ + 5 ) ;\
107
	( destroyer_ ) ( x291_, ( unsigned ) 6 ) ;\
108
    }
109
 
110
 
111
/* Operations for field name of union HASHID */
112
 
113
#define hashid_name_tag			( ( unsigned ) 0 )
114
#define IS_hashid_name( P )		( CHECK_NULL ( P )->ag_tag == 0 )
115
 
116
#define hashid_name_text( P )		( CHECK_TAG ( ( P ), 0 ) + 5 )
117
 
118
#define MAKE_hashid_name( next_, hash_, text_, c_class_hashid )\
119
    {\
120
	c_class *x292_ = GEN_c_class ( 6, TYPEID_hashid ) ;\
121
	x292_->ag_tag = 0 ;\
122
	COPY_id ( x292_ + 1, NULL_id ) ;\
123
	COPY_id ( x292_ + 2, NULL_id ) ;\
124
	COPY_hashid ( x292_ + 3, ( next_ ) ) ;\
125
	COPY_ulong ( x292_ + 4, ( hash_ ) ) ;\
126
	COPY_string ( x292_ + 5, ( text_ ) ) ;\
127
	( c_class_hashid ) = x292_ ;\
128
    }
129
 
130
#define DECONS_hashid_name( id_, cache_, next_, hash_, text_, c_class_hashid )\
131
    {\
132
	c_class *x293_ = CHECK_TAG ( ( c_class_hashid ), 0 ) ;\
133
	( id_ ) = DEREF_id ( x293_ + 1 ) ;\
134
	( cache_ ) = DEREF_id ( x293_ + 2 ) ;\
135
	( next_ ) = DEREF_hashid ( x293_ + 3 ) ;\
136
	( hash_ ) = DEREF_ulong ( x293_ + 4 ) ;\
137
	( text_ ) = DEREF_string ( x293_ + 5 ) ;\
138
    }
139
 
140
#define DESTROY_hashid_name( destroyer_, id_, cache_, next_, hash_, text_, c_class_hashid )\
141
    {\
142
	c_class *x294_ = CHECK_TAG ( ( c_class_hashid ), 0 ) ;\
143
	( id_ ) = DEREF_id ( x294_ + 1 ) ;\
144
	( cache_ ) = DEREF_id ( x294_ + 2 ) ;\
145
	( next_ ) = DEREF_hashid ( x294_ + 3 ) ;\
146
	( hash_ ) = DEREF_ulong ( x294_ + 4 ) ;\
147
	( text_ ) = DEREF_string ( x294_ + 5 ) ;\
148
	( destroyer_ ) ( x294_, ( unsigned ) 6 ) ;\
149
    }
150
 
151
 
152
/* Operations for field ename of union HASHID */
153
 
154
#define hashid_ename_tag		( ( unsigned ) 1 )
155
#define IS_hashid_ename( P )		( CHECK_NULL ( P )->ag_tag == 1 )
156
 
157
#define hashid_ename_text( P )		( CHECK_TAG ( ( P ), 1 ) + 5 )
158
 
159
#define MAKE_hashid_ename( next_, hash_, text_, c_class_hashid )\
160
    {\
161
	c_class *x295_ = GEN_c_class ( 6, TYPEID_hashid ) ;\
162
	x295_->ag_tag = 1 ;\
163
	COPY_id ( x295_ + 1, NULL_id ) ;\
164
	COPY_id ( x295_ + 2, NULL_id ) ;\
165
	COPY_hashid ( x295_ + 3, ( next_ ) ) ;\
166
	COPY_ulong ( x295_ + 4, ( hash_ ) ) ;\
167
	COPY_string ( x295_ + 5, ( text_ ) ) ;\
168
	( c_class_hashid ) = x295_ ;\
169
    }
170
 
171
#define DECONS_hashid_ename( id_, cache_, next_, hash_, text_, c_class_hashid )\
172
    {\
173
	c_class *x296_ = CHECK_TAG ( ( c_class_hashid ), 1 ) ;\
174
	( id_ ) = DEREF_id ( x296_ + 1 ) ;\
175
	( cache_ ) = DEREF_id ( x296_ + 2 ) ;\
176
	( next_ ) = DEREF_hashid ( x296_ + 3 ) ;\
177
	( hash_ ) = DEREF_ulong ( x296_ + 4 ) ;\
178
	( text_ ) = DEREF_string ( x296_ + 5 ) ;\
179
    }
180
 
181
#define DESTROY_hashid_ename( destroyer_, id_, cache_, next_, hash_, text_, c_class_hashid )\
182
    {\
183
	c_class *x297_ = CHECK_TAG ( ( c_class_hashid ), 1 ) ;\
184
	( id_ ) = DEREF_id ( x297_ + 1 ) ;\
185
	( cache_ ) = DEREF_id ( x297_ + 2 ) ;\
186
	( next_ ) = DEREF_hashid ( x297_ + 3 ) ;\
187
	( hash_ ) = DEREF_ulong ( x297_ + 4 ) ;\
188
	( text_ ) = DEREF_string ( x297_ + 5 ) ;\
189
	( destroyer_ ) ( x297_, ( unsigned ) 6 ) ;\
190
    }
191
 
192
 
193
/* Operations for field set constr_etc of union HASHID */
194
 
195
#define hashid_constr_etc_tag		( ( unsigned ) 5 )
196
#define IS_hashid_constr_etc( P )	( ( unsigned ) ( CHECK_NULL ( P )->ag_tag - 2 ) < ( unsigned ) 3 )
197
 
198
#define hashid_constr_etc_type( P )	( CHECK_TAG_ETC ( ( P ), 2, 5 ) + 5 )
199
#define hashid_constr_etc_tid( P )	( CHECK_TAG_ETC ( ( P ), 2, 5 ) + 6 )
200
 
201
#define MAKE_hashid_constr_etc( tag, next_, hash_, type_, tid_, c_class_hashid )\
202
    {\
203
	c_class *x298_ = GEN_c_class ( 7, TYPEID_hashid ) ;\
204
	x298_->ag_tag = ( tag ) ;\
205
	COPY_id ( x298_ + 1, NULL_id ) ;\
206
	COPY_id ( x298_ + 2, NULL_id ) ;\
207
	COPY_hashid ( x298_ + 3, ( next_ ) ) ;\
208
	COPY_ulong ( x298_ + 4, ( hash_ ) ) ;\
209
	COPY_type ( x298_ + 5, ( type_ ) ) ;\
210
	COPY_id ( x298_ + 6, ( tid_ ) ) ;\
211
	( c_class_hashid ) = CHECK_TAG_ETC ( x298_, 2, 5 ) ;\
212
    }
213
 
214
#define MODIFY_hashid_constr_etc( tag, c_class_hashid )\
215
    {\
216
	c_class *x299_ = CHECK_TAG_ETC ( ( c_class_hashid ), 2, 5 ) ;\
217
	x299_->ag_tag = ( tag ) ;\
218
	( void ) CHECK_TAG_ETC ( x299_, 2, 5 ) ;\
219
    }
220
 
221
#define DECONS_hashid_constr_etc( id_, cache_, next_, hash_, type_, tid_, c_class_hashid )\
222
    {\
223
	c_class *x300_ = CHECK_TAG_ETC ( ( c_class_hashid ), 2, 5 ) ;\
224
	( id_ ) = DEREF_id ( x300_ + 1 ) ;\
225
	( cache_ ) = DEREF_id ( x300_ + 2 ) ;\
226
	( next_ ) = DEREF_hashid ( x300_ + 3 ) ;\
227
	( hash_ ) = DEREF_ulong ( x300_ + 4 ) ;\
228
	( type_ ) = DEREF_type ( x300_ + 5 ) ;\
229
	( tid_ ) = DEREF_id ( x300_ + 6 ) ;\
230
    }
231
 
232
#define DESTROY_hashid_constr_etc( destroyer_, id_, cache_, next_, hash_, type_, tid_, c_class_hashid )\
233
    {\
234
	c_class *x301_ = CHECK_TAG_ETC ( ( c_class_hashid ), 2, 5 ) ;\
235
	( id_ ) = DEREF_id ( x301_ + 1 ) ;\
236
	( cache_ ) = DEREF_id ( x301_ + 2 ) ;\
237
	( next_ ) = DEREF_hashid ( x301_ + 3 ) ;\
238
	( hash_ ) = DEREF_ulong ( x301_ + 4 ) ;\
239
	( type_ ) = DEREF_type ( x301_ + 5 ) ;\
240
	( tid_ ) = DEREF_id ( x301_ + 6 ) ;\
241
	( destroyer_ ) ( x301_, ( unsigned ) 7 ) ;\
242
    }
243
 
244
 
245
/* Operations for field constr of union HASHID */
246
 
247
#define hashid_constr_tag		( ( unsigned ) 2 )
248
#define IS_hashid_constr( P )		( CHECK_NULL ( P )->ag_tag == 2 )
249
 
250
#define hashid_constr_type( P )		( CHECK_TAG ( ( P ), 2 ) + 5 )
251
#define hashid_constr_tid( P )		( CHECK_TAG ( ( P ), 2 ) + 6 )
252
 
253
#define MAKE_hashid_constr( next_, hash_, type_, tid_, c_class_hashid )\
254
    {\
255
	c_class *x302_ = GEN_c_class ( 7, TYPEID_hashid ) ;\
256
	x302_->ag_tag = 2 ;\
257
	COPY_id ( x302_ + 1, NULL_id ) ;\
258
	COPY_id ( x302_ + 2, NULL_id ) ;\
259
	COPY_hashid ( x302_ + 3, ( next_ ) ) ;\
260
	COPY_ulong ( x302_ + 4, ( hash_ ) ) ;\
261
	COPY_type ( x302_ + 5, ( type_ ) ) ;\
262
	COPY_id ( x302_ + 6, ( tid_ ) ) ;\
263
	( c_class_hashid ) = x302_ ;\
264
    }
265
 
266
#define DECONS_hashid_constr( id_, cache_, next_, hash_, type_, tid_, c_class_hashid )\
267
    {\
268
	c_class *x303_ = CHECK_TAG ( ( c_class_hashid ), 2 ) ;\
269
	( id_ ) = DEREF_id ( x303_ + 1 ) ;\
270
	( cache_ ) = DEREF_id ( x303_ + 2 ) ;\
271
	( next_ ) = DEREF_hashid ( x303_ + 3 ) ;\
272
	( hash_ ) = DEREF_ulong ( x303_ + 4 ) ;\
273
	( type_ ) = DEREF_type ( x303_ + 5 ) ;\
274
	( tid_ ) = DEREF_id ( x303_ + 6 ) ;\
275
    }
276
 
277
#define DESTROY_hashid_constr( destroyer_, id_, cache_, next_, hash_, type_, tid_, c_class_hashid )\
278
    {\
279
	c_class *x304_ = CHECK_TAG ( ( c_class_hashid ), 2 ) ;\
280
	( id_ ) = DEREF_id ( x304_ + 1 ) ;\
281
	( cache_ ) = DEREF_id ( x304_ + 2 ) ;\
282
	( next_ ) = DEREF_hashid ( x304_ + 3 ) ;\
283
	( hash_ ) = DEREF_ulong ( x304_ + 4 ) ;\
284
	( type_ ) = DEREF_type ( x304_ + 5 ) ;\
285
	( tid_ ) = DEREF_id ( x304_ + 6 ) ;\
286
	( destroyer_ ) ( x304_, ( unsigned ) 7 ) ;\
287
    }
288
 
289
 
290
/* Operations for field destr of union HASHID */
291
 
292
#define hashid_destr_tag		( ( unsigned ) 3 )
293
#define IS_hashid_destr( P )		( CHECK_NULL ( P )->ag_tag == 3 )
294
 
295
#define hashid_destr_type( P )		( CHECK_TAG ( ( P ), 3 ) + 5 )
296
#define hashid_destr_tid( P )		( CHECK_TAG ( ( P ), 3 ) + 6 )
297
 
298
#define MAKE_hashid_destr( next_, hash_, type_, tid_, c_class_hashid )\
299
    {\
300
	c_class *x305_ = GEN_c_class ( 7, TYPEID_hashid ) ;\
301
	x305_->ag_tag = 3 ;\
302
	COPY_id ( x305_ + 1, NULL_id ) ;\
303
	COPY_id ( x305_ + 2, NULL_id ) ;\
304
	COPY_hashid ( x305_ + 3, ( next_ ) ) ;\
305
	COPY_ulong ( x305_ + 4, ( hash_ ) ) ;\
306
	COPY_type ( x305_ + 5, ( type_ ) ) ;\
307
	COPY_id ( x305_ + 6, ( tid_ ) ) ;\
308
	( c_class_hashid ) = x305_ ;\
309
    }
310
 
311
#define DECONS_hashid_destr( id_, cache_, next_, hash_, type_, tid_, c_class_hashid )\
312
    {\
313
	c_class *x306_ = CHECK_TAG ( ( c_class_hashid ), 3 ) ;\
314
	( id_ ) = DEREF_id ( x306_ + 1 ) ;\
315
	( cache_ ) = DEREF_id ( x306_ + 2 ) ;\
316
	( next_ ) = DEREF_hashid ( x306_ + 3 ) ;\
317
	( hash_ ) = DEREF_ulong ( x306_ + 4 ) ;\
318
	( type_ ) = DEREF_type ( x306_ + 5 ) ;\
319
	( tid_ ) = DEREF_id ( x306_ + 6 ) ;\
320
    }
321
 
322
#define DESTROY_hashid_destr( destroyer_, id_, cache_, next_, hash_, type_, tid_, c_class_hashid )\
323
    {\
324
	c_class *x307_ = CHECK_TAG ( ( c_class_hashid ), 3 ) ;\
325
	( id_ ) = DEREF_id ( x307_ + 1 ) ;\
326
	( cache_ ) = DEREF_id ( x307_ + 2 ) ;\
327
	( next_ ) = DEREF_hashid ( x307_ + 3 ) ;\
328
	( hash_ ) = DEREF_ulong ( x307_ + 4 ) ;\
329
	( type_ ) = DEREF_type ( x307_ + 5 ) ;\
330
	( tid_ ) = DEREF_id ( x307_ + 6 ) ;\
331
	( destroyer_ ) ( x307_, ( unsigned ) 7 ) ;\
332
    }
333
 
334
 
335
/* Operations for field conv of union HASHID */
336
 
337
#define hashid_conv_tag			( ( unsigned ) 4 )
338
#define IS_hashid_conv( P )		( CHECK_NULL ( P )->ag_tag == 4 )
339
 
340
#define hashid_conv_type( P )		( CHECK_TAG ( ( P ), 4 ) + 5 )
341
#define hashid_conv_tid( P )		( CHECK_TAG ( ( P ), 4 ) + 6 )
342
 
343
#define MAKE_hashid_conv( next_, hash_, type_, tid_, c_class_hashid )\
344
    {\
345
	c_class *x308_ = GEN_c_class ( 7, TYPEID_hashid ) ;\
346
	x308_->ag_tag = 4 ;\
347
	COPY_id ( x308_ + 1, NULL_id ) ;\
348
	COPY_id ( x308_ + 2, NULL_id ) ;\
349
	COPY_hashid ( x308_ + 3, ( next_ ) ) ;\
350
	COPY_ulong ( x308_ + 4, ( hash_ ) ) ;\
351
	COPY_type ( x308_ + 5, ( type_ ) ) ;\
352
	COPY_id ( x308_ + 6, ( tid_ ) ) ;\
353
	( c_class_hashid ) = x308_ ;\
354
    }
355
 
356
#define DECONS_hashid_conv( id_, cache_, next_, hash_, type_, tid_, c_class_hashid )\
357
    {\
358
	c_class *x309_ = CHECK_TAG ( ( c_class_hashid ), 4 ) ;\
359
	( id_ ) = DEREF_id ( x309_ + 1 ) ;\
360
	( cache_ ) = DEREF_id ( x309_ + 2 ) ;\
361
	( next_ ) = DEREF_hashid ( x309_ + 3 ) ;\
362
	( hash_ ) = DEREF_ulong ( x309_ + 4 ) ;\
363
	( type_ ) = DEREF_type ( x309_ + 5 ) ;\
364
	( tid_ ) = DEREF_id ( x309_ + 6 ) ;\
365
    }
366
 
367
#define DESTROY_hashid_conv( destroyer_, id_, cache_, next_, hash_, type_, tid_, c_class_hashid )\
368
    {\
369
	c_class *x310_ = CHECK_TAG ( ( c_class_hashid ), 4 ) ;\
370
	( id_ ) = DEREF_id ( x310_ + 1 ) ;\
371
	( cache_ ) = DEREF_id ( x310_ + 2 ) ;\
372
	( next_ ) = DEREF_hashid ( x310_ + 3 ) ;\
373
	( hash_ ) = DEREF_ulong ( x310_ + 4 ) ;\
374
	( type_ ) = DEREF_type ( x310_ + 5 ) ;\
375
	( tid_ ) = DEREF_id ( x310_ + 6 ) ;\
376
	( destroyer_ ) ( x310_, ( unsigned ) 7 ) ;\
377
    }
378
 
379
 
380
/* Operations for field op of union HASHID */
381
 
382
#define hashid_op_tag			( ( unsigned ) 5 )
383
#define IS_hashid_op( P )		( CHECK_NULL ( P )->ag_tag == 5 )
384
 
385
#define hashid_op_lex( P )		( CHECK_TAG ( ( P ), 5 ) + 5 )
386
 
387
#define MAKE_hashid_op( next_, hash_, lex_, c_class_hashid )\
388
    {\
389
	c_class *x311_ = GEN_c_class ( 6, TYPEID_hashid ) ;\
390
	x311_->ag_tag = 5 ;\
391
	COPY_id ( x311_ + 1, NULL_id ) ;\
392
	COPY_id ( x311_ + 2, NULL_id ) ;\
393
	COPY_hashid ( x311_ + 3, ( next_ ) ) ;\
394
	COPY_ulong ( x311_ + 4, ( hash_ ) ) ;\
395
	COPY_int ( x311_ + 5, ( lex_ ) ) ;\
396
	( c_class_hashid ) = x311_ ;\
397
    }
398
 
399
#define DECONS_hashid_op( id_, cache_, next_, hash_, lex_, c_class_hashid )\
400
    {\
401
	c_class *x312_ = CHECK_TAG ( ( c_class_hashid ), 5 ) ;\
402
	( id_ ) = DEREF_id ( x312_ + 1 ) ;\
403
	( cache_ ) = DEREF_id ( x312_ + 2 ) ;\
404
	( next_ ) = DEREF_hashid ( x312_ + 3 ) ;\
405
	( hash_ ) = DEREF_ulong ( x312_ + 4 ) ;\
406
	( lex_ ) = DEREF_int ( x312_ + 5 ) ;\
407
    }
408
 
409
#define DESTROY_hashid_op( destroyer_, id_, cache_, next_, hash_, lex_, c_class_hashid )\
410
    {\
411
	c_class *x313_ = CHECK_TAG ( ( c_class_hashid ), 5 ) ;\
412
	( id_ ) = DEREF_id ( x313_ + 1 ) ;\
413
	( cache_ ) = DEREF_id ( x313_ + 2 ) ;\
414
	( next_ ) = DEREF_hashid ( x313_ + 3 ) ;\
415
	( hash_ ) = DEREF_ulong ( x313_ + 4 ) ;\
416
	( lex_ ) = DEREF_int ( x313_ + 5 ) ;\
417
	( destroyer_ ) ( x313_, ( unsigned ) 6 ) ;\
418
    }
419
 
420
 
421
/* Operations for field anon of union HASHID */
422
 
423
#define hashid_anon_tag			( ( unsigned ) 6 )
424
#define IS_hashid_anon( P )		( CHECK_NULL ( P )->ag_tag == 6 )
425
 
426
#define hashid_anon_uniq( P )		( CHECK_TAG ( ( P ), 6 ) + 5 )
427
 
428
#define MAKE_hashid_anon( next_, hash_, uniq_, c_class_hashid )\
429
    {\
430
	c_class *x314_ = GEN_c_class ( 6, TYPEID_hashid ) ;\
431
	x314_->ag_tag = 6 ;\
432
	COPY_id ( x314_ + 1, NULL_id ) ;\
433
	COPY_id ( x314_ + 2, NULL_id ) ;\
434
	COPY_hashid ( x314_ + 3, ( next_ ) ) ;\
435
	COPY_ulong ( x314_ + 4, ( hash_ ) ) ;\
436
	COPY_ulong ( x314_ + 5, ( uniq_ ) ) ;\
437
	( c_class_hashid ) = x314_ ;\
438
    }
439
 
440
#define DECONS_hashid_anon( id_, cache_, next_, hash_, uniq_, c_class_hashid )\
441
    {\
442
	c_class *x315_ = CHECK_TAG ( ( c_class_hashid ), 6 ) ;\
443
	( id_ ) = DEREF_id ( x315_ + 1 ) ;\
444
	( cache_ ) = DEREF_id ( x315_ + 2 ) ;\
445
	( next_ ) = DEREF_hashid ( x315_ + 3 ) ;\
446
	( hash_ ) = DEREF_ulong ( x315_ + 4 ) ;\
447
	( uniq_ ) = DEREF_ulong ( x315_ + 5 ) ;\
448
    }
449
 
450
#define DESTROY_hashid_anon( destroyer_, id_, cache_, next_, hash_, uniq_, c_class_hashid )\
451
    {\
452
	c_class *x316_ = CHECK_TAG ( ( c_class_hashid ), 6 ) ;\
453
	( id_ ) = DEREF_id ( x316_ + 1 ) ;\
454
	( cache_ ) = DEREF_id ( x316_ + 2 ) ;\
455
	( next_ ) = DEREF_hashid ( x316_ + 3 ) ;\
456
	( hash_ ) = DEREF_ulong ( x316_ + 4 ) ;\
457
	( uniq_ ) = DEREF_ulong ( x316_ + 5 ) ;\
458
	( destroyer_ ) ( x316_, ( unsigned ) 6 ) ;\
459
    }
460
 
461
 
462
#endif