MCPcopy Create free account
hub / github.com/Gecode/gecode / intersectI_full

Method intersectI_full

gecode/set/var-imp/set.hpp:238–269  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

236
237 template<class I>
238 ModEvent
239 SetVarImp::intersectI_full(Space& home, int mi, int ma, I& iterator) {
240 Iter::Ranges::SingletonAppend<I> si(mi,ma,iterator);
241 if (lub.intersectI(home, si)) {
242 BndSetRanges ub(lub);
243 BndSetRanges lb(glb);
244 if (!Iter::Ranges::subset(lb,ub)) {
245 glb.become(home, lub);
246 glb.card(glb.size());
247 lub.card(glb.size());
248 return fail(home);
249 }
250 ModEvent me = ME_SET_LUB;
251 if (cardMax() > lub.size()) {
252 lub.card(lub.size());
253 if (cardMin() > cardMax()) {
254 glb.become(home, lub);
255 glb.card(glb.size());
256 lub.card(glb.size());
257 return fail(home);
258 }
259 me = ME_SET_CLUB;
260 }
261 if (cardMax() == lub.size() && cardMin() == cardMax()) {
262 glb.become(home, lub);
263 me = ME_SET_VAL;
264 }
265 SetDelta d;
266 return notify(home, me, d);
267 }
268 return ME_SET_NONE;
269 }
270
271 forceinline ModEvent
272 SetVarImp::include(Space& home, int i, int j) {

Callers

nothing calls this directly

Calls 5

becomeMethod · 0.80
subsetFunction · 0.50
intersectIMethod · 0.45
cardMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected