| 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; |
nothing calls this directly
no test coverage detected