Wild Life  2.30
 All Data Structures Files Functions Variables Typedefs Macros
bi_type.c
Go to the documentation of this file.
1 
6 //
7 // Copyright (c) 1992 Digital Equipment Corporation
8 // All Rights Reserved.
9 //
10 // The standard digital prl copyrights exist and where compatible
11 // the below also exists.
12 // Permission to use, copy, modify, and distribute this
13 // software and its documentation for any purpose and without
14 // fee is hereby granted, provided that the above copyright
15 // notice appear in all copies. Copyright holder(s) make no
16 // representation about the suitability of this software for
17 // any purpose. It is provided "as is" without express or
18 // implied warranty.
19 //
20 //
21 
22 #include "defs.h"
23 
30 static long c_children() /* RM: Dec 14 1992 Re-wrote most of the routine */
31 {
32  long success=TRUE;
33  ptr_psi_term funct,result,arg1,arg2,t,p1;
34  ptr_int_list p;
35 
36  funct=aim->aaaa_1;
37  deref_ptr(funct);
38  result=aim->bbbb_1;
39  get_two_args(funct->attr_list,&arg1,&arg2);
40 
41  if (!arg1) {
42  curry();
43  return success;
44  }
45 
46  deref(arg1);
47  deref_args(funct,set_1);
49 
50  if (arg1->type==top)
51  t=collect_symbols(greatest_sel); /* RM: Feb 3 1993 */
52  else {
53  p=arg1->type->children;
54 
55  /* Hack: check there's enough memory to build the list */
56  /* RM: Jul 22 1993 */
57  /*
58  { int count=0;
59  while(p) {
60  count++;
61  p=p->next;
62  }
63  if (heap_pointer-stack_pointer < 3*count*sizeof(psi_term)) {
64  goal_stack=aim;
65  garbage();
66  return success;
67  }
68  */
69 
70  t=stack_nil();
71  if (!(arg1->type==real && arg1->value_3)) /* PVR 15.2.94 */
72  while (p) {
73  ptr_definition ptype;
74 
75  ptype = (ptr_definition) p->value_1;
76  if (hidden_type(ptype)) { p=p->next; continue; }
77  p1 = stack_psi_term(0);
78  p1->type = ptype;
79  t=stack_cons(p1,t);
80  p = p->next;
81  }
82  }
83  push_goal(unify,result,t,NULL);
84 
85  return success;
86 }
87 
88 
89 
96 static long c_parents()
97 {
98  long success=TRUE;
99  ptr_psi_term funct,result,arg1,arg2,t,p1;
100  ptr_int_list p;
101 
102  funct=aim->aaaa_1;
103  deref_ptr(funct);
104  result=aim->bbbb_1;
105  get_two_args(funct->attr_list,&arg1,&arg2);
106  if (arg1) {
107  deref(arg1);
108  deref_args(funct,set_1);
109  resid_aim=NULL;
110  t=stack_nil(); /* RM: Dec 14 1992 */
111  p = arg1->type->parents;
112  if (arg1->type!=top && p==NULL) {
113  /* Top is the only parent */
114  p1 = stack_psi_term(4);
115  p1->type = (ptr_definition) top;
116  t=stack_cons(p1,t); /* RM: Dec 14 1992 */
117  }
118  else {
119  if ((arg1->type==quoted_string || arg1->type==integer ||
120  arg1->type==real) && arg1->value_3!=NULL) {
121  /* arg1 is a string, long or real: return a list with arg1 as
122  argument, where arg1->value_2 = NULL, MH */
123  p1 = stack_psi_term(4);
124  p1->type = arg1->type;
125  t=stack_cons(p1,t); /* RM: Dec 14 1992 */
126  }
127  else {
128  /* Look at the parents list */
129  while (p) {
130  ptr_definition ptype;
131 
132  ptype = (ptr_definition) p->value_1;
133  if (hidden_type(ptype)) { p=p->next; continue; }
134  p1 = stack_psi_term(4);
135  p1->type = ptype;
136  t=stack_cons(p1,t); /* RM: Dec 14 1992 */
137  p = p->next;
138  }
139  }
140  }
141  push_goal(unify,result,t,NULL);
142  }
143  else
144  curry();
145 
146  return success;
147 }
148 
149 
150 
151 
159 static long c_smallest()
160 {
161  long success=TRUE;
162  ptr_psi_term result, g, t;
163 
164  g=aim->aaaa_1;
166  result=aim->bbbb_1;
167  t=collect_symbols(least_sel); /* RM: Feb 3 1993 */
168  push_goal(unify,result,t,NULL);
169 
170  return success;
171 }
172 
181 {
182  long ans=TRUE;
183 
184  /* we already know that either arg1->type == arg2->type or that at both
185  * of the two are either long or real
186  */
187 
188  if (arg2->value_3) {
189  if (arg1->value_3) {
190  if (arg1->type==real || arg1->type==integer) {
191  ans=( *(REAL *)arg1->value_3 == *(REAL *)arg2->value_3);
192  }
193  else if (arg1->type==quoted_string) {
194  ans=(strcmp((char *)arg1->value_3,(char *)arg2->value_3)==0);
195  }
196  }
197  else
198  ans=FALSE;
199  }
200  else {
201  if (arg1->value_3 && (arg1->type==real || arg1->type==integer)) {
202  if (arg2->type==integer)
203  ans=(*(REAL *)arg1->value_3 == floor(*(REAL *)arg1->value_3));
204  else
205  ans=TRUE;
206  }
207  }
208  return ans;
209 }
210 
219 static long isa(ptr_psi_term arg1,ptr_psi_term arg2)
220 {
221  long ans;
222 
223  if ( arg1->type==arg2->type
224  || ( (arg1->type==real || arg1->type==integer)
225  && (arg2->type==real || arg2->type==integer)
226  && (arg1->value_3 || arg2->value_3)
227  )
228  ) {
229 
230  if(arg1->type==cut) /* RM: Jan 21 1993 */
231  ans=TRUE;
232  else
233  ans=isSubTypeValue(arg1, arg2);
234  }
235  else {
236  (void)matches(arg1->type, arg2->type, &ans);
237  }
238 
239  /*Errorline("isa %P %P -> %d\n",arg1,arg2,ans);*/
240 
241  return ans;
242 }
243 
253 static long isa_select(ptr_psi_term arg1,ptr_psi_term arg2,long sel)
254 {
255  long ans;
256 
257  switch (sel) {
258  case isa_le_sel: ans=isa(arg1,arg2);
259  break;
260  case isa_lt_sel: ans=isa(arg1,arg2) && !isa(arg2,arg1);
261  break;
262  case isa_ge_sel: ans=isa(arg2,arg1);
263  break;
264  case isa_gt_sel: ans=isa(arg2,arg1) && !isa(arg1,arg2);
265  break;
266  case isa_eq_sel: ans=isa(arg1,arg2) && isa(arg2,arg1);
267  break;
268 
269  case isa_nle_sel: ans= !isa(arg1,arg2);
270  break;
271  case isa_nlt_sel: ans= !(isa(arg1,arg2) && !isa(arg2,arg1));
272  break;
273  case isa_nge_sel: ans= !isa(arg2,arg1);
274  break;
275  case isa_ngt_sel: ans= !(isa(arg2,arg1) && !isa(arg1,arg2));
276  break;
277  case isa_neq_sel: ans= !(isa(arg1,arg2) && isa(arg2,arg1));
278  break;
279 
280  case isa_cmp_sel: ans=isa(arg1,arg2) || isa(arg2,arg1);
281  break;
282  case isa_ncmp_sel: ans= !(isa(arg1,arg2) || isa(arg2,arg1));
283  break;
284  }
285  return ans;
286 }
287 
294 static long c_isa_main(long sel)
295 {
296  long success=TRUE,ans;
297  ptr_psi_term arg1,arg2,funct,result;
298 
299  funct=aim->aaaa_1;
300  deref_ptr(funct);
301  result=aim->bbbb_1;
302  get_two_args(funct->attr_list,&arg1,&arg2);
303  if (arg1 && arg2) {
304  deref(arg1);
305  deref(arg2);
306  deref_args(funct,set_1_2);
307  ans=isa_select(arg1,arg2,sel);
308  unify_bool_result(result,ans);
309  }
310  else curry();
311 
312  return success;
313 }
314 
326 static long c_isa_le()
327 {
328  return c_isa_main(isa_le_sel);
329 }
341 static long c_isa_lt()
342 {
343  return c_isa_main(isa_lt_sel);
344 }
356 static long c_isa_ge()
357 {
358  return c_isa_main(isa_ge_sel);
359 }
371 static long c_isa_gt()
372 {
373  return c_isa_main(isa_gt_sel);
374 }
386 static long c_isa_eq()
387 {
388  return c_isa_main(isa_eq_sel);
389 }
401 static long c_isa_nle()
402 {
403  return c_isa_main(isa_nle_sel);
404 }
416 static long c_isa_nlt()
417 {
418  return c_isa_main(isa_nlt_sel);
419 }
431 static long c_isa_nge()
432 {
433  return c_isa_main(isa_nge_sel);
434 }
446 static long c_isa_ngt()
447 {
448  return c_isa_main(isa_ngt_sel);
449 }
461 static long c_isa_neq()
462 {
463  return c_isa_main(isa_neq_sel);
464 }
470 static long c_isa_cmp()
471 {
472  return c_isa_main(isa_cmp_sel);
473 }
479 static long c_isa_ncmp()
480 {
481  return c_isa_main(isa_ncmp_sel);
482 }
483 
484 
485 
492 static long c_is_function() /* RM: Jan 29 1993 */
493 {
494  int success=TRUE,ans;
495  ptr_psi_term arg1,funct,result;
496 
497  funct=aim->aaaa_1;
498  deref_ptr(funct);
499  result=aim->bbbb_1;
500  get_one_arg(funct->attr_list,&arg1);
501  if (arg1) {
502  deref(arg1);
503  deref_args(funct,set_1);
504  ans=(arg1->type->type_def==(def_type)function_it);
505  unify_bool_result(result,ans);
506  }
507  else curry();
508 
509  return success;
510 }
511 
512 
513 
520 static long c_is_persistent() /* RM: Feb 9 1993 */
521 {
522  int success=TRUE,ans;
523  ptr_psi_term arg1,glob,result;
524 
525  glob=aim->aaaa_1;
526  deref_ptr(glob);
527  result=aim->bbbb_1;
528  get_one_arg(glob->attr_list,&arg1);
529  if (arg1) {
530  deref(arg1);
531  deref_args(glob,set_1);
532  ans=(
533  arg1->type->type_def==(def_type)global_it &&
535  ) ||
536  (GENERIC)arg1>=heap_pointer;
537  unify_bool_result(result,ans);
538  }
539  else curry();
540 
541  return success;
542 }
543 
544 
545 
552 static long c_is_predicate() /* RM: Jan 29 1993 */
553 {
554  int success=TRUE,ans;
555  ptr_psi_term arg1,funct,result;
556 
557  funct=aim->aaaa_1;
558  deref_ptr(funct);
559  result=aim->bbbb_1;
560  get_one_arg(funct->attr_list,&arg1);
561  if (arg1) {
562  deref(arg1);
563  deref_args(funct,set_1);
564  ans=(arg1->type->type_def==(def_type)predicate_it);
565  unify_bool_result(result,ans);
566  }
567  else curry();
568 
569  return success;
570 }
571 
572 
573 
580 static long c_is_sort() /* RM: Jan 29 1993 */
581 {
582  int success=TRUE,ans;
583  ptr_psi_term arg1,funct,result;
584 
585  funct=aim->aaaa_1;
586  deref_ptr(funct);
587  result=aim->bbbb_1;
588  get_one_arg(funct->attr_list,&arg1);
589  if (arg1) {
590  deref(arg1);
591  deref_args(funct,set_1);
592  ans=(arg1->type->type_def==(def_type)type_it);
593  unify_bool_result(result,ans);
594  }
595  else curry();
596 
597  return success;
598 }
599 
600 
601 
610 static long c_is_value()
611 {
612  long success=TRUE,ans;
613  ptr_psi_term arg1,arg2,funct,result;
614 
615  funct=aim->aaaa_1;
616  deref_ptr(funct);
617  result=aim->bbbb_1;
618  get_two_args(funct->attr_list,&arg1,&arg2);
619  if (arg1) {
620  deref(arg1);
621  deref_args(funct,set_1);
622  ans=(arg1->value_3!=NULL);
623  unify_bool_result(result,ans);
624  }
625  else curry();
626 
627  return success;
628 }
629 
636 static long c_is_number()
637 {
638  long success=TRUE,ans;
639  ptr_psi_term arg1,arg2,funct,result;
640 
641  funct=aim->aaaa_1;
642  deref_ptr(funct);
643  result=aim->bbbb_1;
644  get_two_args(funct->attr_list,&arg1,&arg2);
645  if (arg1) {
646  deref(arg1);
647  deref_args(funct,set_1);
648  ans=sub_type(arg1->type,real) && (arg1->value_3!=NULL);
649  unify_bool_result(result,ans);
650  }
651  else curry();
652 
653  return success;
654 }
655 
656 
666 {
667  ptr_psi_term pred,arg1,arg2;
668 
669  pred=aim->aaaa_1;
670  deref_ptr(pred);
671  get_two_args(pred->attr_list,&arg1,&arg2);
672 
673  if (!arg1) (void)reportAndAbort(pred,"no first argument");
674  deref(arg1);
675 
676  if (!arg2) (void)reportAndAbort(pred,"no second argument");
677  deref(arg2);
678 
679  deref_args(pred, set_1_2);
680 
681  if (isa(arg1, arg2))
682  {
683  residuate(arg2);
684  return TRUE;
685  }
686  return FALSE;
687 }
688 
696 {
697  return (p->value_3 != NULL);
698 }
699 
700 
701 
712 long c_glb()
713 {
714  ptr_psi_term func,arg1,arg2, result, other;
715  ptr_definition ans;
716  ptr_int_list complexType;
717  ptr_int_list decodedType = NULL;
718  long ret;
719 
720  func=aim->aaaa_1;
721  deref_ptr(func);
722  get_two_args(func->attr_list,&arg1,&arg2);
723 
724  if ((!arg1) || (!arg2)) {
725  curry();
726  return TRUE;
727  }
728  result = aim->bbbb_1;
729  deref(result);
730  deref(arg1);
731  deref(arg2);
732  deref_args(func, set_1_2);
733 
734  if ((ret=glb(arg1->type, arg2->type, &ans, &complexType)) == 0)
735  return FALSE;
736 
737  if ((ret != 4)&&(isValue(arg1)||isValue(arg2))) {
738  /* glb is one of arg1->type or arg2->type AND at least one is a value */
739  if (!isSubTypeValue(arg1, arg2) && !isSubTypeValue(arg2, arg1))
740  return FALSE;
741  }
742  if (!ans) {
743  decodedType = decode(complexType);
744  ans = (ptr_definition)decodedType->value_1;
745  decodedType = decodedType->next;
746  }
747  other=makePsiTerm(ans);
748 
749  if (isValue(arg1)) other->value_3=arg1->value_3;
750  if (isValue(arg2)) other->value_3=arg2->value_3;
751 
752  if (isValue(arg1) || isValue(arg2)) {
753  if (decodedType) {
754  Errorline("glb of multiple-inheritance value sorts not yet implemented.\n");
755  return FALSE;
756  }
757  }
758 
759  if (decodedType)
760  push_choice_point(type_disj, result,(ptr_psi_term) decodedType,(GENERIC) NULL);
761 
762  resid_aim = NULL;
763  push_goal(unify,result,other,NULL);
764  return TRUE;
765 }
766 
767 
768 
778 long c_lub()
779 {
780  ptr_psi_term func,arg1,arg2, result, other;
781  ptr_definition ans=NULL;
782  ptr_int_list decodedType = NULL;
783 
784  func=aim->aaaa_1;
785  deref_ptr(func);
786  get_two_args(func->attr_list,&arg1,&arg2);
787 
788  if ((!arg1) || (!arg2))
789  {
790  curry();
791  return TRUE;
792  }
793  result = aim->bbbb_1;
794  deref(result);
795  deref(arg1);
796  deref(arg2);
797  deref_args(func, set_1_2);
798 
799  /* now lets find the list of types that is the lub */
800 
801  decodedType = lub(arg1, arg2, &other);
802 
803  if (decodedType) {
804  ans = (ptr_definition)decodedType->value_1;
805  decodedType = decodedType->next;
806  other = makePsiTerm(ans);
807  }
808 
809  if (decodedType)
810  push_choice_point(type_disj, result,(ptr_psi_term) decodedType,(GENERIC) NULL);
811 
812  resid_aim = NULL;
813  push_goal(unify,result,other,NULL);
814  return TRUE;
815 }
816 
823 void insert_type_builtins() /* RM: Jan 29 1993 */
824 {
825  /* Sort comparisons */
827  new_built_in(syntax_module,":<",(def_type)function_it,c_isa_lt);
828  new_built_in(syntax_module,":>=",(def_type)function_it,c_isa_ge);
829  new_built_in(syntax_module,":>",(def_type)function_it,c_isa_gt);
830  new_built_in(syntax_module,":==",(def_type)function_it,c_isa_eq);
831  new_built_in(syntax_module,":><",(def_type)function_it,c_isa_cmp);
832  new_built_in(syntax_module,":\\=<",(def_type)function_it,c_isa_nle);
833  new_built_in(syntax_module,":\\<",(def_type)function_it,c_isa_nlt);
834  new_built_in(syntax_module,":\\>=",(def_type)function_it,c_isa_nge);
835  new_built_in(syntax_module,":\\>",(def_type)function_it,c_isa_ngt);
836  new_built_in(syntax_module,":\\==",(def_type)function_it,c_isa_neq);
837  new_built_in(syntax_module,":\\><",(def_type)function_it,c_isa_ncmp);
838 
839 
840  /* Type checks */
841  new_built_in(bi_module,"is_value",(def_type)function_it,c_is_value);
842  new_built_in(bi_module,"is_number",(def_type)function_it,c_is_number);
843  new_built_in(bi_module,"is_function",(def_type)function_it,c_is_function);
844  new_built_in(bi_module,"is_predicate",(def_type)function_it,c_is_predicate);
845  new_built_in(bi_module,"is_sort",(def_type)function_it,c_is_sort);
846  new_built_in(bi_module,"is_persistent",(def_type)function_it,c_is_persistent);
847 
848  /* Sort hierarchy maneuvering */
849  new_built_in(bi_module,"children",(def_type)function_it,c_children);
850  new_built_in(bi_module,"parents",(def_type)function_it,c_parents);
851  new_built_in(bi_module,"least_sorts",(def_type)function_it,c_smallest);
853  new_built_in(bi_module,"glb",(def_type)function_it,c_glb);
854  new_built_in(bi_module,"lub",(def_type)function_it,c_lub);
855 }
ptr_psi_term makePsiTerm(ptr_definition x)
ptr_psi_term makePsiTerm
Definition: bi_sys.c:573
void new_built_in(ptr_module m, char *s, def_type t, long(*r)())
new_built_in
Definition: built_ins.c:5375
ptr_psi_term aaaa_1
Definition: def_struct.h:231
static long c_isa_cmp()
c_isa_cmp
Definition: bi_type.c:470
#define function_it
Definition: def_const.h:573
void get_two_args(ptr_node t, ptr_psi_term *a, ptr_psi_term *b)
get_two_args
Definition: login.c:47
int isSubTypeValue(ptr_psi_term arg1, ptr_psi_term arg2)
isSubTypeValue
Definition: bi_type.c:180
static long c_smallest()
c_smallest
Definition: bi_type.c:159
struct wl_definition * def_type
Definition: def_struct.h:52
ptr_psi_term stack_cons(ptr_psi_term head, ptr_psi_term tail)
stack_cons
Definition: built_ins.c:46
void insert_type_builtins()
void insert_type_builtins
Definition: bi_type.c:823
void residuate(ptr_psi_term t)
residuate
Definition: lefun.c:125
#define least_sel
Definition: def_const.h:8
long c_lub()
long c_lub
Definition: bi_type.c:778
#define isa_nlt_sel
Definition: def_const.h:521
long glb(ptr_definition t1, ptr_definition t2, ptr_definition *t3, ptr_int_list *c3)
glb
Definition: types.c:1481
void push_choice_point(goals t, ptr_psi_term a, ptr_psi_term b, GENERIC c)
push_choice_point
Definition: login.c:638
void push_goal(goals t, ptr_psi_term a, ptr_psi_term b, GENERIC c)
push_goal
Definition: login.c:600
#define isa_eq_sel
Definition: def_const.h:519
static long c_is_number()
static long c_is_number
Definition: bi_type.c:636
static long isa(ptr_psi_term arg1, ptr_psi_term arg2)
isa
Definition: bi_type.c:219
static long c_is_predicate()
c_is_predicate
Definition: bi_type.c:552
static long c_isa_lt()
c_isa_lt
Definition: bi_type.c:341
void unify_bool_result(ptr_psi_term t, long v)
unify_bool_result
Definition: built_ins.c:344
static long c_isa_ncmp()
c_isa_ncmp
Definition: bi_type.c:479
long c_glb()
long c_glb
Definition: bi_type.c:712
ptr_int_list decode(ptr_int_list c)
decode
Definition: types.c:1784
long reportAndAbort(ptr_psi_term g, char *s)
reportAndAbort
Definition: error.c:872
def_type type_def
Definition: def_struct.h:145
includes
#define predicate_it
Definition: def_const.h:572
long matches(ptr_definition t1, ptr_definition t2, long *smaller)
matches
Definition: types.c:1666
#define set_empty
Definition: def_const.h:417
#define isa_le_sel
Definition: def_const.h:515
void get_one_arg(ptr_node t, ptr_psi_term *a)
get_one_arg
Definition: login.c:99
#define set_1
Definition: def_const.h:418
#define global_it
Definition: def_const.h:575
ptr_definition top
Definition: def_glob.h:111
void curry()
curry
Definition: lefun.c:174
#define NULL
Definition: def_const.h:427
#define REAL
Which C type to use to represent reals and integers in Wild_Life.
Definition: def_const.h:106
ptr_goal resid_aim
Definition: def_glob.h:225
static long c_children()
c_children
Definition: bi_type.c:30
static long c_isa_nle()
c_isa_nle
Definition: bi_type.c:401
long sub_type(ptr_definition t1, ptr_definition t2)
sub_type
Definition: types.c:1642
#define isa_nge_sel
Definition: def_const.h:522
#define isa_ngt_sel
Definition: def_const.h:523
#define type_it
Definition: def_const.h:574
void Errorline(char *format,...)
Errorline.
Definition: error.c:465
unsigned long * GENERIC
unsigned long *GENERIC
Definition: def_struct.h:27
#define set_1_2
Definition: def_const.h:420
ptr_definition real
Definition: def_glob.h:107
#define greatest_sel
Definition: def_const.h:9
#define deref_ptr(P)
Definition: def_macro.h:100
#define isa_neq_sel
Definition: def_const.h:524
static long c_isa_ge()
c_isa_ge
Definition: bi_type.c:356
#define TRUE
Standard boolean.
Definition: def_const.h:242
long c_isa_subsort()
long c_isa_subsort
Definition: bi_type.c:665
static long c_isa_nlt()
c_isa_nlt
Definition: bi_type.c:416
static long c_isa_ngt()
c_isa_ngt
Definition: bi_type.c:446
static long c_isa_gt()
c_isa_gt
Definition: bi_type.c:371
ptr_definition integer
Definition: def_glob.h:98
ptr_psi_term global_value
Definition: def_struct.h:151
#define FALSE
Standard boolean.
Definition: def_const.h:249
#define deref(P)
Definition: def_macro.h:147
ptr_int_list lub(ptr_psi_term a, ptr_psi_term b, ptr_psi_term *pp)
Definition: lub.c:173
ptr_definition quoted_string
Definition: def_glob.h:106
struct wl_definition * ptr_definition
Definition: def_struct.h:51
ptr_psi_term stack_psi_term(long stat)
stack_psi_term
Definition: lefun.c:21
GENERIC value_3
Definition: def_struct.h:178
ptr_module syntax_module
Definition: def_glob.h:164
ptr_psi_term stack_nil()
stack_nil
Definition: built_ins.c:26
ptr_goal aim
Definition: def_glob.h:54
static long c_is_value()
c_is_value
Definition: bi_type.c:610
GENERIC heap_pointer
Definition: def_glob.h:17
#define isa_cmp_sel
Definition: def_const.h:525
static long c_isa_nge()
c_isa_nge
Definition: bi_type.c:431
#define unify
Definition: def_const.h:490
#define isa_nle_sel
Definition: def_const.h:520
static long c_parents()
c_parents
Definition: bi_type.c:96
static long c_is_sort()
c_is_sort
Definition: bi_type.c:580
#define deref_args(P, S)
Definition: def_macro.h:150
#define isa_ge_sel
Definition: def_const.h:517
ptr_psi_term collect_symbols(long sel)
collect_symbols
Definition: built_ins.c:3699
ptr_definition cut
Definition: def_glob.h:88
static long c_is_function()
c_is_function
Definition: bi_type.c:492
static long isa_select(ptr_psi_term arg1, ptr_psi_term arg2, long sel)
isa_select
Definition: bi_type.c:253
static long c_isa_eq()
c_isa_eq
Definition: bi_type.c:386
static long c_isa_main(long sel)
c_isa_main
Definition: bi_type.c:294
#define type_disj
Definition: def_const.h:500
ptr_module bi_module
Definition: def_glob.h:160
#define isa_gt_sel
Definition: def_const.h:518
long isValue(ptr_psi_term p)
isValue(p)
Definition: bi_type.c:695
static long c_isa_le()
c_isa_le
Definition: bi_type.c:326
ptr_definition type
Definition: def_struct.h:173
static long c_is_persistent()
c_is_persistent
Definition: bi_type.c:520
#define isa_lt_sel
Definition: def_const.h:516
GENERIC value_1
Definition: def_struct.h:77
ptr_psi_term bbbb_1
Definition: def_struct.h:232
#define isa_ncmp_sel
Definition: def_const.h:526
static long c_isa_neq()
c_isa_neq
Definition: bi_type.c:461
long hidden_type(ptr_definition t)
hidden_type
Definition: built_ins.c:3672
ptr_int_list children
Definition: def_struct.h:144
ptr_node attr_list
Definition: def_struct.h:179
ptr_int_list next
Definition: def_struct.h:78
ptr_int_list parents
Definition: def_struct.h:143