38 namespace Gecode {
namespace Set {
52 ArrayRanges(
void) : _ranges(NULL), _size(0), _pos(0) {}
56 : _ranges(ranges), _size(size), _pos(0) {}
59 _ranges = ranges; _size =
size; _pos = 0;
73 int min(
void)
const {
return _ranges[_pos*2]; }
76 int max(
void)
const {
return _ranges[_pos*2+1]; }
78 unsigned int width(
void)
const {
79 return static_cast<unsigned int>(_ranges[_pos*2+1]-_ranges[_pos*2]+1);
92 ranges = home.
alloc<
int>(2*size);
94 for (
int i=0; dr(); ++dr,
i+=2) {
95 int min = dr.min();
int max = dr.max();
98 domSize +=
static_cast<unsigned int>(max-min+1);
116 for (
int j=size; j--; ) {
117 if (ranges[2*j+1] < i)
119 if (ranges[2*j] >= i)
176 ranges[0]==ranges[1] && ranges[0]==c)) ?
225 home.
free<
int>(ranges, 2);
233 ranges = home.
alloc<
int>(2*size);
234 for (
int i=size;
i--; ) {
235 ranges[2*
i] = p.ranges[2*
i];
236 ranges[2*
i+1] = p.ranges[2*
i+1];
589 : Iter::Ranges::Singleton(Limits::
min,
613 : Iter::Ranges::Singleton(Limits::
min,
640 ar.init(x.ranges,x.size);
654 int min(
void)
const {
return ar.min(); }
657 int max(
void)
const {
return ar.max(); }
659 unsigned int width(
void)
const {
return ar.width(); }
689 if ((x.size != y.size) || (x.domSize != y.domSize))
691 for (
int i=x.size;
i--; )
692 if (x.ranges[2*
i] != y.ranges[2*
i] ||
693 x.ranges[2*
i+1] != y.ranges[2*
i+1])
701 if (x.domSize < y.domSize)
703 for (
int i=x.size;
i--; )
704 if (x.ranges[2*
i] < y.ranges[2*
i] ||
705 x.ranges[2*
i+1] < y.ranges[2*
i+1])