YAP 7.1.0
type_absmi_insts.h
1#if 0
2{
3 {
4#endif
5 /************************************************************************ \
6 * Basic Primitive Predicates *
7\************************************************************************/
8
9 Op(p_atom_x, xl);
10 BEGD(d0);
11 d0 = XREG(PREG->y_u.xl.x);
12 deref_head(d0, atom_x_unk);
13 atom_x_nvar:
14 if (IsAtomTerm(d0) && !IsBlob(AtomOfTerm(d0))) {
15 PREG = NEXTOP(PREG, xl);
16 GONext();
17 }
18 else {
19 PREG = PREG->y_u.xl.F;
20 GONext();
21 }
22
23 BEGP(pt0);
24 deref_body(d0, pt0, atom_x_unk, atom_x_nvar);
25 PREG = PREG->y_u.xl.F;
26 GONext();
27 ENDP(pt0);
28 ENDD(d0);
29 ENDOp();
30
31 Op(p_atom_y, yl);
32 BEGD(d0);
33 BEGP(pt0);
34 pt0 = YREG + PREG->y_u.yl.y;
35 d0 = *pt0;
36 deref_head(d0, atom_y_unk);
37 atom_y_nvar:
38 if (IsAtomTerm(d0) && !IsBlob(AtomOfTerm(d0))) {
39 PREG = NEXTOP(PREG, yl);
40 GONext();
41 }
42 else {
43 PREG = PREG->y_u.yl.F;
44 GONext();
45 }
46
47 derefa_body(d0, pt0, atom_y_unk, atom_y_nvar);
48 PREG = PREG->y_u.yl.F;
49 GONext();
50 ENDP(pt0);
51 ENDD(d0);
52 ENDOp();
53
54 Op(p_atomic_x, xl);
55 BEGD(d0);
56 d0 = XREG(PREG->y_u.xl.x);
57 deref_head(d0, atomic_x_unk);
58 atomic_x_nvar:
59 /* non variable */
60 if (IsAtomicTerm(d0)) {
61 PREG = NEXTOP(PREG, xl);
62 GONext();
63 }
64 else {
65 PREG = PREG->y_u.xl.F;
66 GONext();
67 }
68
69 BEGP(pt0);
70 deref_body(d0, pt0, atomic_x_unk, atomic_x_nvar);
71 PREG = PREG->y_u.xl.F;
72 GONext();
73 ENDP(pt0);
74 ENDD(d0);
75 ENDOp();
76
77 Op(p_atomic_y, yl);
78 BEGD(d0);
79 BEGP(pt0);
80 pt0 = YREG + PREG->y_u.yl.y;
81 d0 = *pt0;
82 deref_head(d0, atomic_y_unk);
83 atomic_y_nvar:
84 /* non variable */
85 if (IsAtomicTerm(d0)) {
86 PREG = NEXTOP(PREG, yl);
87 GONext();
88 }
89 else {
90 PREG = PREG->y_u.yl.F;
91 GONext();
92 }
93
94 derefa_body(d0, pt0, atomic_y_unk, atomic_y_nvar);
95 PREG = PREG->y_u.yl.F;
96 GONext();
97 ENDP(pt0);
98 ENDD(d0);
99 ENDOp();
100
101 Op(p_integer_x, xl);
102 BEGD(d0);
103 d0 = XREG(PREG->y_u.xl.x);
104 deref_head(d0, integer_x_unk);
105 integer_x_nvar:
106 /* non variable */
107 if (IsIntTerm(d0)) {
108 PREG = NEXTOP(PREG, xl);
109 GONext();
110 }
111 if (IsApplTerm(d0)) {
112 Functor f0 = FunctorOfTerm(d0);
113 if (IsExtensionFunctor(f0)) {
114 switch ((CELL)f0) {
115 case (CELL)FunctorBigInt:
116 { CELL *pt = RepAppl(d0);
117 if ( pt[1] != BIG_INT ) {
118 PREG = PREG->y_u.xl.F;
119 GONext();
120 }
121 }
122 PREG = NEXTOP(PREG, xl);
123 GONext();
124 break;
125 case (CELL)FunctorLongInt:
126 PREG = NEXTOP(PREG, xl);
127 GONext();
128 break;
129 default:
130 PREG = PREG->y_u.xl.F;
131 GONext();
132 }
133 }
134 }
135 PREG = PREG->y_u.xl.F;
136 GONext();
137
138 BEGP(pt0);
139 deref_body(d0, pt0, integer_x_unk, integer_x_nvar);
140 PREG = PREG->y_u.xl.F;
141 GONext();
142 ENDP(pt0);
143 ENDD(d0);
144 ENDOp();
145
146 Op(p_integer_y, yl);
147 BEGD(d0);
148 BEGP(pt0);
149 pt0 = YREG + PREG->y_u.yl.y;
150 d0 = *pt0;
151 deref_head(d0, integer_y_unk);
152 integer_y_nvar:
153 /* non variable */
154 if (IsIntTerm(d0)) {
155 PREG = NEXTOP(PREG, yl);
156 GONext();
157 }
158 if (IsApplTerm(d0)) {
159 Functor f0 = FunctorOfTerm(d0);
160 if (IsExtensionFunctor(f0)) {
161 switch ((CELL)f0) {
162 case (CELL)FunctorBigInt:
163 { CELL *pt = RepAppl(d0);
164 if ( pt[1] != BIG_INT ) {
165 PREG = PREG->y_u.yl.F;
166 GONext();
167 }
168 }
169 PREG = NEXTOP(PREG, yl);
170 GONext();
171 break;
172 case (CELL)FunctorLongInt:
173 PREG = NEXTOP(PREG, yl);
174 GONext();
175 break;
176 default:
177 PREG = PREG->y_u.yl.F;
178 GONext();
179 }
180 }
181 }
182 PREG = PREG->y_u.yl.F;
183 GONext();
184
185 derefa_body(d0, pt0, integer_y_unk, integer_y_nvar);
186 PREG = PREG->y_u.yl.F;
187 GONext();
188 ENDP(pt0);
189 ENDD(d0);
190 ENDOp();
191
192 Op(p_nonvar_x, xl);
193 BEGD(d0);
194 d0 = XREG(PREG->y_u.xl.x);
195 deref_head(d0, nonvar_x_unk);
196 nonvar_x_nvar:
197 PREG = NEXTOP(PREG, xl);
198 GONext();
199
200 BEGP(pt0);
201 deref_body(d0, pt0, nonvar_x_unk, nonvar_x_nvar);
202 PREG = PREG->y_u.xl.F;
203 GONext();
204 ENDP(pt0);
205 ENDD(d0);
206 ENDOp();
207
208 Op(p_nonvar_y, yl);
209 BEGD(d0);
210 BEGP(pt0);
211 pt0 = YREG + PREG->y_u.yl.y;
212 d0 = *pt0;
213 deref_head(d0, nonvar_y_unk);
214 nonvar_y_nvar:
215 PREG = NEXTOP(PREG, yl);
216 GONext();
217
218 derefa_body(d0, pt0, nonvar_y_unk, nonvar_y_nvar);
219 PREG = PREG->y_u.yl.F;
220 GONext();
221 ENDP(pt0);
222 ENDD(d0);
223 ENDOp();
224
225 Op(p_number_x, xl);
226 BEGD(d0);
227 d0 = XREG(PREG->y_u.xl.x);
228 deref_head(d0, number_x_unk);
229 number_x_nvar:
230 /* non variable */
231 if (IsIntTerm(d0)) {
232 PREG = NEXTOP(PREG, xl);
233 GONext();
234 }
235 if (IsApplTerm(d0)) {
236 Functor f0 = FunctorOfTerm(d0);
237 if (IsExtensionFunctor(f0)) {
238 switch ((CELL)f0) {
239 case (CELL)FunctorBigInt:
240 { CELL *pt = RepAppl(d0);
241 if ( pt[1] != BIG_RATIONAL && pt[1] != BIG_INT ) {
242 PREG = PREG->y_u.xl.F;
243 GONext();
244 }
245 }
246 case (CELL)FunctorLongInt:
247 case (CELL)FunctorDouble:
248 PREG = NEXTOP(PREG, xl);
249 GONext();
250 break;
251 default:
252 PREG = PREG->y_u.xl.F;
253 GONext();
254 }
255 }
256 }
257 PREG = PREG->y_u.xl.F;
258 GONext();
259
260 BEGP(pt0);
261 deref_body(d0, pt0, number_x_unk, number_x_nvar);
262 PREG = PREG->y_u.xl.F;
263 GONext();
264 ENDP(pt0);
265 ENDD(d0);
266 ENDOp();
267
268 Op(p_number_y, yl);
269 BEGD(d0);
270 BEGP(pt0);
271 pt0 = YREG + PREG->y_u.yl.y;
272 d0 = *pt0;
273 deref_head(d0, number_y_unk);
274 number_y_nvar:
275 /* non variable */
276 /* non variable */
277 if (IsIntTerm(d0)) {
278 PREG = NEXTOP(PREG, xl);
279 GONext();
280 }
281 if (IsApplTerm(d0)) {
282 Functor f0 = FunctorOfTerm(d0);
283 if (IsExtensionFunctor(f0)) {
284 switch ((CELL)f0) {
285 case (CELL)FunctorBigInt:
286 { CELL *pt = RepAppl(d0);
287 if ( pt[1] != BIG_RATIONAL && pt[1] != BIG_INT ) {
288 PREG = PREG->y_u.yl.F;
289 GONext();
290 }
291 }
292 break;
293 case (CELL)FunctorLongInt:
294 case (CELL)FunctorDouble:
295 PREG = NEXTOP(PREG, yl);
296 GONext();
297 break;
298 default:
299 PREG = PREG->y_u.yl.F;
300 GONext();
301 }
302 }
303 }
304 PREG = PREG->y_u.yl.F;
305 GONext();
306
307 derefa_body(d0, pt0, number_y_unk, number_y_nvar);
308 PREG = PREG->y_u.yl.F;
309 GONext();
310 ENDP(pt0);
311 ENDD(d0);
312 ENDOp();
313
314 Op(p_var_x, xl);
315 BEGD(d0);
316 d0 = XREG(PREG->y_u.xl.x);
317 deref_head(d0, var_x_unk);
318 var_x_nvar:
319 /* non variable */
320 PREG = PREG->y_u.xl.F;
321 GONext();
322
323 BEGP(pt0);
324 deref_body(d0, pt0, var_x_unk, var_x_nvar);
325 PREG = NEXTOP(PREG, xl);
326 GONext();
327 ENDP(pt0);
328 ENDD(d0);
329 ENDOp();
330
331 Op(p_var_y, yl);
332 BEGD(d0);
333 BEGP(pt0);
334 pt0 = YREG + PREG->y_u.yl.y;
335 d0 = *pt0;
336 deref_head(d0, var_y_unk);
337 var_y_nvar:
338 /* non variable */
339 PREG = PREG->y_u.yl.F;
340 GONext();
341
342 derefa_body(d0, pt0, var_y_unk, var_y_nvar);
343 PREG = NEXTOP(PREG, yl);
344 GONext();
345 ENDP(pt0);
346 ENDD(d0);
347 ENDOp();
348
349 Op(p_db_ref_x, xl);
350 BEGD(d0);
351 d0 = XREG(PREG->y_u.xl.x);
352 deref_head(d0, dbref_x_unk);
353 dbref_x_nvar:
354 /* non variable */
355 if (IsDBRefTerm(d0)) {
356 /* only allow references to the database, not general references
357 * to go through. */
358 PREG = NEXTOP(PREG, xl);
359 GONext();
360 }
361 else {
362 PREG = PREG->y_u.xl.F;
363 GONext();
364 }
365
366 BEGP(pt0);
367 deref_body(d0, pt0, dbref_x_unk, dbref_x_nvar);
368 PREG = PREG->y_u.xl.F;
369 GONext();
370 ENDP(pt0);
371 ENDD(d0);
372 ENDOp();
373
374 Op(p_db_ref_y, yl);
375 BEGD(d0);
376 BEGP(pt0);
377 pt0 = YREG + PREG->y_u.yl.y;
378 d0 = *pt0;
379 deref_head(d0, dbref_y_unk);
380 dbref_y_nvar:
381 /* non variable */
382 if (IsDBRefTerm(d0)) {
383 /* only allow references to the database, not general references
384 * to go through. */
385 PREG = NEXTOP(PREG, yl);
386 GONext();
387 }
388 else {
389 PREG = PREG->y_u.yl.F;
390 GONext();
391 }
392
393 derefa_body(d0, pt0, dbref_y_unk, dbref_y_nvar);
394 PREG = PREG->y_u.yl.F;
395 GONext();
396 ENDP(pt0);
397 ENDD(d0);
398 ENDOp();
399
400 Op(p_primitive_x, xl);
401 BEGD(d0);
402 d0 = XREG(PREG->y_u.xl.x);
403 deref_head(d0, primi_x_unk);
404 primi_x_nvar:
405 /* non variable */
406 if (IsPrimitiveTerm(d0)) {
407 PREG = NEXTOP(PREG, xl);
408 GONext();
409 }
410 else {
411 PREG = PREG->y_u.xl.F;
412 GONext();
413 }
414
415 BEGP(pt0);
416 deref_body(d0, pt0, primi_x_unk, primi_x_nvar);
417 PREG = PREG->y_u.xl.F;
418 GONext();
419 ENDP(pt0);
420 ENDD(d0);
421 ENDOp();
422
423 Op(p_primitive_y, yl);
424 BEGD(d0);
425 BEGP(pt0);
426 pt0 = YREG + PREG->y_u.yl.y;
427 d0 = *pt0;
428 deref_head(d0, primi_y_unk);
429 primi_y_nvar:
430 /* non variable */
431 if (IsPrimitiveTerm(d0)) {
432 PREG = NEXTOP(PREG, yl);
433 GONext();
434 }
435 else {
436 PREG = PREG->y_u.yl.F;
437 GONext();
438 }
439
440 derefa_body(d0, pt0, primi_y_unk, primi_y_nvar);
441 PREG = PREG->y_u.yl.F;
442 GONext();
443 ENDP(pt0);
444 ENDD(d0);
445 ENDOp();
446
447 Op(p_compound_x, xl);
448 BEGD(d0);
449 d0 = XREG(PREG->y_u.xl.x);
450 deref_head(d0, compound_x_unk);
451 compound_x_nvar:
452 /* non variable */
453 if (IsPairTerm(d0)) {
454 PREG = NEXTOP(PREG, xl);
455 GONext();
456 }
457 else if (IsApplTerm(d0)) {
458 if (IsExtensionFunctor(FunctorOfTerm(d0))) {
459 PREG = PREG->y_u.xl.F;
460 GONext();
461 }
462 PREG = NEXTOP(PREG, xl);
463 GONext();
464 }
465 else {
466 PREG = PREG->y_u.xl.F;
467 GONext();
468 }
469
470 BEGP(pt0);
471 deref_body(d0, pt0, compound_x_unk, compound_x_nvar);
472 PREG = PREG->y_u.xl.F;
473 GONext();
474 ENDP(pt0);
475 ENDD(d0);
476 ENDOp();
477
478 Op(p_compound_y, yl);
479 BEGD(d0);
480 BEGP(pt0);
481 pt0 = YREG + PREG->y_u.yl.y;
482 d0 = *pt0;
483 deref_head(d0, compound_y_unk);
484 compound_y_nvar:
485 /* non variable */
486 if (IsPairTerm(d0)) {
487 PREG = NEXTOP(PREG, yl);
488 GONext();
489 }
490 else if (IsApplTerm(d0)) {
491 if (IsExtensionFunctor(FunctorOfTerm(d0))) {
492 PREG = PREG->y_u.yl.F;
493 GONext();
494 }
495 PREG = NEXTOP(PREG, yl);
496 GONext();
497 }
498 else {
499 PREG = PREG->y_u.yl.F;
500 GONext();
501 }
502
503 derefa_body(d0, pt0, compound_y_unk, compound_y_nvar);
504 PREG = PREG->y_u.yl.F;
505 GONext();
506 ENDP(pt0);
507 ENDD(d0);
508 ENDOp();
509
510 Op(p_float_x, xl);
511 BEGD(d0);
512 d0 = XREG(PREG->y_u.xl.x);
513 deref_head(d0, float_x_unk);
514 float_x_nvar:
515 /* non variable */
516 if (IsFloatTerm(d0)) {
517 PREG = NEXTOP(PREG, xl);
518 GONext();
519 }
520 PREG = PREG->y_u.xl.F;
521 GONext();
522
523 BEGP(pt0);
524 deref_body(d0, pt0, float_x_unk, float_x_nvar);
525 PREG = PREG->y_u.xl.F;
526 GONext();
527 ENDP(pt0);
528 ENDD(d0);
529 ENDOp();
530
531 Op(p_float_y, yl);
532 BEGD(d0);
533 BEGP(pt0);
534 pt0 = YREG + PREG->y_u.yl.y;
535 d0 = *pt0;
536 deref_head(d0, float_y_unk);
537 float_y_nvar:
538 /* non variable */
539 if (IsFloatTerm(d0)) {
540 PREG = NEXTOP(PREG, yl);
541 GONext();
542 }
543 PREG = PREG->y_u.yl.F;
544 GONext();
545
546 derefa_body(d0, pt0, float_y_unk, float_y_nvar);
547 PREG = PREG->y_u.yl.F;
548 GONext();
549 ENDP(pt0);
550 ENDD(d0);
551 ENDOp();