44 namespace Gecode {
namespace Int {
namespace Element {
91 for (
int i = n;
i--; ) {
92 xs[
i].idx =
i; xs[
i].view = xa[
i];
120 assert((i >= 0) && (i <
size()));
127 assert((i >= 0) && (i <
size()));
135 for (
int i = n;
i--; )
136 xs[
i].view.subscribe(home,p,pc,process);
142 for (
int i = n;
i--; )
143 xs[
i].view.cancel(home,p,pc);
152 for (
int i=n;
i--; ) {
153 xs[
i].idx = a[
i].idx;
154 xs[
i].view.
update(home,share,a[
i].view);
164 template<
class VA,
class VC>
183 template<
class VA,
class VC>
199 template<
class VA,
class VC>
210 template<
class VA,
class VC>
229 template<
class VA,
class VB,
class VC, PropCond pc_ac>
234 x1.subscribe(home,*
this,pc_ac);
238 template<
class VA,
class VB,
class VC, PropCond pc_ac>
242 x0.update(home,share,p.
x0);
243 x1.update(home,share,p.
x1);
247 template<
class VA,
class VB,
class VC, PropCond pc_ac>
256 template<
class VA,
class VB,
class VC, PropCond pc_ac>
260 x1.cancel(home,*
this,pc_ac);
261 iv.cancel(home,*
this,pc_ac);
263 return sizeof(*this);
325 template<
class VA,
class VB,
class VC, PropCond pc_ac,
class RelTest>
329 assert(iv.
size() > 1);
339 while (vx0() && (i < iv.
size())) {
340 if (iv[i].idx < vx0.val()) {
341 iv[
i].view.
cancel(home,p,pc_ac);
343 }
else if (iv[i].idx > vx0.val()) {
346 assert(iv[i].idx == vx0.val());
347 switch (rt(iv[i].view,x1)) {
349 iv[
i].view.
cancel(home,p,pc_ac);
360 while (i < iv.
size())
361 iv[i++].view.
cancel(home,p,pc_ac);
362 bool adjust = (j<iv.
size());
368 if (iv.
size() == 1) {
373 assert(x0.size() ==
static_cast<unsigned int>(iv.
size()));
386 template<
class VA,
class VB,
class VC>
392 template<
class VA,
class VB,
class VC>
409 template<
class VA,
class VB,
class VC>
414 template<
class VA,
class VB,
class VC>
420 template<
class VA,
class VB,
class VC>
423 assert(iv.size() > 1);
426 (home,iv,x0,x1,*
this,rt)));
427 if (iv.size() == 1) {
432 assert(iv.size() > 1);
434 int min = iv[iv.size()-1].view.min();
435 int max = iv[iv.size()-1].view.max();
436 for (
int i=iv.
size()-1;
i--; ) {
455 return (x1.assigned() && (min ==
max)) ?
468 template<
class VA,
class VB,
class VC>
474 template<
class VA,
class VB,
class VC>
491 template<
class VA,
class VB,
class VC>
496 template<
class VA,
class VB,
class VC>
503 template<
class VA,
class VB,
class VC>
510 template<
class VA,
class VB,
class VC>
513 assert(iv.size() > 1);
517 (home,iv,x0,x1,*
this,rt)));
518 if (iv.size() == 1) {
524 int min = iv[iv.size()-1].view.min();
525 int max = iv[iv.size()-1].view.max();
526 for (
int i=iv.
size()-1;
i--; ) {
532 return (x1.assigned() && (min ==
max)) ?
538 (home,iv,x0,x1,*
this,rt)));
539 if (iv.size() == 1) {
544 assert(iv.size() > 1);
547 for (
int i = iv.
size();
i--; )
548 i_view[
i].init(iv[
i].view);
550 ModEvent me = x1.inter_r(home,i_val);