44 namespace Gecode {
namespace Set {
namespace RelOp {
51 template<
class View0,
class View1,
class View2>
57 template<
class View0,
class View1,
class View2>
64 template<
class View0,
class View1,
class View2>
71 template<
class View0,
class View1,
class View2>
74 return new (home)
Union(home,share,*
this);
77 template<
class View0,
class View1,
class View2>
83 bool x0ass = x0.assigned();
84 bool x1ass = x1.assigned();
85 bool x2ass = x2.assigned();
93 bool modified =
false;
116 bool modified2=
false;
119 x1ubmod |= modified2;
120 modified |= modified2;
127 bool modifiedOld = modified;
131 || x0ubmod || modifiedOld)
142 || x1ubmod || modifiedOld)
172 if (x2.cardMax() == 0) {
178 if (x0.cardMax() == 0)
180 if (x1.cardMax() == 0)
188 if (x0ass && x1ass && x2ass)
190 if (x0ass != x0.assigned() ||
191 x1ass != x1.assigned() ||
192 x2ass != x2.assigned()) {
206 template<
class View0,
class View1>
213 template<
class View0,
class View1>
223 template<
class View0,
class View1>
231 template<
class View0,
class View1>
237 template<
class View0,
class View1>
254 template<
class View0,
class View1>
257 const IntSet& z, View1 y) {
262 template<
class View0,
class View1>
268 template<
class View0,
class View1>
278 bool modified =
false;
279 bool oldModified =
false;
282 oldModified = modified;
284 if (modified || oldModified || ubevent)
286 if (modified || oldModified || ubevent)
288 if (modified || oldModified || anybevent)
290 if (modified || oldModified || lbevent)
292 if (modified || oldModified || cardevent || ubevent)
298 while (
i<x.
size() && x[
i].assigned()) {
300 unionOfDets.includeI(home,det);
310 unionOfDets.dispose(home);