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

Method propagate

gecode/int/bool/eqv.hpp:86–149  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

84
85 template<class BVA, class BVB, class BVC>
86 ExecStatus
87 Eqv<BVA,BVB,BVC>::propagate(Space& home, const ModEventDelta&) {
88#define GECODE_INT_STATUS(S0,S1,S2) \
89 ((BVA::S0<<(2*BVA::BITS))|(BVB::S1<<(1*BVB::BITS))|(BVC::S2<<(0*BVC::BITS)))
90 switch ((x0.status() << (2*BVA::BITS)) | (x1.status() << (1*BVB::BITS)) |
91 (x2.status() << (0*BVC::BITS))) {
92 case GECODE_INT_STATUS(NONE,NONE,NONE):
93 GECODE_NEVER;
94 case GECODE_INT_STATUS(NONE,NONE,ZERO):
95 case GECODE_INT_STATUS(NONE,NONE,ONE):
96 case GECODE_INT_STATUS(NONE,ZERO,NONE):
97 return ES_FIX;
98 case GECODE_INT_STATUS(NONE,ZERO,ZERO):
99 GECODE_ME_CHECK(x0.one_none(home)); break;
100 case GECODE_INT_STATUS(NONE,ZERO,ONE):
101 GECODE_ME_CHECK(x0.zero_none(home)); break;
102 case GECODE_INT_STATUS(NONE,ONE,NONE):
103 return ES_FIX;
104 case GECODE_INT_STATUS(NONE,ONE,ZERO):
105 GECODE_ME_CHECK(x0.zero_none(home)); break;
106 case GECODE_INT_STATUS(NONE,ONE,ONE):
107 GECODE_ME_CHECK(x0.one_none(home)); break;
108 case GECODE_INT_STATUS(ZERO,NONE,NONE):
109 return ES_FIX;
110 case GECODE_INT_STATUS(ZERO,NONE,ZERO):
111 GECODE_ME_CHECK(x1.one_none(home)); break;
112 case GECODE_INT_STATUS(ZERO,NONE,ONE):
113 GECODE_ME_CHECK(x1.zero_none(home)); break;
114 case GECODE_INT_STATUS(ZERO,ZERO,NONE):
115 GECODE_ME_CHECK(x2.one_none(home)); break;
116 case GECODE_INT_STATUS(ZERO,ZERO,ZERO):
117 return ES_FAILED;
118 case GECODE_INT_STATUS(ZERO,ZERO,ONE):
119 break;
120 case GECODE_INT_STATUS(ZERO,ONE,NONE):
121 GECODE_ME_CHECK(x2.zero_none(home)); break;
122 case GECODE_INT_STATUS(ZERO,ONE,ZERO):
123 break;
124 case GECODE_INT_STATUS(ZERO,ONE,ONE):
125 return ES_FAILED;
126 case GECODE_INT_STATUS(ONE,NONE,NONE):
127 return ES_FIX;
128 case GECODE_INT_STATUS(ONE,NONE,ZERO):
129 GECODE_ME_CHECK(x1.zero_none(home)); break;
130 case GECODE_INT_STATUS(ONE,NONE,ONE):
131 GECODE_ME_CHECK(x1.one_none(home)); break;
132 case GECODE_INT_STATUS(ONE,ZERO,NONE):
133 GECODE_ME_CHECK(x2.zero_none(home)); break;
134 case GECODE_INT_STATUS(ONE,ZERO,ZERO):
135 break;
136 case GECODE_INT_STATUS(ONE,ZERO,ONE):
137 return ES_FAILED;
138 case GECODE_INT_STATUS(ONE,ONE,NONE):
139 GECODE_ME_CHECK(x2.one_none(home)); break;
140 case GECODE_INT_STATUS(ONE,ONE,ZERO):
141 return ES_FAILED;
142 case GECODE_INT_STATUS(ONE,ONE,ONE):
143 break;

Callers

nothing calls this directly

Calls 4

ES_SUBSUMEDMethod · 0.80
statusMethod · 0.45
one_noneMethod · 0.45
zero_noneMethod · 0.45

Tested by

no test coverage detected