#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} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|