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

Method post

gecode/int/channel/link-multi.hpp:52–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

50 }
51
52 forceinline ExecStatus
53 LinkMulti::post(Home home, ViewArray<BoolView>& x, IntView y, int o) {
54 int n=x.size();
55 GECODE_ME_CHECK(y.gq(home,o));
56 GECODE_ME_CHECK(y.lq(home,o+n-1));
57 assert(n > 0);
58 if (n == 1) {
59 GECODE_ME_CHECK(x[0].one(home));
60 assert(y.val() == o);
61 } else if (y.assigned()) {
62 int j=y.val()-o;
63 GECODE_ME_CHECK(x[j].one(home));
64 for (int i=0; i<j; i++)
65 GECODE_ME_CHECK(x[i].zero(home));
66 for (int i=j+1; i<n; i++)
67 GECODE_ME_CHECK(x[i].zero(home));
68 } else {
69 for (int i=0; i<n; i++)
70 if (x[i].one()) {
71 for (int j=0; j<i; j++)
72 GECODE_ME_CHECK(x[j].zero(home));
73 for (int j=i+1; j<n; j++)
74 GECODE_ME_CHECK(x[j].zero(home));
75 GECODE_ME_CHECK(y.eq(home,o+i));
76 return ES_OK;
77 } else if (x[i].zero()) {
78 GECODE_ME_CHECK(y.nq(home,o+i));
79 }
80 (void) new (home) LinkMulti(home,x,y,o);
81 }
82 return ES_OK;
83 }
84
85}}}
86

Callers

nothing calls this directly

Calls 9

sizeMethod · 0.45
gqMethod · 0.45
lqMethod · 0.45
oneMethod · 0.45
valMethod · 0.45
assignedMethod · 0.45
zeroMethod · 0.45
eqMethod · 0.45
nqMethod · 0.45

Tested by

no test coverage detected