82 # define WORD_SIZE_BITS 5 86 # define WORD_SIZE_BITS 6 196 #define Word_No_And_Bit_No(w, b) (((VecWord) (w) << WORD_SIZE_BITS)|\ 198 #define Word_No(n) ((VecWord) (n) >> WORD_SIZE_BITS) 199 #define Bit_No(n) ((n) & (((VecWord) 1 << WORD_SIZE_BITS)-1)) 203 #define Vector_Test_Value(vec, n) ((vec[Word_No(n)] & ((VecWord) 1 << Bit_No(n))) != 0) 208 #define Vector_Set_Value(vec, n) (vec[Word_No(n)] |= ((VecWord) 1 << Bit_No(n))) 213 #define Vector_Reset_Value(vec, n) (vec[Word_No(n)] &= ~((VecWord) 1 << Bit_No(n))) 218 #define Vector_Allocate_If_Necessary(vec) \ 222 Vector_Allocate(vec); \ 229 #define Vector_Allocate(vec) \ 232 vec = (Vector) RANGE_TOP_STACK; \ 233 RANGE_TOP_STACK += pl_vec_size; \ 247 #define VECTOR_BEGIN_ENUM(vec, vec_elem) \ 249 Vector enum_end = vec + pl_vec_size, enum_i = vec; \ 256 enum_word = *enum_i; \ 257 for (enum_j = 0; enum_j++ < WORD_SIZE; enum_word >>= 1, vec_elem++) \ 263 #define VECTOR_END_ENUM \ 267 while (++enum_i < enum_end); \ 277 #define Is_Interval(range) ((range)->vec == NULL) 278 #define Is_Sparse(range) ((range)->vec != NULL) 279 #define Is_Empty(range) ((range)->min > (range)->max) 280 #define Is_Not_Empty(range) ((range)->max >= (range)->min) 283 #define Set_To_Empty(range) (range)->max = (int)(1 << (sizeof(int) * 8 - 1)) 286 #define Range_Init_Interval(range, r_min, r_max) \ 289 (range)->extra_cstr = FALSE; \ 290 (range)->min = (r_min); \ 291 (range)->max = (r_max); \ 292 (range)->vec = NULL; \ void Pl_Vector_Mul_Vector(Vector vec, Vector vec1)
Definition: fd_range.c:520
void Pl_Vector_Div_Vector(Vector vec, Vector vec1)
Definition: fd_range.c:556
void Pl_Vector_Empty(Vector vec)
Definition: fd_range.c:328
void Pl_Range_Sub_Range(Range *range, Range *range1)
Definition: fd_range.c:1366
void Pl_Vector_Compl(Vector vec)
Definition: fd_range.c:432
Vector vec
Definition: fd_range.h:59
void Pl_Range_Union(Range *range, Range *range1)
Definition: fd_range.c:1151
Bool Pl_Range_Test_Value(Range *range, int n)
Definition: fd_range.c:793
void Pl_Vector_Div_Value(Vector vec, int n)
Definition: fd_range.c:731
void Pl_Vector_Copy(Vector vec, Vector vec1)
Definition: fd_range.c:381
void Pl_Vector_Mod_Value(Vector vec, int n)
Definition: fd_range.c:763
void Pl_Vector_From_Interval(Vector vec, int min, int max)
Definition: fd_range.c:140
VecWord * Vector
Definition: fd_range.h:52
void Pl_Range_Mul_Value(Range *range, int n)
Definition: fd_range.c:1560
void Pl_Vector_Sub_Vector(Vector vec, Vector vec1)
Definition: fd_range.c:485
PlULong VecWord
Definition: fd_range.h:50
void Pl_Range_Reset_Value(Range *range, int n)
Definition: fd_range.c:1101
void Pl_Vector_Full(Vector vec)
Definition: fd_range.c:345
void Pl_Vector_Mul_Value(Vector vec, int n)
Definition: fd_range.c:701
void Pl_Range_From_Vector(Range *range)
Definition: fd_range.c:1008
void Pl_Vector_Mod_Vector(Vector vec, Vector vec1)
Definition: fd_range.c:595
int Pl_Range_Next_Before(Range *range, int n)
Definition: fd_range.c:957
void Pl_Range_Inter(Range *range, Range *range1)
Definition: fd_range.c:1211
int Pl_Vector_Ith_Elem(Vector vec, int n)
Definition: fd_range.c:199
void Pl_Range_Div_Range(Range *range, Range *range1)
Definition: fd_range.c:1453
int Pl_Range_Ith_Elem(Range *range, int n)
Definition: fd_range.c:902
void Pl_Vector_Inter(Vector vec, Vector vec1)
Definition: fd_range.c:415
void Pl_Range_Mod_Range(Range *range, Range *range1)
Definition: fd_range.c:1491
void Pl_Range_Add_Value(Range *range, int n)
Definition: fd_range.c:1530
void Pl_Vector_Add_Value(Vector vec, int n)
Definition: fd_range.c:628
int min
Definition: fd_range.h:57
void Pl_Range_Set_Value(Range *range, int n)
Definition: fd_range.c:1045
void Pl_Range_Becomes_Sparse(Range *range)
Definition: fd_range.c:986
int Pl_Range_Nb_Elem(Range *range)
Definition: fd_range.c:885
Bool Pl_Range_Test_Null_Inter(Range *range, Range *range1)
Definition: fd_range.c:815
Definition: fd_range.h:54
int Pl_Vector_Nb_Elem(Vector vec)
Definition: fd_range.c:176
void Pl_Vector_Add_Vector(Vector vec, Vector vec1)
Definition: fd_range.c:449
void Pl_Range_Compl(Range *range)
Definition: fd_range.c:1258
Bool extra_cstr
Definition: fd_range.h:56
void Pl_Range_Div_Value(Range *range, int n)
Definition: fd_range.c:1586
void Pl_Range_Add_Range(Range *range, Range *range1)
Definition: fd_range.c:1316
void Pl_Range_Mul_Range(Range *range, Range *range1)
Definition: fd_range.c:1415
char * Pl_Range_To_String(Range *range)
Definition: fd_range.c:1692
Bool Pl_Vector_Test_Null_Inter(Vector vec, Vector vec1)
Definition: fd_range.c:362
#define Range(fdv_adr)
Definition: fd_inst.h:64
void Pl_Range_Mod_Value(Range *range, int n)
Definition: fd_range.c:1612
int Pl_Vector_Next_After(Vector vec, int n)
Definition: fd_range.c:224
int max
Definition: fd_range.h:58
void Pl_Vector_Union(Vector vec, Vector vec1)
Definition: fd_range.c:398
int Bool
Definition: bool.h:65
void Pl_Define_Vector_Size(int max_val)
Definition: fd_range.c:126
void Pl_Range_Copy(Range *range, Range *range1)
Definition: fd_range.c:862
uintptr_t PlULong
Definition: gprolog.h:90
int Pl_Range_Next_After(Range *range, int n)
Definition: fd_range.c:928
int Pl_Vector_Next_Before(Vector vec, int n)
Definition: fd_range.c:276