| << Prev | - Up - | Next >> |
Instances of classes derived from OZ_CtWakeUp indicate to the runtime system which wake-up event occurred. Therefore, member functions to initialize an RIWakeUp instance according to a possible event are defined. They will be used to determine the wake-up event of a propagator upon a certain parameter when imposing a propagator(see Section ``Extending OZ_Expect'').
class RIWakeUp : public OZ_CtWakeUp {
public:
static OZ_CtWakeUp wakeupMin(void) {
OZ_CtWakeUp ri_wakeup_min;
ri_wakeup_min.init();
ri_wakeup_min.setWakeUp(0);
return ri_wakeup_min;
}
static OZ_CtWakeUp wakeupMax(void) {
OZ_CtWakeUp ri_wakeup_max;
ri_wakeup_max.init();
ri_wakeup_max.setWakeUp(1);
return ri_wakeup_max;
}
static OZ_CtWakeUp wakeupMinMax(void) {
OZ_CtWakeUp ri_wakeup_minmax;
ri_wakeup_minmax.init();
ri_wakeup_minmax.setWakeUp(0);
ri_wakeup_minmax.setWakeUp(1);
return ri_wakeup_minmax;
}
};
An instance of RIWakeUp is computed from an instance of RI and a profile (stored before the constraint has be modified) by
OZ_CtWakeUp RI::getWakeUpDescriptor(OZ_CtProfile * p) (see Section ``The Actual Real-Interval Constraint''). The definition of the profile class RIProfile for real-intervals is given below.
class RIProfile : public OZ_CtProfile {
private:
ri_float _l, _u;
public:
RIProfile(void) {}
virtual void init(OZ_Ct * c) {
RI * ri = (RI *) c;
_l = ri->_l;
_u = ri->_u;
}
};
The function RIProfile::init(OZ_Ct * c) takes a snapshot of c to enable the detection of the abovementioned wake-up events, i. e., modified lower/upper bound resp. both.
| << Prev | - Up - | Next >> |