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
Gecode::IntArgs i({1, 2, 3, 4})