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));
378 ModEvent me = lq_full(home,static_cast<int>(n));
399 int n =
static_cast<int>(m);
411 return nq_full(home,n);
417 return nq_full(home,static_cast<int>(d));
430 :
p(NULL),
c(x->ranges_fwd()) {}
468 :
n(NULL),
c(x->ranges_bwd()) {}
524 if ((min0 == min1) && (max0 == max1))
530 if (depends ||
range()) {
534 unsigned int s =
static_cast<unsigned int>(max0-min0+1);
571 assert((r != &f) && (r != &l));
572 if (r->
max() < min0) {
581 }
else if ((r->
min() == min0) && (r->
max() == max0)) {
588 min0=ri.min(); max0=ri.max(); ++ri;
591 assert((r->
min() <= min0) && (max0 <= r->
max()));
595 r->
min(min0); r->
max(max0);
596 assert(h > r->
width());
604 min0=ri.min(); max0=ri.max(); ++ri;
607 assert(h > static_cast<unsigned int>(max0-min0+1));
628 assert((r == &l) && !ri());
643 fn->
prev(&f,NULL); ln->
next(&l,NULL);
645 unsigned int b = (
static_cast<unsigned int>(fn->
min()-
dom.
min()) +
646 static_cast<unsigned int>(
dom.
max()-ln->
max()));
686 while (
i() && (i.max() <
dom.
min()))
690 if (!
i() || (i.min() >
dom.
max()))
701 return lq(home,i_min-1);
704 (!
i() || (i.min() >
dom.
max())))
705 return gq(home,i_max+1);
728 assert((r != &f) && (r != &l));
729 if (i_min > r->
max()) {
733 }
else if (i_max < r->
min()) {
739 }
else if ((i_min <= r->
min()) && (r->
max() <= i_max)) {
748 }
else if ((i_min > r->
min()) && (i_max < r->
max())) {
750 h +=
static_cast<unsigned int>(i_max - i_min) + 1;
753 p->next(r,n); r->
prev(p,n);
760 }
else if (i_max < r->
max()) {
761 assert(i_min <= r->
min());
763 h += i_max-r->
min()+1;
771 assert((i_max >= r->
max()) && (r->
min() < i_min));
773 h += r->
max()-i_min+1;
808 fn->
prev(&f,NULL); ln->
next(&l,NULL);
810 b = (
static_cast<unsigned int>(fn->
min()-
dom.
min()) +
811 static_cast<unsigned int>(
dom.
max()-ln->
max()));
844 return inter_r(home,r,depends);
856 while (
i() && (i.val() <
dom.
min()))
860 if (!
i() || (i.val() >
dom.
max()))
867 }
while (
i() && (i.val() ==
v));
870 if (!
i() || (i.val() >
dom.
max()))
871 return nq_full(home,v);
894 assert((r != &f) && (r != &l));
901 if ((v == r->
min()) && (v == r->
max())) {
910 }
else if (v == r->
min()) {
912 }
else if (v == r->
max()) {
917 }
else if (v > r->
min()) {
919 assert(v < r->
max());
923 p->next(r,n); r->
prev(p,n);
932 assert((r == &l) || !
i());
962 fn->
prev(&f,NULL); ln->
next(&l,NULL);
964 unsigned int b = (
static_cast<unsigned int>(fn->
min()-
dom.
min()) +
965 static_cast<unsigned int>(
dom.
max()-ln->
max()));
993 : perform_copy(home,share);