Exemplo n.º 1
0
 ExecStatus
 Nq<View0,View1>::post(Home home, View0 x0, View1 x1){
   if (x0.assigned() && x1.assigned()) {
     if (overlap(x0.val(),x1.val()))
       return ES_FAILED;
   } else if (same(x0,x1)) {
     return ES_FAILED;
   } else {
     (void) new (home) Nq<View0,View1>(home,x0,x1);
   }
   return ES_OK;
 }
Exemplo n.º 2
0
Arquivo: eq.hpp Projeto: Gecode/gecode
 ExecStatus
 Eq<View0,View1>::post(Home home, View0 x0, View1 x1){
   if (x0.assigned()) {
     GECODE_ME_CHECK(x1.eq(home,x0.val()));
   } else if (x1.assigned()) {
     GECODE_ME_CHECK(x0.eq(home,x1.val()));
   } else if (!same(x0,x1)) {
     GECODE_ME_CHECK(x0.lq(home,x1.max()));
     GECODE_ME_CHECK(x1.lq(home,x0.max()));
     GECODE_ME_CHECK(x0.gq(home,x1.min()));
     GECODE_ME_CHECK(x1.gq(home,x0.min()));
     (void) new (home) Eq<View0,View1>(home,x0,x1);
   }
   return ES_OK;
 }
Exemplo n.º 3
0
 ExecStatus
 Distinct<View0,View1>::post(Home home, View0 x, View1 y) {
   if (x.assigned()) {
     GlbRanges<View0> xr(x);
     IntSet xs(xr);
     ConstSetView cv(home, xs);
     GECODE_ES_CHECK((DistinctDoit<View1>::post(home,y,cv)));
   }
   if (y.assigned()) {
     GlbRanges<View1> yr(y);
     IntSet ys(yr);
     ConstSetView cv(home, ys);
     GECODE_ES_CHECK((DistinctDoit<View0>::post(home,x,cv)));
   }
   (void) new (home) Distinct<View0,View1>(home,x,y);
   return ES_OK;
 }