42 namespace Gecode {
namespace Int {
49 #define GECODE_INT_RL2PD(r) reinterpret_cast<ptrdiff_t>(r)
50 #define GECODE_INT_PD2RL(p) reinterpret_cast<RangeList*>(p)
111 return static_cast<unsigned int>(
_max -
_min) + 1;
116 IntVarImp::RangeList::operator
delete(
void*) {}
119 IntVarImp::RangeList::operator
delete(
void*,
Space&) {
123 IntVarImp::RangeList::operator
delete(
void*,
void*) {
128 IntVarImp::RangeList::operator
new(size_t,
Space& home) {
129 return home.fl_alloc<
sizeof(
RangeList)>();
133 IntVarImp::RangeList::operator
new(size_t,
void* p) {
158 #undef GECODE_INT_RL2PD
159 #undef GECODE_INT_PD2RL
203 unsigned int h =
static_cast<unsigned int>(d.
max()-d.
min())+1;
207 for (
int i = 1;
i < n-1;
i++) {
243 return fst() == NULL;
293 return (
fst() == NULL) || in_full(n);
299 return (
fst() == NULL) || in_full(static_cast<int>(n));
357 ModEvent me = gq_full(home,static_cast<int>(n));
379 ModEvent me = lq_full(home,static_cast<int>(n));
401 int n =
static_cast<int>(
m);
414 return nq_full(home,n);
420 return nq_full(home,static_cast<int>(d));
433 : p(NULL),
c(x->ranges_fwd()) {}
471 : n(NULL),
c(x->ranges_bwd()) {}
527 if ((min0 == min1) && (max0 == max1))
533 if (depends ||
range()) {
537 unsigned int s =
static_cast<unsigned int>(max0-min0+1);
574 assert((r != &f) && (r != &l));
575 if (r->
max() < min0) {
584 }
else if ((r->
min() == min0) && (r->
max() == max0)) {
591 min0=ri.
min(); max0=ri.max(); ++ri;
594 assert((r->
min() <= min0) && (max0 <= r->
max()));
598 r->
min(min0); r->
max(max0);
599 assert(h > r->
width());
607 min0=ri.
min(); max0=ri.max(); ++ri;
610 assert(h > static_cast<unsigned int>(max0-min0+1));
631 assert((r == &l) && !ri());
646 fn->
prev(&f,NULL); ln->
next(&l,NULL);
648 unsigned int b = (
static_cast<unsigned int>(fn->
min()-
dom.
min()) +
649 static_cast<unsigned int>(
dom.
max()-ln->
max()));
689 while (
i() && (i.max() <
dom.
min()))
693 if (!
i() || (i.min() >
dom.
max()))
704 return lq(home,i_min-1);
707 (!
i() || (i.min() >
dom.
max())))
708 return gq(home,i_max+1);
731 assert((r != &f) && (r != &l));
732 if (i_min > r->
max()) {
736 }
else if (i_max < r->
min()) {
742 }
else if ((i_min <= r->
min()) && (r->
max() <= i_max)) {
751 }
else if ((i_min > r->
min()) && (i_max < r->
max())) {
753 h +=
static_cast<unsigned int>(i_max - i_min) + 1;
756 p->next(r,n); r->
prev(p,n);
763 }
else if (i_max < r->
max()) {
764 assert(i_min <= r->
min());
766 h += i_max-r->
min()+1;
774 assert((i_max >= r->
max()) && (r->
min() < i_min));
776 h += r->
max()-i_min+1;
811 fn->
prev(&f,NULL); ln->
next(&l,NULL);
813 b = (
static_cast<unsigned int>(fn->
min()-
dom.
min()) +
814 static_cast<unsigned int>(
dom.
max()-ln->
max()));
847 return inter_r(home,r,depends);
859 while (
i() && (i.val() <
dom.
min()))
863 if (!
i() || (i.val() >
dom.
max()))
870 }
while (
i() && (i.val() ==
v));
873 if (!
i() || (i.val() >
dom.
max()))
874 return nq_full(home,v);
897 assert((r != &f) && (r != &l));
904 if ((v == r->
min()) && (v == r->
max())) {
913 }
else if (v == r->
min()) {
915 }
else if (v == r->
max()) {
920 }
else if (v > r->
min()) {
922 assert(v < r->
max());
926 p->next(r,n); r->
prev(p,n);
935 assert((r == &l) || !
i());
965 fn->
prev(&f,NULL); ln->
next(&l,NULL);
967 unsigned int b = (
static_cast<unsigned int>(fn->
min()-
dom.
min()) +
968 static_cast<unsigned int>(
dom.
max()-ln->
max()));
996 : perform_copy(home,share);