00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include "debugs/debug_delay.h"
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 #ifndef IGNORE_DELAYVAR
00047 #define handle_conditional_answers { \
00048 CPtr temp_hreg; \
00049 VariantSF subgoal; \
00050 \
00051 if (is_conditional_answer(NodePtr)) { \
00052 xsb_dbgmsg((LOG_DELAY, \
00053 "Trie-Code returning a conditional answer for ")); \
00054 subgoal = asi_subgoal(Delay(NodePtr)); \
00055 dbg_print_subgoal(LOG_DELAY, stddbg, subgoal); \
00056 xsb_dbgmsg((LOG_DELAY, " (positively delaying)\n")); \
00057 xsb_dbgmsg((LOG_DELAY, \
00058 ">>>> In handle_conditional_answers macro: \n")); \
00059 xsb_dbgmsg((LOG_DELAY, ">>>> num_vars_in_var_regs = %d\n", \
00060 num_vars_in_var_regs)); \
00061 if (num_vars_in_var_regs == -1) { \
00062 delay_positively(subgoal, NodePtr, \
00063 makestring(get_ret_string())); \
00064 } \
00065 else { \
00066 \
00067 temp_hreg = hreg; \
00068 new_heap_functor(hreg, get_ret_psc(num_vars_in_var_regs + 1)); \
00069 { \
00070 int i; \
00071 for (i = 0; i < num_vars_in_var_regs + 1; i++) { \
00072 cell(hreg++) = (Cell) var_regs[i]; \
00073 xsb_dbgmsg((LOG_DELAY, ">>>> var_regs[%d] = ", i)); \
00074 dbg_printterm(LOG_DELAY, stddbg, cell(var_regs[i]), 25); \
00075 xsb_dbgmsg((LOG_DELAY, "\n")); \
00076 } \
00077 } \
00078 delay_positively(subgoal, NodePtr, makecs(temp_hreg)); \
00079 } \
00080 } \
00081 }
00082 #else
00083 #define handle_conditional_answers { \
00084 if (is_conditional_answer(NodePtr)) { \
00085 VariantSF subgoal = asi_subgoal(Delay(NodePtr)); \
00086 delay_positively(subgoal, NodePtr, \
00087 makestring(get_ret_string())); \
00088 } \
00089 }
00090 #endif
00091
00092