45 #define FD_VARIABLE_FRAME_SIZE (OFFSET_RANGE + RANGE_SIZE + CHAINS_SIZE) 46 #define FD_INT_VARIABLE_FRAME_SIZE (OFFSET_RANGE + RANGE_SIZE) 48 #define OFFSET_RANGE 4 49 #define RANGE_SIZE (2 + (sizeof(Range) / sizeof(WamWord))) 51 #define OFFSET_CHAINS (OFFSET_RANGE + RANGE_SIZE) 56 #define FD_Tag_Value(fdv_adr) (((WamWord *) fdv_adr)[0]) 57 #define FD_INT_Date(fdv_adr) (((PlULong *) fdv_adr)[1]) 59 #define Queue_Propag_Mask(fdv_adr) (((WamWord *) fdv_adr)[2]) 60 #define Queue_Next_Fdv_Adr(fdv_adr)(((WamWord **) fdv_adr)[3]) 62 #define Range_Stamp(fdv_adr) (((WamWord *) fdv_adr)[OFFSET_RANGE]) 63 #define Nb_Elem(fdv_adr) (((WamWord *) fdv_adr)[OFFSET_RANGE + 1]) 64 #define Range(fdv_adr) ((Range *) ((WamWord *) fdv_adr+OFFSET_RANGE + 2)) 66 #define Chains_Stamp(fdv_adr) (((WamWord *) fdv_adr)[OFFSET_CHAINS]) 67 #define Nb_Cstr(fdv_adr) (((WamWord *) fdv_adr)[OFFSET_CHAINS + 1]) 68 #define Chains_Mask(fdv_adr) (((WamWord *) fdv_adr)[OFFSET_CHAINS + 2]) 69 #define Chain_Min(fdv_adr) (((WamWord **) fdv_adr)[OFFSET_CHAINS + 3]) 70 #define Chain_Max(fdv_adr) (((WamWord **) fdv_adr)[OFFSET_CHAINS + 4]) 71 #define Chain_Min_Max(fdv_adr) (((WamWord **) fdv_adr)[OFFSET_CHAINS + 5]) 72 #define Chain_Dom(fdv_adr) (((WamWord **) fdv_adr)[OFFSET_CHAINS + 6]) 73 #define Chain_Val(fdv_adr) (((WamWord **) fdv_adr)[OFFSET_CHAINS + 7]) 79 #define MASK_TO_KEEP_IN_QUEUE (1 << 8) 81 #define Is_Var_In_Queue(fdv_adr) (Queue_Propag_Mask(fdv_adr) != 0) 82 #define Del_Var_From_Queue(fdv_adr)(Queue_Propag_Mask(fdv_adr) = 0) 89 #define Extra_Cstr(fdv_adr) (Range(fdv_adr)->extra_cstr) 90 #define Min(fdv_adr) (Range(fdv_adr)->min) 91 #define Max(fdv_adr) (Range(fdv_adr)->max) 92 #define Vec(fdv_adr) (Range(fdv_adr)->vec) 100 #define CHAIN_NB_MIN 0 101 #define CHAIN_NB_MAX 1 102 #define CHAIN_NB_MIN_MAX 2 103 #define CHAIN_NB_DOM 3 104 #define CHAIN_NB_VAL 4 109 #define MASK_MIN_MAX 4 114 #define Has_Min_Mask(mask) ((mask) & MASK_MIN) 115 #define Has_Max_Mask(mask) ((mask) & MASK_MAX) 116 #define Has_Min_Max_Mask(mask) ((mask) & MASK_MIN_MAX) 117 #define Has_Dom_Mask(mask) ((mask) & MASK_DOM) 118 #define Has_Val_Mask(mask) ((mask) & MASK_VAL) 121 #define Set_Min_Mask(mask) ((mask) |= MASK_MIN) 122 #define Set_Max_Mask(mask) ((mask) |= MASK_MAX) 123 #define Set_Min_Max_Mask(mask) ((mask) |= MASK_MIN_MAX) 124 #define Set_Dom_Mask(mask) ((mask) |= MASK_DOM) 125 #define Set_Val_Mask(mask) ((mask) |= MASK_VAL) 132 #define CHAIN_RECORD_FRAME_SIZE 2 134 #define CF_Pointer(rec_adr) (*(WamWord **) &(rec_adr[0])) 135 #define Next_Chain(rec_adr) (*(WamWord **) &(rec_adr[1])) 142 #define CONSTRAINT_FRAME_SIZE 3 144 #define OFFSET_OF_OPTIM_POINTER 1 146 #define AF_Pointer(cf) (*(WamWord **) &(cf[0])) 147 #define Optim_Pointer(cf) (*(PlULong **) &(cf[1])) 148 #define Cstr_Address(cf) (*(PlLong (**)()) &(cf[2])) 155 #define ENV_VAR_VECTOR_MAX "VECTORMAX" 156 #define DEFAULT_VECTOR_MAX 127 159 #define Fd_Variable_Is_Ground(fdv_adr) (Tag_Of(FD_Tag_Value(fdv_adr)) == INT) 164 #define math_min(x, y) ((x) <= (y) ? (x) : (y)) 165 #define math_max(x, y) ((x) >= (y) ? (x) : (y)) 264 #define Pl_Fd_Assign_Value(fdv, n) Pl_Fd_Unify_With_Integer0(fdv, n) 283 #define Pl_Fd_New_Bool_Variable() Pl_Fd_New_Variable_Interval(0, 1) 286 #define Fd_Deref_Check_Fd_Var(fdv_word, word, tag_mask) \ 287 DEREF(fdv_word, word, tag_mask); \ 288 if (tag_mask == TAG_REF_MASK) \ 289 Pl_Err_Instantiation(); \ 291 if (tag_mask != TAG_INT_MASK && tag_mask != TAG_FDV_MASK) \ 292 Pl_Err_Type(pl_type_fd_variable, word) Bool Pl_Fd_After_Add_Cstr(Bool result_of_tell)
Definition: fd_inst.c:1345
Bool Pl_Fd_Unify_With_Integer0(WamWord *fdv_adr, int n)
Definition: fd_inst.c:1521
WamWord * Pl_Fd_New_Variable(void)
Definition: fd_inst.c:877
Range * Pl_Fd_Prolog_To_Range(WamWord list_word)
Definition: fd_inst.c:481
int Pl_Fd_Variable_Size0(WamWord *fdv_adr)
Definition: fd_inst.c:1661
WamWord * Pl_Fd_Prolog_To_Array_Int(WamWord list_word)
Definition: fd_inst.c:582
WamWord * Pl_Fd_New_Variable_Interval(int min, int max)
Definition: fd_inst.c:840
WamWord * Pl_Fd_New_Int_Variable(int n)
Definition: fd_inst.c:907
WamWord * Pl_Fd_Create_C_Frame(PlLong(*cstr_fct)(), WamWord *AF, WamWord *fdv_adr, Bool optim2)
Definition: fd_inst.c:769
Bool Pl_Fd_In_Range(WamWord *fdv_adr, Range *range)
Definition: fd_inst.c:1482
WamWord * Pl_Fd_Prolog_To_Array_Any(WamWord list_word)
Definition: fd_inst.c:646
Bool Pl_Fd_Check_For_Bool_Var(WamWord x_word)
Definition: fd_inst.c:1597
void Pl_Fd_Reset_Solver0(void)
Definition: fd_inst.c:430
intptr_t PlLong
Definition: gprolog.h:88
void Pl_Fd_Before_Add_Cstr(void)
Definition: fd_inst.c:934
void Pl_Fd_Init_Solver0(void)
Definition: fd_inst.c:400
Bool Pl_Fd_Remove_Value(WamWord *fdv_adr, int n)
Definition: fd_inst.c:1537
void Pl_Fd_Display_Extra_Cstr(WamWord *fdv_adr)
Definition: fd_inst.c:1720
Bool Pl_Fd_Use_Vector(WamWord *fdv_adr)
Definition: fd_inst.c:1568
void Pl_Fd_List_Int_To_Range(Range *range, WamWord list_word)
Definition: fd_inst.c:525
Bool Pl_Fd_Tell_Range(WamWord *fdv_adr, Range *range)
Definition: fd_inst.c:1306
int Pl_Fd_Prolog_To_Value(WamWord arg_word)
Definition: fd_inst.c:503
Bool Pl_Fd_Tell_Value(WamWord *fdv_adr, int n)
Definition: fd_inst.c:1031
WamWord * Pl_Fd_Prolog_To_Array_Fdv(WamWord list_word, Bool pl_var_ok)
Definition: fd_inst.c:700
int Pl_Fd_Copy_Variable0(WamWord *dst_adr, WamWord *fdv_adr)
Definition: fd_inst.c:1680
void Pl_Fd_Add_Dependency(WamWord *fdv_adr, int chain_nb, WamWord *CF)
Definition: fd_inst.c:795
Bool Pl_Fd_Unify_With_Fd_Var0(WamWord *fdv_adr1, WamWord *fdv_adr2)
Definition: fd_inst.c:1552
Bool Pl_Fd_Tell_Interv_Interv(WamWord *fdv_adr, int min, int max)
Definition: fd_inst.c:1188
Definition: fd_range.h:54
Bool Pl_Fd_In_Interval(WamWord *fdv_adr, int min, int max)
Definition: fd_inst.c:1466
Bool Pl_Fd_Tell_Interval(WamWord *fdv_adr, int min, int max)
Definition: fd_inst.c:1277
Bool Pl_Fd_Tell_Int_Range(WamWord *fdv_adr, Range *range)
Definition: fd_inst.c:1165
Bool Pl_Fd_Tell_Range_Range(WamWord *fdv_adr, Range *range)
Definition: fd_inst.c:1226
long WamWord
Definition: LINUX_SIGSEGV.c:4
WamWord * Pl_Fd_Prolog_To_Fd_Var(WamWord arg_word, Bool pl_var_ok)
Definition: fd_inst.c:445
WamWord pl_vec_max_integer
WamWord * Pl_Fd_New_Variable_Range(Range *r)
Definition: fd_inst.c:890
Bool Pl_Fd_Tell_Not_Value(WamWord *fdv_adr, int n)
Definition: fd_inst.c:1060
void Pl_Fd_Stop_Constraint(WamWord *CF)
Definition: fd_inst.c:1451
Bool Pl_Fd_Assign_Value_Fast(WamWord *fdv_adr, int n)
Definition: fd_inst.c:1501
int Bool
Definition: bool.h:65
void Pl_Fd_Add_List_Dependency(WamWord *array, int chain_nb, WamWord *CF)
Definition: fd_inst.c:824
char * Pl_Fd_Variable_To_String0(WamWord *fdv_adr)
Definition: fd_inst.c:1707