Example #1
0
 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);
 }
Example #2
0
 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);
 }
Example #3
0
 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);
 }
Example #4
0
 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);
 }
Example #5
0
 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);
 }
Example #6
0
  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);
  }
Example #7
0
 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];
 }
Example #8
0
 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);
 }
Example #10
0
 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);
 }