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

Method propagate

gecode/int/bool/eq.hpp:83–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

81
82 template<class BVA, class BVB>
83 ExecStatus
84 Eq<BVA,BVB>::propagate(Space& home, const ModEventDelta&) {
85#define GECODE_INT_STATUS(S0,S1) \
86 ((BVA::S0<<(1*BVA::BITS))|(BVB::S1<<(0*BVB::BITS)))
87 switch ((x0.status() << (1*BVA::BITS)) | (x1.status() << (0*BVB::BITS))) {
88 case GECODE_INT_STATUS(NONE,NONE):
89 GECODE_NEVER;
90 case GECODE_INT_STATUS(NONE,ZERO):
91 GECODE_ME_CHECK(x0.zero_none(home)); break;
92 case GECODE_INT_STATUS(NONE,ONE):
93 GECODE_ME_CHECK(x0.one_none(home)); break;
94 case GECODE_INT_STATUS(ZERO,NONE):
95 GECODE_ME_CHECK(x1.zero_none(home)); break;
96 case GECODE_INT_STATUS(ZERO,ZERO):
97 break;
98 case GECODE_INT_STATUS(ZERO,ONE):
99 return ES_FAILED;
100 case GECODE_INT_STATUS(ONE,NONE):
101 GECODE_ME_CHECK(x1.one_none(home)); break;
102 case GECODE_INT_STATUS(ONE,ZERO):
103 return ES_FAILED;
104 case GECODE_INT_STATUS(ONE,ONE):
105 break;
106 default:
107 GECODE_NEVER;
108 }
109 return home.ES_SUBSUMED(*this);
110#undef GECODE_INT_STATUS
111 }
112
113 template<class BV>
114 forceinline

Callers

nothing calls this directly

Calls 8

ES_SUBSUMEDMethod · 0.80
statusMethod · 0.45
zero_noneMethod · 0.45
one_noneMethod · 0.45
sizeMethod · 0.45
assignedMethod · 0.45
oneMethod · 0.45
zeroMethod · 0.45

Tested by

no test coverage detected