38 namespace Gecode {
namespace Iter {
namespace Ranges {
49 template<
class I,
class J>
64 void init(I& i, J& j);
101 void init(I*
i,
int n);
117 template<
class I,
class J>
121 mi =
i.min(); ma =
i.max();
123 if (!
i() && j() && (j.min() == ma+1)) {
128 mi = j.min(); ma = j.max();
136 template<
class I,
class J>
140 template<
class I,
class J>
150 template<
class I,
class J>
169 mi =
r[active].min();
170 ma =
r[active].max();
172 while (!
r[active]()) {
179 }
while (!
r[active]());
180 if (
r[active].
min() == ma+1){
181 ma =
r[active].max();
196 :
r(r0),
n(n0), active(0) {
209 r = r0;
n = n0; active = 0;
210 while (active <
n && !
r[active]())
Append(void)
Default constructor.
NaryAppend(void)
Default constructor.
void operator++(void)
Move iterator to next range (if possible)
Base for range iterators with explicit min and max.
void operator++(void)
Move iterator to next range (if possible)
void init(I &i, J &j)
Initialize with iterator i and j.
Gecode::IntArgs i(4, 1, 2, 3, 4)
int n
Number of negative literals for node type.
void finish(void)
Set range such that iteration stops
int active
Number of current iterator being processed.
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
int n
Number of iterators.
void init(I *i, int n)
Initialize with n iterators in i.
Range iterator for appending two range iterators
Gecode toplevel namespace
Range iterator for appending arbitrarily many iterators.
I * r
The array of iterators to be appended.
J j
Iterator to be appended.