36namespace Gecode {
namespace Iter {
namespace Ranges {
48 template<
int UMIN,
int UMAX,
class I>
101 void init(
int umin,
int umax, I&
i);
112 template<
int UMIN,
int UMAX,
class I>
116 assert((i.min() >= UMIN) && (i.max() <= UMAX));
117 if (i.min() > UMIN) {
120 }
else if (i.max() < UMAX) {
123 ma = i() ? (i.min()-1) : UMAX;
133 template<
int UMIN,
int UMAX,
class I>
137 template<
int UMIN,
int UMAX,
class I>
143 template<
int UMIN,
int UMAX,
class I>
149 template<
int UMIN,
int UMAX,
class I>
152 assert(!i() || (i.max() <= UMAX));
153 if (i() && (i.max() < UMAX)) {
156 ma = i() ? (i.min()-1) : UMAX;
166 assert((i.min() >= UMIN) && (i.max() <= UMAX));
167 if (i.min() > UMIN) {
170 }
else if (i.max() < UMAX) {
173 ma = i() ? (i.min()-1) : UMAX;
190 : UMIN(umin), UMAX(umax), i(i0) {
197 UMIN=umin; UMAX=umax; i=i0; start();
203 assert(!i() || (i.max() <= UMAX));
204 if (i() && (i.max() < UMAX)) {
207 ma = i() ? (i.min()-1) : UMAX;
Range iterator for computing the complement (described by values)
I i
Iterator to compute complement for.
void init(int umin, int umax, I &i)
Initialize with iterator i.
void start(void)
Initialize.
ComplVal(void)
Default constructor.
void operator++(void)
Move iterator to next range (if possible)
int UMIN
Values describing the universe set.
Range iterator for computing the complement (described by template arguments)
void start(void)
Initialize.
I i
Iterator to compute complement for.
void init(I &i)
Initialize with iterator i.
Compl(I &i)
Initialize with iterator i.
Compl(void)
Default constructor.
void operator++(void)
Move iterator to next range (if possible)
Base for range iterators with explicit min and max.
Gecode toplevel namespace