forceinline Int<V0,V1,Idx,Val>::Int(Home home, IntSharedArray& c0, V0 y0, V1 y1) : Propagator(home), x0(y0), s0(0), x1(y1), s1(0), c(c0), iv(NULL) { home.notice(*this,AP_DISPOSE); x0.subscribe(home,*this,PC_INT_DOM); x1.subscribe(home,*this,PC_INT_DOM); }
forceinline ViewBase<VX,VY,VZ>::ViewBase(Home home, ViewArray<VX>& x0, VY y0, VZ z0, int c0) : Propagator(home), x(x0), y(y0), z(z0), c(c0) { if (vtd(y) == VTD_INTSET) home.notice(*this,AP_DISPOSE); x.subscribe(home,*this,PC_INT_DOM); subscribe(home,*this,y); z.subscribe(home,*this,PC_INT_BND); }
forceinline IntBase<VX,VY>::IntBase(Home home, ViewArray<VX>& x0, int n_s0, VY y0, int c0) : Propagator(home), x(x0), n_s(n_s0), y(y0), c(c0) { if (vtd(y) == VTD_INTSET) home.notice(*this,AP_DISPOSE); for (int i=n_s; i--; ) x[i].subscribe(home,*this,PC_INT_DOM); subscribe(home,*this,y); }
forceinline ElementUnion<SView,RView>:: ElementUnion(Home home, SView y0, IdxViewArray& iv0, RView y1) : Propagator(home), x0(y0), iv(iv0), x1(y1) { home.notice(*this,AP_DISPOSE); x0.subscribe(home,*this, PC_SET_ANY); x1.subscribe(home,*this, PC_SET_ANY); iv.subscribe(home,*this, PC_SET_ANY); }
forceinline Weights<View>::Weights(Home home, const SharedArray<int>& elements0, const SharedArray<int>& weights0, View x0, Gecode::Int::IntView y0) : Propagator(home), elements(elements0), weights(weights0), x(x0), y(y0) { home.notice(*this,AP_DISPOSE); x.subscribe(home,*this, PC_SET_ANY); y.subscribe(home,*this, Gecode::Int::PC_INT_BND); }
forceinline Base<View,subscribe>::Base(Home home, ViewArray<View>& x0, const TupleSet& t) : Propagator(home), x(x0), tupleSet(t), last_data(NULL) { if (subscribe) x.subscribe(home, *this, PC_INT_DOM); assert(ts()->finalized()); init_last(home, ts()->last, ts()->tuple_data); home.notice(*this,AP_DISPOSE); }
forceinline ElementUnionConst<SView,RView>:: ElementUnionConst(Home home, SView y0, const IntSetArgs& iv0, RView y1) : Propagator(home), x0(y0), n_iv(iv0.size()), x1(y1) { home.notice(*this,AP_DISPOSE); x0.subscribe(home,*this, PC_SET_ANY); x1.subscribe(home,*this, PC_SET_ANY); iv=static_cast<Space&>(home).alloc<IntSet>(n_iv); for (unsigned int i=iv0.size(); i--;) iv[i]=iv0[i]; }
forceinline Sequence<View,Val>::Sequence(Home home, ViewArray<View>& x0, Val s0, int q0, int l0, int u0) : Propagator(home), x(x0), s(s0), q(q0), l(l0), u(u0), vvsamax(home,x,s0,q0), vvsamin(home,x,s0,q0), ac(home) { home.notice(*this,AP_DISPOSE); for (int i=x.size(); i--; ) { if (undecided(x[i],s)) { x[i].subscribe(home,*new (home) SupportAdvisor<View>(home,*this,ac,i)); } else { x[i].schedule(home,*this,x[i].assigned() ? ME_INT_VAL : ME_INT_BND); } } }
forceinline EqInt<VY>::EqInt(Home home, ValSet& vs, ViewArray<IntView>& x, VY y) : IntBase<VY>(home,vs,x,y) { home.notice(*this, AP_WEAKLY); }
forceinline ReIntSet<View,rm>::ReIntSet (Home home, View x, const IntSet& s, BoolView b) : ReUnaryPropagator<View,PC_INT_DOM,BoolView>(home,x,b), is(s) { home.notice(*this,AP_DISPOSE); }