Go to the documentation of this file.
38 namespace Gecode {
namespace Int {
50 :
DerivedView<View>(
y), _firstRange(NULL), _lastRange(NULL),
99 return x.regret_min();
104 return x.regret_max();
202 return x.narrow_r(home,
i,depend);
208 return x.inter_r(home,
i,depend);
214 return x.minus_r(home,
i,depend);
220 return x.narrow_v(home,
i,depend);
226 return x.inter_v(home,
i,depend);
232 return x.minus_v(home,
i,depend);
244 return View::med(me);
284 _firstRange =
new (home)
RangeList(
y._firstRange->min(),
285 y._firstRange->max(),NULL);
288 for (
RangeList* y_cur =
y._firstRange->next(); y_cur != NULL;
289 y_cur = y_cur->next()) {
291 new (home)
RangeList(y_cur->min(),y_cur->max(),NULL);
312 _lastRange = _firstRange;
320 _firstRange->dispose(home,_lastRange);
337 return x.size() != _size;
383 : cr(
x._firstRange), dr(
x.
base()) {
390 cr.init(
x._firstRange);
402 return (
x.base() ==
y.base()) && (
x.offset() ==
y.offset());
Post propagator for SetVar x
ModEvent gq(Space &home, int n)
Restrict domain values to be greater or equal than n.
Post propagator for SetVar SetOpType SetVar y
int min(int i) const
Return minimum of range at position i.
int max(int i) const
Return maximum of range at position i.
void update(Space &home, DerivedView< View > &y)
Update this view to be a clone of view y.
void init(const View &x)
Initialize with ranges for view x.
int min(void) const
Return smallest value of range.
unsigned int size(void) const
Return size (cardinality) of domain.
ModEvent gr(Space &home, int n)
Restrict domain values to be greater than n.
unsigned int regret_min(void) const
Return regret of domain minimum (distance to next larger value)
ModEvent nq(Space &home, int n)
Restrict domain values to be different from n.
ModEvent minus_v(Space &home, I &i, bool depends=true)
Remove from domain the values described by i.
void init(const CachedView< View > &x)
Initialize with ranges for view x.
ViewDiffRanges(void)
Default constructor.
ViewRanges< View > dr
Current domain iterator.
unsigned int size(void) const
Return size (cardinality) of set.
Base-class for derived views.
Gecode toplevel namespace
Range iterator for integer views.
ModEvent narrow_r(Space &home, I &i, bool depends=true)
Replace domain by ranges described by i.
ModEvent le(Space &home, int n)
Restrict domain values to be less than n.
CachedView(void)
Default constructor.
Generic domain change information to be supplied to advisors.
ModEvent eq(Space &home, int n)
Restrict domain values to be equal to n.
Iter::Ranges::RangeList cr
Cached domain iterator.
void init(I &i, J &j)
Initialize with iterator i and j.
ModEvent narrow_v(Space &home, I &i, bool depends=true)
Replace domain by values described by i.
int med(void) const
Return median of domain (greatest element not greater than the median)
ViewRanges(void)
Default constructor.
unsigned int regret_max(void) const
Return regret of domain maximum (distance to next smaller value)
const double base
Base for geometric restart sequence.
void cache(Space &home)
Update cache to current domain.
bool modified(void) const
Check whether cache differs from current domain.
int min(void) const
Return minimum of domain.
ModEvent inter_v(Space &home, I &i, bool depends=true)
Intersect domain with values described by i.
int ModEvent
Type for modification events.
unsigned int width(void) const
Return width of domain (distance between maximum and minimum)
int val(void) const
Return assigned value (only if assigned)
ModEvent inter_r(Space &home, I &i, bool depends=true)
Intersect domain with ranges described by i.
void initCache(Space &home, const IntSet &s)
Initialize cache to set s.
int max(void) const
Return largest value of range.
ModEvent lq(Space &home, int n)
Restrict domain values to be less or equal than n.
ModEvent minus_r(Space &home, I &i, bool depends=true)
Remove from domain the ranges described by i.
int max(void) const
Return maximum of domain.
void update(Space &home, CachedView< View > &y)
Update this view to be a clone of view y.
RangeList * next(void) const
Return next element.
int n
Number of negative literals for node type.
Lists of ranges (intervals)
int ModEventDelta
Modification event deltas.
bool operator!=(const CachedView< View > &x, const CachedView< View > &y)
Gecode::IntArgs i({1, 2, 3, 4})
bool range(void) const
Test whether domain is a range.
bool operator==(const CachedView< View > &x, const CachedView< View > &y)
int ranges(void) const
Return number of ranges of the specification.
bool any(const Delta &d) const
Test whether arbitrary values got pruned.
bool in(int n) const
Test whether n is contained in domain.