40 namespace Gecode {
namespace Iter {
namespace Ranges {
52 template<
int UMIN,
int UMAX,
class I>
105 void init(
int umin,
int umax, I& i);
116 template<
int UMIN,
int UMAX,
class I>
120 assert((
i.min() >= UMIN) && (
i.max() <= UMAX));
121 if (
i.min() > UMIN) {
124 }
else if (
i.max() < UMAX) {
127 ma =
i() ? (
i.min()-1) : UMAX;
137 template<
int UMIN,
int UMAX,
class I>
141 template<
int UMIN,
int UMAX,
class I>
147 template<
int UMIN,
int UMAX,
class I>
153 template<
int UMIN,
int UMAX,
class I>
156 assert(!
i() || (
i.max() <= UMAX));
157 if (
i() && (
i.max() < UMAX)) {
160 ma =
i() ? (
i.min()-1) : UMAX;
170 assert((
i.min() >= UMIN) && (
i.max() <= UMAX));
171 if (
i.min() > UMIN) {
174 }
else if (
i.max() < UMAX) {
177 ma =
i() ? (
i.min()-1) : UMAX;
194 : UMIN(umin), UMAX(umax),
i(i0) {
201 UMIN=umin; UMAX=umax;
i=i0; start();
207 assert(!
i() || (
i.max() <= UMAX));
208 if (
i() && (
i.max() < UMAX)) {
211 ma =
i() ? (
i.min()-1) : UMAX;
void init(I &i)
Initialize with iterator i.
ComplVal(void)
Default constructor.
void start(void)
Initialize.
void operator++(void)
Move iterator to next range (if possible)
Compl(void)
Default constructor.
Base for range iterators with explicit min and max.
I i
Iterator to compute complement for.
Range iterator for computing the complement (described by template arguments)
int UMIN
Values describing the universe set.
void operator++(void)
Move iterator to next range (if possible)
Gecode::IntArgs i(4, 1, 2, 3, 4)
void init(int umin, int umax, I &i)
Initialize with iterator i.
void start(void)
Initialize.
Gecode toplevel namespace
I i
Iterator to compute complement for.
Range iterator for computing the complement (described by values)