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) {
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)
int min(void) const
Return smallest value of range.
void init(I &i, J &j)
Initialize with iterator i and j.
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.
int n
Number of iterators.
void init(I *i, int n)
Initialize with n iterators in i.
int mi
Minimum of current range.
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.
int ma
Maximum of current range.