00001 /* Copyright 1991 Digital Equipment Corporation. 00002 ** All Rights Reserved. 00003 *****************************************************************/ 00004 /* $Id: lefun.h,v 1.2 1994/12/08 23:26:31 duchier Exp $ */ 00005 00006 extern long match_aim(); 00007 extern long eval_aim(); 00008 00009 extern void residuate_double(); 00010 extern void residuate(); 00011 extern void residuate2(); 00012 extern void residuate3(); 00013 extern void curry(); 00014 extern long residuateGoalOnVar(); 00015 00016 extern long do_residuation(); /* For C built-ins */ 00017 extern long do_residuation_user(); /* For LIFE-defined routines */ 00018 extern void do_currying(); 00019 00020 extern void release_resid(); 00021 extern void release_resid_notrail(); 00022 00023 #define deref(P) {deref_ptr(P);if (deref_eval(P)) return TRUE;} 00024 #define deref_void(P) {deref_ptr(P);deref_eval(P);} 00025 #define deref_rec(P) {deref_ptr(P);if (deref_rec_eval(P)) return TRUE;} 00026 #define deref_args(P,S) {deref_ptr(P);if (deref_args_eval(P,S)) return TRUE;} 00027 #define deref_args_void(P) {deref_ptr(P);deref_args_eval(P);} 00028 00029 /* Checking out functions */ 00030 extern void check_func(); 00031 extern long deref_eval(); 00032 extern long deref_rec_eval(); 00033 extern long deref_args_eval(); 00034 extern void deref2_eval(); 00035 extern void deref2_rec_eval(); 00036 00037 /* External check out (i_ routines do not check out functions) */ 00038 extern long f_check_out(); 00039 extern long i_check_out(); 00040 extern long i_eval_args(); 00041 00042 /* Set constants for deref_args */ 00043 #define set_empty 0 00044 #define set_1 1 00045 #define set_2 2 00046 #define set_1_2 3 00047 #define set_1_2_3 7 00048 #define set_1_2_3_4 15 00049 00050 extern ptr_goal resid_aim; 00051 extern ptr_resid_list resid_vars; /* 21.9 */ 00052 extern ptr_goal resid_limit; 00053 extern long curried; 00054 extern long can_curry; 00055 00056 /* Residuation block state handling */ 00057 extern void save_resid(); 00058 extern void restore_resid(); 00059 00060 typedef struct wl_resid_block *ptr_resid_block; 00061 00062 typedef struct wl_resid_block { 00063 long cc_cr; /* 11.9 */ 00064 ptr_goal ra; 00065 /* long cc; 11.9 */ 00066 /* long cr; 11.9 */ 00067 ptr_resid_list rv; /* 21.9 */ 00068 ptr_psi_term md; 00069 } resid_block;
1.5.4