#include "debugs/debug_attv.h"
|
|
|
|
|
Value: { \
XSB_Deref(OP1); \
if (isref(OP1)) { \
bind_attv((CPtr)(OP1), hreg); \
new_heap_free(hreg); /* the VAR part of the attv */ \
} \
else { \
xsb_dbgmsg((LOG_ATTV,">>>> nunify_with_attv, interrupt needed\n")); \
/* add_interrupt(makeattv(hreg), OP1); */ \
*hreg = OP1; hreg++; \
add_interrupt(CTXTc (Integer)hreg, OP1); \
} \
flag = WRITE; \
}
|
|
|
Value: XSB_Deref(OP1); \ if (isref(OP1)) { \ /* op1 is FREE */ \ bind_string((CPtr)(OP1), (char *)OP2); \ } \ else if (isstring(OP1)) { \ if (string_val(OP1) == (char *)OP2) {XSB_Next_Instr();} else Fail1; \ } \ else if (isattv(OP1)) { \ xsb_dbgmsg((LOG_ATTV,">>>> ATTV nunify_with_con, interrupt needed\n")); \ /* add_interrupt(OP1, makestring((char *)OP2)); */ \ add_interrupt(CTXTc cell(((CPtr)dec_addr(op1) + 1)),makestring((char *)OP2)); \ bind_string((CPtr)dec_addr(op1),(char *)OP2); \ } \ else Fail1; |
|
|
Value: XSB_Deref(OP1); \ if (isref(OP1)) { \ /* op1 is FREE */ \ bind_float_tagged(vptr(OP1), makefloat(OP2)); \ } \ else if (isofloat(OP1)) { \ if ( (float)ofloat_val(OP1) == OP2) { \ XSB_Next_Instr(); \ } \ else Fail1; \ } \ else if (isattv(OP1)) { \ xsb_dbgmsg((LOG_ATTV,">>>> ATTV nunify_with_float, interrupt needed\n")); \ /* add_interrupt(OP1, OP2); */ \ add_interrupt(CTXTc cell(((CPtr)dec_addr(op1) + 1)),makefloat(OP2)); \ bind_float_tagged((CPtr)dec_addr(op1), makefloat(OP2)); \ } \ else Fail1; |
|
|
Value: XSB_Deref(OP1); \ if (isref(OP1)) { \ /* op1 is FREE */ \ bind_boxedfloat(vptr(OP1), OP2); \ } \ else if (isofloat(OP1)) { \ if ( (float)ofloat_val(OP1) == OP2) { \ XSB_Next_Instr(); \ } \ else Fail1; \ } \ else if (isattv(OP1)) { \ xsb_dbgmsg((LOG_ATTV,">>>> ATTV nunify_with_float, interrupt needed\n")); \ /* add_interrupt(OP1, OP2); */ \ add_interrupt(CTXTc cell(((CPtr)dec_addr(op1) + 1)),makefloat(OP2)); \ bind_boxedfloat((CPtr)dec_addr(op1), OP2); \ } \ else Fail1; |
|
|
Value: XSB_Deref(OP1); \ if (isref(OP1)) { \ /* op1 is FREE */ \ bind_list((CPtr)(OP1), hreg); \ flag = WRITE; \ } \ else if (islist(OP1)) { \ sreg = clref_val(OP1); \ flag = READFLAG; \ } \ else if (isattv(OP1)) { \ xsb_dbgmsg((LOG_ATTV,">>>> ATTV nunify_with_list_sym, interrupt needed\n")); \ /* add_interrupt(OP1, makelist(hreg)); */ \ add_interrupt(CTXTc cell(((CPtr)dec_addr(op1) + 1)),makelist(hreg));\ bind_copy((CPtr)dec_addr(op1), makelist(hreg)); \ flag = WRITE; \ } \ else Fail1; |
|
|
Value: XSB_Deref(op); \ if (isref(op)) { \ /* op is FREE */ \ bind_nil((CPtr)(op)); \ } \ else if (isnil(op)) {XSB_Next_Instr();} /* op == [] */ \ else if (isattv(op)) { \ xsb_dbgmsg((LOG_ATTV,">>>> ATTV nunify_with_nil, interrupt needed\n")); \ /* add_interrupt(op, makenil); */ \ add_interrupt(CTXTc cell(((CPtr)dec_addr(op1) + 1)),makenil); \ bind_copy((CPtr)dec_addr(op1), makenil); \ } \ else Fail1; |
|
|
Value: /* op1 is general, op2 has number (untagged) */ \ XSB_Deref(OP1); \ if (isref(OP1)) { \ /* op1 is FREE */ \ bind_oint((CPtr)(OP1), (Integer)OP2); \ } \ else if (isinteger(OP1)) { \ if (oint_val(OP1) == (Integer)OP2) {XSB_Next_Instr();} else Fail1; \ } \ else if (isattv(OP1)) { \ xsb_dbgmsg((LOG_ATTV,">>>> ATTV nunify_with_num, interrupt needed\n")); \ /* add_interrupt(OP1, OP2); */ \ add_interrupt(CTXTc cell(((CPtr)dec_addr(op1) + 1)),makeint(OP2)); \ bind_oint((CPtr)dec_addr(op1), (Integer)OP2); \ } \ else Fail1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value: {0xffffffff,0xffffffff,0xffffffff,0xffffffff,
0xffffffff,0xffffffff,0xffffffff,0xffffffff}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Initial value: {0xffffffff,0xffffffff,0xffffffff,0xffffffff,
0xffffffff,0xffffffff,0xffffffff,0xffffffff,
0xffffffff,0xffffffff,0xffffffff,0xffffffff,
0xffffffff,0xffffffff,0xffffffff,0xffffffff}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.4.5