7 op_numbers op = Yap_op_from_opcode(cl->opc);
15 cl = NEXTOP(cl,Osbpa);
18 if (iarg == Yap_regnotoreg(1)) {
19 if (IsApplTerm(cl->y_u.cc.c1)) {
20 CELL *pt = RepAppl(cl->y_u.cc.c1);
21 clause->Tag = AbsAppl((CELL *)pt[0]);
22 clause->ucd.t_ptr = cl->y_u.cc.c1;
24 clause->Tag = cl->y_u.cc.c1;
27 if (iarg == Yap_regnotoreg(2)) {
28 if (IsApplTerm(cl->y_u.cc.c2)) {
29 CELL *pt = RepAppl(cl->y_u.cc.c2);
30 clause->Tag = AbsAppl((CELL *)pt[0]);
31 clause->ucd.t_ptr = cl->y_u.cc.c2;
33 clause->Tag = cl->y_u.cc.c2;
39 if (iarg == Yap_regnotoreg(1)) {
40 if (IsApplTerm(cl->y_u.ccc.c1)) {
41 CELL *pt = RepAppl(cl->y_u.ccc.c1);
42 clause->Tag = AbsAppl((CELL *)pt[0]);
43 clause->ucd.t_ptr = cl->y_u.ccc.c1;
45 clause->Tag = cl->y_u.ccc.c1;
48 if (iarg == Yap_regnotoreg(2)) {
49 if (IsApplTerm(cl->y_u.ccc.c2)) {
50 CELL *pt = RepAppl(cl->y_u.ccc.c2);
51 clause->Tag = AbsAppl((CELL *)pt[0]);
52 clause->ucd.t_ptr = cl->y_u.ccc.c2;
54 clause->Tag = cl->y_u.ccc.c2;
57 if (iarg == Yap_regnotoreg(3)) {
58 if (IsApplTerm(cl->y_u.ccc.c3)) {
59 CELL *pt = RepAppl(cl->y_u.ccc.c3);
60 clause->Tag = AbsAppl((CELL *)pt[0]);
61 clause->ucd.t_ptr = cl->y_u.ccc.c3;
63 clause->Tag = cl->y_u.ccc.c3;
69 if (iarg == Yap_regnotoreg(1)) {
70 if (IsApplTerm(cl->y_u.cccc.c1)) {
71 CELL *pt = RepAppl(cl->y_u.cccc.c1);
72 clause->Tag = AbsAppl((CELL *)pt[0]);
73 clause->ucd.t_ptr = cl->y_u.cccc.c1;
75 clause->Tag = cl->y_u.cccc.c1;
78 if (iarg == Yap_regnotoreg(2)) {
79 if (IsApplTerm(cl->y_u.cccc.c2)) {
80 CELL *pt = RepAppl(cl->y_u.cccc.c2);
81 clause->Tag = AbsAppl((CELL *)pt[0]);
82 clause->ucd.t_ptr = cl->y_u.cccc.c2;
84 clause->Tag = cl->y_u.cccc.c2;
87 if (iarg == Yap_regnotoreg(3)) {
88 if (IsApplTerm(cl->y_u.cccc.c3)) {
89 CELL *pt = RepAppl(cl->y_u.cccc.c3);
90 clause->Tag = AbsAppl((CELL *)pt[0]);
91 clause->ucd.t_ptr = cl->y_u.cccc.c3;
93 clause->Tag = cl->y_u.cccc.c3;
96 if (iarg == Yap_regnotoreg(4)) {
97 if (IsApplTerm(cl->y_u.cccc.c4)) {
98 CELL *pt = RepAppl(cl->y_u.cccc.c4);
99 clause->Tag = AbsAppl((CELL *)pt[0]);
100 clause->ucd.t_ptr = cl->y_u.cccc.c4;
102 clause->Tag = cl->y_u.cccc.c4;
105 cl = NEXTOP(cl,cccc);
108 if (iarg == Yap_regnotoreg(1)) {
109 if (IsApplTerm(cl->y_u.ccccc.c1)) {
110 CELL *pt = RepAppl(cl->y_u.ccccc.c1);
111 clause->Tag = AbsAppl((CELL *)pt[0]);
112 clause->ucd.t_ptr = cl->y_u.ccccc.c1;
114 clause->Tag = cl->y_u.ccccc.c1;
117 if (iarg == Yap_regnotoreg(2)) {
118 if (IsApplTerm(cl->y_u.ccccc.c2)) {
119 CELL *pt = RepAppl(cl->y_u.ccccc.c2);
120 clause->Tag = AbsAppl((CELL *)pt[0]);
121 clause->ucd.t_ptr = cl->y_u.ccccc.c2;
123 clause->Tag = cl->y_u.ccccc.c2;
126 if (iarg == Yap_regnotoreg(3)) {
127 if (IsApplTerm(cl->y_u.ccccc.c3)) {
128 CELL *pt = RepAppl(cl->y_u.ccccc.c3);
129 clause->Tag = AbsAppl((CELL *)pt[0]);
130 clause->ucd.t_ptr = cl->y_u.ccccc.c3;
132 clause->Tag = cl->y_u.ccccc.c3;
135 if (iarg == Yap_regnotoreg(4)) {
136 if (IsApplTerm(cl->y_u.ccccc.c4)) {
137 CELL *pt = RepAppl(cl->y_u.ccccc.c4);
138 clause->Tag = AbsAppl((CELL *)pt[0]);
139 clause->ucd.t_ptr = cl->y_u.ccccc.c4;
141 clause->Tag = cl->y_u.ccccc.c4;
144 if (iarg == Yap_regnotoreg(5)) {
145 if (IsApplTerm(cl->y_u.ccccc.c5)) {
146 CELL *pt = RepAppl(cl->y_u.ccccc.c5);
147 clause->Tag = AbsAppl((CELL *)pt[0]);
148 clause->ucd.t_ptr = cl->y_u.ccccc.c5;
150 clause->Tag = cl->y_u.ccccc.c5;
153 cl = NEXTOP(cl,ccccc);
156 if (iarg == Yap_regnotoreg(1)) {
157 if (IsApplTerm(cl->y_u.cccccc.c1)) {
158 CELL *pt = RepAppl(cl->y_u.cccccc.c1);
159 clause->Tag = AbsAppl((CELL *)pt[0]);
160 clause->ucd.t_ptr = cl->y_u.cccccc.c1;
162 clause->Tag = cl->y_u.cccccc.c1;
165 if (iarg == Yap_regnotoreg(2)) {
166 if (IsApplTerm(cl->y_u.cccccc.c2)) {
167 CELL *pt = RepAppl(cl->y_u.cccccc.c2);
168 clause->Tag = AbsAppl((CELL *)pt[0]);
169 clause->ucd.t_ptr = cl->y_u.cccccc.c2;
171 clause->Tag = cl->y_u.cccccc.c2;
174 if (iarg == Yap_regnotoreg(3)) {
175 if (IsApplTerm(cl->y_u.cccccc.c3)) {
176 CELL *pt = RepAppl(cl->y_u.cccccc.c3);
177 clause->Tag = AbsAppl((CELL *)pt[0]);
178 clause->ucd.t_ptr = cl->y_u.cccccc.c3;
180 clause->Tag = cl->y_u.cccccc.c3;
183 if (iarg == Yap_regnotoreg(4)) {
184 if (IsApplTerm(cl->y_u.cccccc.c4)) {
185 CELL *pt = RepAppl(cl->y_u.cccccc.c4);
186 clause->Tag = AbsAppl((CELL *)pt[0]);
187 clause->ucd.t_ptr = cl->y_u.cccccc.c4;
189 clause->Tag = cl->y_u.cccccc.c4;
192 if (iarg == Yap_regnotoreg(5)) {
193 if (IsApplTerm(cl->y_u.cccccc.c5)) {
194 CELL *pt = RepAppl(cl->y_u.cccccc.c5);
195 clause->Tag = AbsAppl((CELL *)pt[0]);
196 clause->ucd.t_ptr = cl->y_u.cccccc.c5;
198 clause->Tag = cl->y_u.cccccc.c5;
201 if (iarg == Yap_regnotoreg(6)) {
202 if (IsApplTerm(cl->y_u.cccccc.c6)) {
203 CELL *pt = RepAppl(cl->y_u.cccccc.c6);
204 clause->Tag = AbsAppl((CELL *)pt[0]);
205 clause->ucd.t_ptr = cl->y_u.cccccc.c6;
207 clause->Tag = cl->y_u.cccccc.c6;
210 cl = NEXTOP(cl,cccccc);
214 clause->Tag = (CELL)NULL;
217 Term t = lcl->lusl.ClSource->Entry;
219 if (!(lcl->ClFlags & FactMask)) {
221 clause->Tag = (CELL)NULL;
222 }
else if (IsApplTerm(t)) {
223 CELL *pt = RepAppl(t);
225 clause->Tag = AbsAppl((CELL *)pt[0]);
226 if (IsExtensionFunctor(FunctorOfTerm(t))) {
227 clause->ucd.t_ptr = t;
229 clause->ucd.c_sreg = pt;
231 }
else if (IsPairTerm(t)) {
232 CELL *pt = RepPair(t);
234 clause->Tag = AbsPair(NULL);
235 clause->ucd.c_sreg = pt-1;
247 case _unify_idb_term:
249 clause->Tag = (CELL)NULL;
252 Term t = lcl->lusl.ClSource->Entry;
254 if (!(lcl->ClFlags & FactMask)) {
256 clause->Tag = (CELL)NULL;
257 }
else if (IsApplTerm(t)) {
258 CELL *pt = RepAppl(t);
260 clause->Tag = AbsAppl((CELL *)pt[0]);
261 if (IsExtensionFunctor(FunctorOfTerm(t))) {
262 clause->ucd.t_ptr = t;
264 clause->ucd.c_sreg = pt;
266 }
else if (IsPairTerm(t)) {
267 CELL *pt = RepPair(t);
269 clause->Tag = AbsPair(NULL);
270 clause->ucd.c_sreg = pt-1;
285 case _unify_l_list_write:
291 case _unify_l_void_write:
297 case _unify_list_write:
303 case _unify_void_write:
309 case _unify_l_dbterm:
315 case _unify_l_bigint:
321 case _unify_atom_write:
327 case _unify_l_atom_write:
333 case _unify_float_write:
339 case _unify_l_float_write:
345 case _unify_l_struc_write:
351 case _unify_struct_write:
354 case _unify_l_longint:
357 case _unify_l_longint_write:
363 case _unify_longint_write:
366 case _unify_l_n_voids:
369 case _unify_l_n_voids_write:
375 case _unify_n_voids_write:
381 case _unify_n_atoms_write:
384 case _unify_l_string:
391 if (iarg == cl->y_u.ox.x) {
392 clause->Tag = (CELL)NULL;
397 case _save_appl_x_write:
398 if (iarg == cl->y_u.ox.x) {
399 clause->Tag = (CELL)NULL;
405 if (iarg == cl->y_u.ox.x) {
406 clause->Tag = (CELL)NULL;
411 case _save_pair_x_write:
412 if (iarg == cl->y_u.ox.x) {
413 clause->Tag = (CELL)NULL;
421 case _unify_l_x_loc_write:
427 case _unify_l_x_val_write:
431 if (iarg == cl->y_u.ox.x) {
432 clause->Tag = (CELL)NULL;
437 case _unify_l_x_var_write:
438 if (iarg == cl->y_u.ox.x) {
439 clause->Tag = (CELL)NULL;
447 case _unify_x_loc_write:
453 case _unify_x_val_write:
457 if (iarg == cl->y_u.ox.x) {
458 clause->Tag = (CELL)NULL;
463 case _unify_x_var_write:
464 if (iarg == cl->y_u.ox.x) {
465 clause->Tag = (CELL)NULL;
470 case _unify_l_x_var2:
471 if (iarg == cl->y_u.oxx.xl) {
472 clause->Tag = (CELL)NULL;
475 if (iarg == cl->y_u.oxx.xr) {
476 clause->Tag = (CELL)NULL;
481 case _unify_l_x_var2_write:
482 if (iarg == cl->y_u.oxx.xl) {
483 clause->Tag = (CELL)NULL;
486 if (iarg == cl->y_u.oxx.xr) {
487 clause->Tag = (CELL)NULL;
493 if (iarg == cl->y_u.oxx.xl) {
494 clause->Tag = (CELL)NULL;
497 if (iarg == cl->y_u.oxx.xr) {
498 clause->Tag = (CELL)NULL;
503 case _unify_x_var2_write:
504 if (iarg == cl->y_u.oxx.xl) {
505 clause->Tag = (CELL)NULL;
508 if (iarg == cl->y_u.oxx.xr) {
509 clause->Tag = (CELL)NULL;
517 case _save_appl_y_write:
523 case _save_pair_y_write:
529 case _unify_l_y_loc_write:
535 case _unify_l_y_val_write:
541 case _unify_l_y_var_write:
547 case _unify_y_loc_write:
553 case _unify_y_val_write:
559 case _unify_y_var_write:
566 if (iarg == cl->y_u.x.x) {
567 clause->Tag = AbsPair(NULL);
568 clause->ucd.WorkPC = NEXTOP(cl,x);
574 if (iarg == cl->y_u.x.x) {
575 clause->Tag = (CELL)NULL;
581 if (iarg == cl->y_u.xD.x) {
582 clause->Tag = (CELL)NULL;
588 if (iarg == cl->y_u.xN.x) {
589 clause->Tag = AbsAppl((CELL *)FunctorBigInt);
590 clause->ucd.t_ptr = (CELL)NULL;
596 if (iarg == cl->y_u.xN.x) {
597 clause->Tag = (CELL)NULL;
603 if (iarg == cl->y_u.xc.x) {
604 if (IsApplTerm(cl->y_u.xc.c)) {
605 CELL *pt = RepAppl(cl->y_u.xc.c);
606 clause->Tag = AbsAppl((CELL *)pt[0]);
607 clause->ucd.t_ptr = cl->y_u.xc.c;
609 clause->Tag = cl->y_u.xc.c;
615 if (iarg == cl->y_u.xc.x) {
616 clause->Tag = (CELL)NULL;
622 if (iarg == cl->y_u.xd.x) {
623 clause->Tag = AbsAppl((CELL *)FunctorDouble);
624 clause->ucd.t_ptr = AbsAppl(cl->y_u.xd.d);
630 if (iarg == cl->y_u.xd.x) {
631 clause->Tag = (CELL)NULL;
637 if (iarg == cl->y_u.xfa.x) {
638 clause->Tag = AbsAppl((CELL *)cl->y_u.xfa.f);
639 clause->ucd.WorkPC = NEXTOP(cl,xfa);
645 if (iarg == cl->y_u.xfa.x) {
646 clause->Tag = (CELL)NULL;
652 if (iarg == cl->y_u.xi.x) {
653 clause->Tag = AbsAppl((CELL *)FunctorLongInt);
654 clause->ucd.t_ptr = AbsAppl(cl->y_u.xi.i);
660 if (iarg == cl->y_u.xi.x) {
661 clause->Tag = (CELL)NULL;
667 if (iarg == cl->y_u.xu.x) {
668 clause->Tag = AbsAppl((CELL *)FunctorString);
669 clause->ucd.t_ptr = (CELL)NULL;
675 if (cl->y_u.xx.xl == iarg ||
676 cl->y_u.xx.xr == iarg) {
677 clause->Tag = (CELL)NULL;
683 if (cl->y_u.xx.xr == iarg ||
684 cl->y_u.xx.xl == iarg) {
685 clause->Tag = (CELL)NULL;
691 if (iarg == cl->y_u.xx.xl) {
692 clause->Tag = AbsPair(NULL);
693 clause->ucd.WorkPC = cl;
699 if (iarg == cl->y_u.xx.xl) {
700 clause->Tag = AbsPair(NULL);
701 clause->ucd.WorkPC = cl;
704 if (iarg == cl->y_u.xx.xr) {
705 clause->Tag = (CELL)NULL;
711 if (iarg == cl->y_u.xx.xl) {
712 clause->Tag = AbsPair(NULL);
713 clause->ucd.WorkPC = cl;
719 if (cl->y_u.xx.xl == iarg ||
720 cl->y_u.xx.xr == iarg) {
721 clause->Tag = (CELL)NULL;
727 if (iarg == cl->y_u.xx.xl) {
728 clause->Tag = (CELL)NULL;
731 if (iarg == cl->y_u.xx.xr) {
732 clause->Tag = (CELL)NULL;
738 if (cl->y_u.xxxx.xl1 == iarg ||
739 cl->y_u.xxxx.xr1 == iarg) {
740 clause->Tag = (CELL)NULL;
743 if (cl->y_u.xxxx.xl2 == iarg ||
744 cl->y_u.xxxx.xr2 == iarg) {
745 clause->Tag = (CELL)NULL;
748 cl = NEXTOP(cl,xxxx);
751 if (cl->y_u.yx.x == iarg) {
752 clause->Tag = (CELL)NULL;
758 if (cl->y_u.yx.x == iarg) {
759 clause->Tag = (CELL)NULL;
771 if (iarg == cl->y_u.yx.x) {
772 clause->Tag = AbsPair(NULL);
773 clause->ucd.WorkPC = cl;
779 if (cl->y_u.yx.x == iarg) {
780 clause->Tag = (CELL)NULL;
786 if (cl->y_u.yx.x == iarg) {
787 clause->Tag = (CELL)NULL;
793 if (iarg == cl->y_u.yx.x) {
794 clause->Tag = (CELL)NULL;
800 if (cl->y_u.yyxx.x1 == iarg) {
801 clause->Tag = (CELL)NULL;
804 if (cl->y_u.yyxx.x2 == iarg) {
805 clause->Tag = (CELL)NULL;
808 cl = NEXTOP(cl,yyxx);
813 case _table_try_single:
814 cl = NEXTOP(cl,Otapl);
818 clause->Tag = (CELL)NULL;