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 
295 static long c_isa_main(long sel)
296 {
297  long success=TRUE,ans;
298  ptr_psi_term arg1,arg2,funct,result;
299 
300  funct=aim->aaaa_1;
301  deref_ptr(funct);
302  result=aim->bbbb_1;
303  get_two_args(funct->attr_list,&arg1,&arg2);
304  if (arg1 && arg2) {
305  deref(arg1);
306  deref(arg2);
307  deref_args(funct,set_1_2);
308  ans=isa_select(arg1,arg2,sel);
309  unify_bool_result(result,ans);
310  }
311  else curry();
312 
313  return success;
314 }
315 
327 static long c_isa_le()
328 {
329  return c_isa_main(isa_le_sel);
330 }
331 
343 static long c_isa_lt()
344 {
345  return c_isa_main(isa_lt_sel);
346 }
347 
359 static long c_isa_ge()
360 {
361  return c_isa_main(isa_ge_sel);
362 }
363 
375 static long c_isa_gt()
376 {
377  return c_isa_main(isa_gt_sel);
378 }
379 
391 static long c_isa_eq()
392 {
393  return c_isa_main(isa_eq_sel);
394 }
395 
407 static long c_isa_nle()
408 {
409  return c_isa_main(isa_nle_sel);
410 }
411 
423 static long c_isa_nlt()
424 {
425  return c_isa_main(isa_nlt_sel);
426 }
427 
439 static long c_isa_nge()
440 {
441  return c_isa_main(isa_nge_sel);
442 }
443 
455 static long c_isa_ngt()
456 {
457  return c_isa_main(isa_ngt_sel);
458 }
459 
471 static long c_isa_neq()
472 {
473  return c_isa_main(isa_neq_sel);
474 }
480 static long c_isa_cmp()
481 {
482  return c_isa_main(isa_cmp_sel);
483 }
489 static long c_isa_ncmp()
490 {
491  return c_isa_main(isa_ncmp_sel);
492 }
493 
500 static long c_is_function() /* RM: Jan 29 1993 */
501 {
502  int success=TRUE,ans;
503  ptr_psi_term arg1,funct,result;
504 
505  funct=aim->aaaa_1;
506  deref_ptr(funct);
507  result=aim->bbbb_1;
508  get_one_arg(funct->attr_list,&arg1);
509  if (arg1) {
510  deref(arg1);
511  deref_args(funct,set_1);
512  ans=(arg1->type->type_def==(def_type)function_it);
513  unify_bool_result(result,ans);
514  }
515  else curry();
516 
517  return success;
518 }
519 
526 static long c_is_persistent() /* RM: Feb 9 1993 */
527 {
528  int success=TRUE,ans;
529  ptr_psi_term arg1,glob,result;
530 
531  glob=aim->aaaa_1;
532  deref_ptr(glob);
533  result=aim->bbbb_1;
534  get_one_arg(glob->attr_list,&arg1);
535  if (arg1) {
536  deref(arg1);
537  deref_args(glob,set_1);
538  ans=(
539  arg1->type->type_def==(def_type)global_it &&
541  ) ||
542  (GENERIC)arg1>=heap_pointer;
543  unify_bool_result(result,ans);
544  }
545  else curry();
546 
547  return success;
548 }
549 
556 static long c_is_predicate() /* RM: Jan 29 1993 */
557 {
558  int success=TRUE,ans;
559  ptr_psi_term arg1,funct,result;
560 
561  funct=aim->aaaa_1;
562  deref_ptr(funct);
563  result=aim->bbbb_1;
564  get_one_arg(funct->attr_list,&arg1);
565  if (arg1) {
566  deref(arg1);
567  deref_args(funct,set_1);
568  ans=(arg1->type->type_def==(def_type)predicate_it);
569  unify_bool_result(result,ans);
570  }
571  else curry();
572 
573  return success;
574 }
575 
582 static long c_is_sort() /* RM: Jan 29 1993 */
583 {
584  int success=TRUE,ans;
585  ptr_psi_term arg1,funct,result;
586 
587  funct=aim->aaaa_1;
588  deref_ptr(funct);
589  result=aim->bbbb_1;
590  get_one_arg(funct->attr_list,&arg1);
591  if (arg1) {
592  deref(arg1);
593  deref_args(funct,set_1);
594  ans=(arg1->type->type_def==(def_type)type_it);
595  unify_bool_result(result,ans);
596  }
597  else curry();
598 
599  return success;
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 
665 {
666  ptr_psi_term pred,arg1,arg2;
667 
668  pred=aim->aaaa_1;
669  deref_ptr(pred);
670  get_two_args(pred->attr_list,&arg1,&arg2);
671 
672  if (!arg1) (void)reportAndAbort(pred,"no first argument");
673  deref(arg1);
674 
675  if (!arg2) (void)reportAndAbort(pred,"no second argument");
676  deref(arg2);
677 
678  deref_args(pred, set_1_2);
679 
680  if (isa(arg1, arg2))
681  {
682  residuate(arg2);
683  return TRUE;
684  }
685  return FALSE;
686 }
687 
695 {
696  return (p->value_3 != NULL);
697 }
698 
709 long c_glb()
710 {
711  ptr_psi_term func,arg1,arg2, result, other;
712  ptr_definition ans;
713  ptr_int_list complexType;
714  ptr_int_list decodedType = NULL;
715  long ret;
716 
717  func=aim->aaaa_1;
718  deref_ptr(func);
719  get_two_args(func->attr_list,&arg1,&arg2);
720 
721  if ((!arg1) || (!arg2)) {
722  curry();
723  return TRUE;
724  }
725  result = aim->bbbb_1;
726  deref(result);
727  deref(arg1);
728  deref(arg2);
729  deref_args(func, set_1_2);
730 
731  if ((ret=glb(arg1->type, arg2->type, &ans, &complexType)) == 0)
732  return FALSE;
733 
734  if ((ret != 4)&&(isValue(arg1)||isValue(arg2))) {
735  /* glb is one of arg1->type or arg2->type AND at least one is a value */
736  if (!isSubTypeValue(arg1, arg2) && !isSubTypeValue(arg2, arg1))
737  return FALSE;
738  }
739  if (!ans) {
740  decodedType = decode(complexType);
741  ans = (ptr_definition)decodedType->value_1;
742  decodedType = decodedType->next;
743  }
744  other=makePsiTerm(ans);
745 
746  if (isValue(arg1)) other->value_3=arg1->value_3;
747  if (isValue(arg2)) other->value_3=arg2->value_3;
748 
749  if (isValue(arg1) || isValue(arg2)) {
750  if (decodedType) {
751  Errorline("glb of multiple-inheritance value sorts not yet implemented.\n");
752  return FALSE;
753  }
754  }
755 
756  if (decodedType)
757  push_choice_point(type_disj, result,(ptr_psi_term) decodedType,(GENERIC) NULL);
758 
759  resid_aim = NULL;
760  push_goal(unify,result,other,NULL);
761  return TRUE;
762 }
763 
773 long c_lub()
774 {
775  ptr_psi_term func,arg1,arg2, result, other;
776  ptr_definition ans=NULL;
777  ptr_int_list decodedType = NULL;
778 
779  func=aim->aaaa_1;
780  deref_ptr(func);
781  get_two_args(func->attr_list,&arg1,&arg2);
782 
783  if ((!arg1) || (!arg2))
784  {
785  curry();
786  return TRUE;
787  }
788  result = aim->bbbb_1;
789  deref(result);
790  deref(arg1);
791  deref(arg2);
792  deref_args(func, set_1_2);
793 
794  /* now lets find the list of types that is the lub */
795 
796  decodedType = lub(arg1, arg2, &other);
797 
798  if (decodedType) {
799  ans = (ptr_definition)decodedType->value_1;
800  decodedType = decodedType->next;
801  other = makePsiTerm(ans);
802  }
803 
804  if (decodedType)
805  push_choice_point(type_disj, result,(ptr_psi_term) decodedType,(GENERIC) NULL);
806 
807  resid_aim = NULL;
808  push_goal(unify,result,other,NULL);
809  return TRUE;
810 }
811 
817 void insert_type_builtins() /* RM: Jan 29 1993 */
818 {
819  /* Sort comparisons */
821  new_built_in(syntax_module,":<",(def_type)function_it,c_isa_lt);
822  new_built_in(syntax_module,":>=",(def_type)function_it,c_isa_ge);
823  new_built_in(syntax_module,":>",(def_type)function_it,c_isa_gt);
824  new_built_in(syntax_module,":==",(def_type)function_it,c_isa_eq);
825  new_built_in(syntax_module,":><",(def_type)function_it,c_isa_cmp);
826  new_built_in(syntax_module,":\\=<",(def_type)function_it,c_isa_nle);
827  new_built_in(syntax_module,":\\<",(def_type)function_it,c_isa_nlt);
828  new_built_in(syntax_module,":\\>=",(def_type)function_it,c_isa_nge);
829  new_built_in(syntax_module,":\\>",(def_type)function_it,c_isa_ngt);
830  new_built_in(syntax_module,":\\==",(def_type)function_it,c_isa_neq);
831  new_built_in(syntax_module,":\\><",(def_type)function_it,c_isa_ncmp);
832 
833  /* Type checks */
834  new_built_in(bi_module,"is_value",(def_type)function_it,c_is_value);
835  new_built_in(bi_module,"is_number",(def_type)function_it,c_is_number);
836  new_built_in(bi_module,"is_function",(def_type)function_it,c_is_function);
837  new_built_in(bi_module,"is_predicate",(def_type)function_it,c_is_predicate);
838  new_built_in(bi_module,"is_sort",(def_type)function_it,c_is_sort);
839  new_built_in(bi_module,"is_persistent",(def_type)function_it,c_is_persistent);
840 
841  /* Sort hierarchy maneuvering */
842  new_built_in(bi_module,"children",(def_type)function_it,c_children);
843  new_built_in(bi_module,"parents",(def_type)function_it,c_parents);
844  new_built_in(bi_module,"least_sorts",(def_type)function_it,c_smallest);
846  new_built_in(bi_module,"glb",(def_type)function_it,c_glb);
847  new_built_in(bi_module,"lub",(def_type)function_it,c_lub);
848 }
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:239
static long c_isa_cmp()
c_isa_cmp
Definition: bi_type.c:480
#define function_it
was enum (def_type) in extern.h now there is typedef ptr_definition
Definition: def_const.h:1408
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
GENERIC heap_pointer
used to allocate from heap - size allocated subtracted - adj for alignment
Definition: def_glob.h:55
struct wl_definition * def_type
Definition: def_struct.h:60
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:817
void residuate(ptr_psi_term t)
residuate
Definition: lefun.c:125
#define least_sel
used by collect_symbols in built_ins.c
Definition: def_const.h:11
ptr_definition integer
symbol in bi module
Definition: def_glob.h:312
long c_lub()
long c_lub
Definition: bi_type.c:773
#define isa_nlt_sel
a value used in case satement in isa_select function in bi_type.c
Definition: def_const.h:1238
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
a value used in case satement in isa_select function in bi_type.c
Definition: def_const.h:1224
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:556
static long c_isa_lt()
c_isa_lt
Definition: bi_type.c:343
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:489
ptr_definition cut
symbol in syntax module
Definition: def_glob.h:242
long c_glb()
long c_glb
Definition: bi_type.c:709
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
ptr_module syntax_module
Module for minimal Prolog syntax.
Definition: def_glob.h:715
def_type type_def
Definition: def_struct.h:153
includes
#define predicate_it
was enum (def_type) in extern.h now there is typedef ptr_definition
Definition: def_const.h:1401
long matches(ptr_definition t1, ptr_definition t2, long *smaller)
matches
Definition: types.c:1666
#define set_empty
Set constants for deref_args in lefun.c.
Definition: def_const.h:493
#define isa_le_sel
a value used in case satement in isa_select function in bi_type.c
Definition: def_const.h:1196
void get_one_arg(ptr_node t, ptr_psi_term *a)
get_one_arg
Definition: login.c:99
#define set_1
Set constants for deref_args in lefun.c.
Definition: def_const.h:500
#define global_it
was enum (def_type) in extern.h now there is typedef ptr_definition
Definition: def_const.h:1422
void curry()
curry
Definition: lefun.c:174
#define NULL
Definition: def_const.h:533
#define REAL
Which C type to use to represent reals and integers in Wild_Life.
Definition: def_const.h:132
ptr_goal resid_aim
Definition: def_glob.h:865
static long c_children()
c_children
Definition: bi_type.c:30
static long c_isa_nle()
c_isa_nle
Definition: bi_type.c:407
long sub_type(ptr_definition t1, ptr_definition t2)
sub_type
Definition: types.c:1642
ptr_definition real
symbol in bi module
Definition: def_glob.h:375
#define isa_nge_sel
a value used in case satement in isa_select function in bi_type.c
Definition: def_const.h:1245
#define isa_ngt_sel
a value used in case satement in isa_select function in bi_type.c
Definition: def_const.h:1252
#define type_it
was enum (def_type) in extern.h now there is typedef ptr_definition
Definition: def_const.h:1415
void Errorline(char *format,...)
Errorline.
Definition: error.c:465
unsigned long * GENERIC
unsigned long *GENERIC
Definition: def_struct.h:35
#define set_1_2
Set constants for deref_args in lefun.c.
Definition: def_const.h:514
#define greatest_sel
used by collect_symbols in built_ins.c
Definition: def_const.h:18
#define deref_ptr(P)
Definition: def_macro.h:100
#define isa_neq_sel
a value used in case satement in isa_select function in bi_type.c
Definition: def_const.h:1259
static long c_isa_ge()
c_isa_ge
Definition: bi_type.c:359
#define TRUE
Standard boolean.
Definition: def_const.h:268
long c_isa_subsort()
long c_isa_subsort
Definition: bi_type.c:664
static long c_isa_nlt()
c_isa_nlt
Definition: bi_type.c:423
static long c_isa_ngt()
c_isa_ngt
Definition: bi_type.c:455
static long c_isa_gt()
c_isa_gt
Definition: bi_type.c:375
ptr_psi_term global_value
Definition: def_struct.h:159
#define FALSE
Standard boolean.
Definition: def_const.h:275
#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
struct wl_definition * ptr_definition
Definition: def_struct.h:59
ptr_psi_term stack_psi_term(long stat)
stack_psi_term
Definition: lefun.c:21
GENERIC value_3
Definition: def_struct.h:186
ptr_psi_term stack_nil()
stack_nil
Definition: built_ins.c:26
ptr_goal aim
Definition: def_glob.h:1024
static long c_is_value()
c_is_value
Definition: bi_type.c:610
#define isa_cmp_sel
a value used in case satement in isa_select function in bi_type.c
Definition: def_const.h:1266
static long c_isa_nge()
c_isa_nge
Definition: bi_type.c:439
#define unify
was enum (goal) – but must be long for error.c - now typedef
Definition: def_const.h:1058
ptr_module bi_module
Module for public built-ins.
Definition: def_glob.h:687
#define isa_nle_sel
a value used in case satement in isa_select function in bi_type.c
Definition: def_const.h:1231
static long c_parents()
c_parents
Definition: bi_type.c:96
ptr_definition top
symbol in syntax module
Definition: def_glob.h:403
static long c_is_sort()
c_is_sort
Definition: bi_type.c:582
#define deref_args(P, S)
Definition: def_macro.h:150
#define isa_ge_sel
a value used in case satement in isa_select function in bi_type.c
Definition: def_const.h:1210
ptr_psi_term collect_symbols(long sel)
collect_symbols
Definition: built_ins.c:3699
static long c_is_function()
c_is_function
Definition: bi_type.c:500
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:391
static long c_isa_main(long sel)
c_isa_main
Definition: bi_type.c:295
#define type_disj
was enum (goal) – but must be long for error.c - now typedef
Definition: def_const.h:1128
#define isa_gt_sel
a value used in case satement in isa_select function in bi_type.c
Definition: def_const.h:1217
long isValue(ptr_psi_term p)
isValue(p)
Definition: bi_type.c:694
static long c_isa_le()
c_isa_le
Definition: bi_type.c:327
ptr_definition type
Definition: def_struct.h:181
static long c_is_persistent()
c_is_persistent
Definition: bi_type.c:526
#define isa_lt_sel
a value used in case satement in isa_select function in bi_type.c
Definition: def_const.h:1203
GENERIC value_1
Definition: def_struct.h:85
ptr_psi_term bbbb_1
Definition: def_struct.h:240
#define isa_ncmp_sel
a value used in case satement in isa_select function in bi_type.c
Definition: def_const.h:1273
static long c_isa_neq()
c_isa_neq
Definition: bi_type.c:471
long hidden_type(ptr_definition t)
hidden_type
Definition: built_ins.c:3672
ptr_int_list children
Definition: def_struct.h:152
ptr_node attr_list
Definition: def_struct.h:187
ptr_definition quoted_string
symbol in bi module
Definition: def_glob.h:368
ptr_int_list next
Definition: def_struct.h:86
ptr_int_list parents
Definition: def_struct.h:151