binding.h File Reference

#include "xsb_config.h"
#include "basictypes.h"
#include "box_defines.h"

Defines

#define PRE_IMAGE_TRAIL
#define PRE_IMAGE_MARK   1
#define TRAIL_FRAME_SIZE   4
#define pushtrail0(addr, val)
#define push_pre_image_trail0(addr, new_value)
#define conditional(a)
#define pushtrail(a, v)   if (conditional(a)) { pushtrail0(a,v); }
#define dpushtrail(a, v)   pushtrail0(a,v)
#define push_pre_image_trail(a, new_v)   if (conditional(a)) {push_pre_image_trail0(a, new_v)}
#define bind_int_tagged(addr, val)
#define bind_float_tagged(addr, val)
#define bind_int(addr, val)
#define bind_float(addr, val)   pushtrail(addr, makefloat(val)); bld_float(addr, val)
#define bind_boxedint(addr, value)
#define bind_boxedfloat(addr, value)
#define bind_oint(addr, val)
#define bind_ref(addr, val)
#define dbind_ref(addr, val)
#define bind_cs(addr, str)
#define bind_string(addr, str)
#define bind_nil(addr)
#define bind_list(addr, list)
#define bind_attv(addr, attv)
#define bind_copy(addr, val)   pushtrail(addr, val); *(addr) = val
#define untrail(addr)   bld_free(addr)
#define untrail2(trail_ptr, addr)
#define ereg_on_top(t_ereg)   t_ereg < ebreg
#define efreg_on_top(t_ereg)   efreg < ebreg && efreg < t_ereg
#define nbldval(OP1)

Define Documentation

#define bind_attv addr,
attv   ) 
 

Value:

pushtrail(addr, makeattv(attv));\
                                bld_attv(addr, attv)

#define bind_boxedfloat addr,
value   ) 
 

Value:

{   pushtrail(addr, (Cell)makecs(hreg)); \
        bld_boxedfloat(CTXTc addr, value); }

#define bind_boxedint addr,
value   ) 
 

Value:

{Cell binttemp = makecs(hreg);      \
      new_heap_functor(hreg,box_psc);                                           \
      bld_int(hreg,((ID_BOXED_INT << BOX_ID_OFFSET ) )); hreg++;        \
      bld_int(hreg,INT_LOW_24_BITS(value)); hreg++;                     \
      bld_int(hreg,((value) & LOW_24_BITS_MASK)); hreg++;                   \
      pushtrail(addr, binttemp);                                            \
      cell(addr) = binttemp;}

#define bind_copy addr,
val   )     pushtrail(addr, val); *(addr) = val
 

#define bind_cs addr,
str   ) 
 

Value:

pushtrail(addr, makecs(str));\
                                bld_cs(addr, str)

#define bind_float addr,
val   )     pushtrail(addr, makefloat(val)); bld_float(addr, val)
 

#define bind_float_tagged addr,
val   ) 
 

Value:

pushtrail(addr, (Cell) val);\
                        bld_float_tagged(addr, val)

#define bind_int addr,
val   ) 
 

Value:

pushtrail(addr, makeint(val));\
                                bld_int(addr, val)

#define bind_int_tagged addr,
val   ) 
 

Value:

pushtrail(addr, (Cell) val); \
                                        bld_int_tagged(addr, val)

#define bind_list addr,
list   ) 
 

Value:

pushtrail(addr, makelist(list));\
                                bld_list(addr, list)

#define bind_nil addr   ) 
 

Value:

pushtrail(addr, makenil);\
                                bld_nil(addr)

#define bind_oint addr,
val   ) 
 

Value:

if (int_overflow(val)) {               \
        bind_boxedint(addr, val);                               \
      } else {bind_int(addr, val);}

#define bind_ref addr,
val   ) 
 

Value:

pushtrail(addr, val);\
                                bld_ref(addr, val)

#define bind_string addr,
str   ) 
 

Value:

pushtrail(addr, makestring(str));\
                                bld_string(addr,str)

#define conditional a   ) 
 

Value:

( ((a) >= ebreg || (a) >= efreg) || \
                          ((a) < hbreg  || (a) < hfreg) )

#define dbind_ref addr,
val   ) 
 

Value:

dpushtrail(addr, val);\
                                bld_ref(addr, val)

#define dpushtrail a,
 )     pushtrail0(a,v)
 

#define efreg_on_top t_ereg   )     efreg < ebreg && efreg < t_ereg
 

#define ereg_on_top t_ereg   )     t_ereg < ebreg
 

#define nbldval OP1   ) 
 

Value:

{                                                         \
   XSB_Deref(OP1);                                                                \
   if ( isnonvar(OP1) ||                                                  \
        ( /* (CPtr)(OP1) >= glstack.low && */                             \
          (CPtr)(OP1) <= top_of_heap ) ) {                                \
     new_heap_node(hreg, OP1);                                            \
   }                                                                      \
   else {  /* local stack vars point to heap vars and not vice-versa! */  \
     bind_ref((CPtr)(OP1), hreg);                                         \
     new_heap_free(hreg);                                                 \
   }                                                                      \
}

#define PRE_IMAGE_MARK   1
 

#define PRE_IMAGE_TRAIL
 

#define push_pre_image_trail a,
new_v   )     if (conditional(a)) {push_pre_image_trail0(a, new_v)}
 

#define push_pre_image_trail0 addr,
new_value   ) 
 

Value:

if (trfreg > trreg) {                                           \
    if ((char *)trfreg > ((char *)(top_of_cpstack) -            \
                          TRAIL_FRAME_SIZE*sizeof(CPtr))) {     \
      handle_tcpstack_overflow(CTXT);                           \
    }                                                           \
    *(trfreg + 4) = (CPtr) trreg;                               \
    trreg = trfreg + 4;                                         \
    *(trreg - 1) = (CPtr) (new_value);                          \
    *(trreg - 2) = (CPtr) ((Cell) (addr) | PRE_IMAGE_MARK);     \
    *(trreg - 3) = (CPtr) (cell(addr));                         \
  }                                                             \
  else {                                                        \
    if ((char *)trreg > ((char *)(top_of_cpstack) -             \
                          TRAIL_FRAME_SIZE*sizeof(CPtr))) {     \
      handle_tcpstack_overflow(CTXT);                           \
    }                                                           \
    trreg = trreg + 4;                                          \
    *trreg = (CPtr) trreg - 4;                                  \
    *(trreg - 1) = (CPtr) (new_value);                          \
    *(trreg - 2) = (CPtr) ((Cell) (addr) | PRE_IMAGE_MARK);     \
    *(trreg - 3) = (CPtr) (cell(addr));                         \
  }

#define pushtrail a,
 )     if (conditional(a)) { pushtrail0(a,v); }
 

#define pushtrail0 addr,
val   ) 
 

Value:

if (trfreg > trreg) {\
     if ((char *)trfreg > \
         ((char *)(top_of_cpstack) - (TRAIL_FRAME_SIZE*sizeof(CPtr)))) {\
       handle_tcpstack_overflow(CTXT);\
     }\
     *(trfreg+3) = (CPtr) trreg;\
     trreg = trfreg + 3;\
     *(trreg-1) = (CPtr) val;\
     *(trreg-2) = addr;\
   }\
   else {\
     if ((char *)trreg > \
         ((char *)(top_of_cpstack) - (TRAIL_FRAME_SIZE*sizeof(CPtr)))) {\
       handle_tcpstack_overflow(CTXT);\
     }\
     trreg = trreg+3;\
     *trreg = (CPtr) trreg-3;\
     *(trreg-1) = (CPtr) val;\
     *(trreg-2) = addr;\
   }

#define TRAIL_FRAME_SIZE   4
 

#define untrail addr   )     bld_free(addr)
 

#define untrail2 trail_ptr,
addr   ) 
 

Value:

if ((addr) & PRE_IMAGE_MARK) {          \
    bld_copy0((CPtr)((addr) - PRE_IMAGE_MARK),  \
              cell((CPtr)trail_ptr - 3));       \
  }                                             \
  else                                          \
    bld_free((CPtr)(addr))


Generated on Wed Jul 26 13:26:53 2006 for XSB by  doxygen 1.4.5