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

Function rel

gecode/set/rel-op-const-vcc.cpp:46–160  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44 using namespace Gecode::Set::RelOp;
45
46 void
47 rel(Home home, SetVar x, SetOpType op, const IntSet& y, SetRelType r,
48 const IntSet& z) {
49 Set::Limits::check(y, "Set::rel");
50 Set::Limits::check(z, "Set::rel");
51 ConstSetView yv(home, y);
52 ConstSetView zv(home, z);
53
54 if (op==SOT_MINUS) {
55 switch (r) {
56 case SRT_EQ:
57 {
58 GlbRanges<ConstSetView> yr(yv);
59 RangesCompl<GlbRanges<ConstSetView> > yrc(yr);
60 IntSet yc(yrc);
61 ConstSetView cy(home, yc);
62 GECODE_ES_FAIL(
63 (Intersection<ConstSetView,
64 SetView,ConstSetView>
65 ::post(home,cy,x,zv)));
66 }
67 break;
68 case SRT_LQ: case SRT_LE: case SRT_GQ: case SRT_GR:
69 {
70 GlbRanges<ConstSetView> yr(yv);
71 RangesCompl<GlbRanges<ConstSetView> > yrc(yr);
72 IntSet yc(yrc);
73 ConstSetView cy(home, yc);
74 SetVar tmp(home,IntSet::empty,Set::Limits::min,Set::Limits::max);
75 GECODE_ES_FAIL(
76 (Intersection<ConstSetView,
77 SetView,SetView>
78 ::post(home,cy,x,tmp)));
79 dom(home,tmp,r,z);
80 }
81 break;
82 case SRT_NQ:
83 {
84 SetVar tmp(home);
85 GECODE_ES_FAIL(
86 (Distinct<SetView,ConstSetView>
87 ::post(home,tmp,zv)));
88 GlbRanges<ConstSetView> yr(yv);
89 RangesCompl<GlbRanges<ConstSetView> > yrc(yr);
90 IntSet yc(yrc);
91 ConstSetView cy(home, yc);
92 GECODE_ES_FAIL(
93 (Intersection<ConstSetView,
94 SetView,SetView>
95 ::post(home,cy,x,tmp)));
96 }
97 break;
98 case SRT_SUB:
99 {
100 GlbRanges<ConstSetView> yr(yv);
101 RangesCompl<GlbRanges<ConstSetView> > yrc(yr);
102 IntSet yc(yrc);
103 ConstSetView cy(home, yc);

Callers

nothing calls this directly

Calls 4

domFunction · 0.70
checkFunction · 0.50
postFunction · 0.50
excludeIMethod · 0.45

Tested by

no test coverage detected