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

Method solution

test/set/int.cpp:232–263  ·  view source on GitHub ↗

%Test whether \a x is solution

Source from the content-addressed store, hash-verified

230 srt(srt0), swapped(s) {}
231 /// %Test whether \a x is solution
232 virtual bool solution(const SetAssignment& x) const {
233 CountableSetRanges xr(x.lub, x[0]);
234 IntSet is(x.intval(), x.intval());
235 IntSetRanges dr(is);
236 Gecode::SetRelType rsrt = srt;
237 if (swapped) {
238 switch (srt) {
239 case SRT_SUB: rsrt = SRT_SUP; break;
240 case SRT_SUP: rsrt = SRT_SUB; break;
241 default: break;
242 }
243 }
244 switch (rsrt) {
245 case SRT_EQ: return Iter::Ranges::equal(xr, dr);
246 case SRT_NQ: return !Iter::Ranges::equal(xr, dr);
247 case SRT_SUB: return Iter::Ranges::subset(xr, dr);
248 case SRT_SUP: return Iter::Ranges::subset(dr, xr);
249 case SRT_DISJ:
250 {
251 Gecode::Iter::Ranges::Inter<CountableSetRanges,IntSetRanges>
252 inter(xr, dr);
253 return !inter();
254 }
255 case SRT_CMPL:
256 {
257 Gecode::Set::RangesCompl<IntSetRanges> drc(dr);
258 return Iter::Ranges::equal(xr,drc);
259 }
260 default: GECODE_NEVER;
261 }
262 return false;
263 }
264 /// Post constraint on \a x
265 virtual void post(Space& home, SetVarArray& x, IntVarArray& y) {
266 if (!swapped)

Callers

nothing calls this directly

Calls 4

interFunction · 0.85
intvalMethod · 0.80
equalFunction · 0.50
subsetFunction · 0.50

Tested by

no test coverage detected