| 106 | |
| 107 | template<class View, PropCond pc> |
| 108 | forceinline ExecStatus |
| 109 | MultZeroOne<View,pc>::post(Home home, View x0, View x1) { |
| 110 | switch (equal(x0,0)) { |
| 111 | case RT_FALSE: |
| 112 | GECODE_ME_CHECK(x1.eq(home,1)); |
| 113 | break; |
| 114 | case RT_TRUE: |
| 115 | break; |
| 116 | case RT_MAYBE: |
| 117 | switch (equal(x1,1)) { |
| 118 | case RT_FALSE: |
| 119 | GECODE_ME_CHECK(x0.eq(home,0)); |
| 120 | break; |
| 121 | case RT_TRUE: |
| 122 | break; |
| 123 | case RT_MAYBE: |
| 124 | (void) new (home) MultZeroOne<View,pc>(home,x0,x1); |
| 125 | break; |
| 126 | default: GECODE_NEVER; |
| 127 | } |
| 128 | break; |
| 129 | default: GECODE_NEVER; |
| 130 | } |
| 131 | return ES_OK; |
| 132 | } |
| 133 | |
| 134 | template<class View, PropCond pc> |
| 135 | forceinline |