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

Function p_int_lin_CMP_reif

gecode/flatzinc/registry.cpp:227–269  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

225 }
226 }
227 void p_int_lin_CMP_reif(FlatZincSpace& s, IntRelType irt, ReifyMode rm,
228 const ConExpr& ce, AST::Node* ann) {
229 if (rm == RM_EQV && ce[2]->isBool()) {
230 if (ce[2]->getBool()) {
231 p_int_lin_CMP(s, irt, ce, ann);
232 } else {
233 p_int_lin_CMP(s, neg(irt), ce, ann);
234 }
235 return;
236 }
237 IntArgs ia = s.arg2intargs(ce[0]);
238 int singleIntVar;
239 if (s.isBoolArray(ce[1],singleIntVar)) {
240 if (singleIntVar != -1) {
241 if (std::abs(ia[singleIntVar]) == 1 && ce[2]->getInt() == 0) {
242 IntVar siv = s.arg2IntVar(ce[1]->getArray()->a[singleIntVar]);
243 BoolVarArgs iv = s.arg2boolvarargs(ce[1], 0, singleIntVar);
244 IntArgs ia_tmp(ia.size()-1);
245 int count = 0;
246 for (int i=0; i<ia.size(); i++) {
247 if (i != singleIntVar)
248 ia_tmp[count++] = ia[singleIntVar] == -1 ? ia[i] : -ia[i];
249 }
250 IntRelType t = (ia[singleIntVar] == -1 ? irt : swap(irt));
251 linear(s, ia_tmp, iv, t, siv, Reify(s.arg2BoolVar(ce[3]), rm),
252 s.ann2ipl(ann));
253 } else {
254 IntVarArgs iv = s.arg2intvarargs(ce[1]);
255 linear(s, ia, iv, irt, ce[2]->getInt(),
256 Reify(s.arg2BoolVar(ce[3]), rm), s.ann2ipl(ann));
257 }
258 } else {
259 BoolVarArgs iv = s.arg2boolvarargs(ce[1]);
260 linear(s, ia, iv, irt, ce[2]->getInt(),
261 Reify(s.arg2BoolVar(ce[3]), rm), s.ann2ipl(ann));
262 }
263 } else {
264 IntVarArgs iv = s.arg2intvarargs(ce[1]);
265 linear(s, ia, iv, irt, ce[2]->getInt(),
266 Reify(s.arg2BoolVar(ce[3]), rm),
267 s.ann2ipl(ann));
268 }
269 }
270 void p_int_lin_eq(FlatZincSpace& s, const ConExpr& ce, AST::Node* ann) {
271 p_int_lin_CMP(s, IRT_EQ, ce, ann);
272 }

Callers 12

p_int_lin_eq_reifFunction · 0.85
p_int_lin_eq_impFunction · 0.85
p_int_lin_ne_reifFunction · 0.85
p_int_lin_ne_impFunction · 0.85
p_int_lin_le_reifFunction · 0.85
p_int_lin_le_impFunction · 0.85
p_int_lin_lt_reifFunction · 0.85
p_int_lin_lt_impFunction · 0.85
p_int_lin_ge_reifFunction · 0.85
p_int_lin_ge_impFunction · 0.85
p_int_lin_gt_reifFunction · 0.85
p_int_lin_gt_impFunction · 0.85

Calls 15

p_int_lin_CMPFunction · 0.85
ReifyClass · 0.85
isBoolMethod · 0.80
getBoolMethod · 0.80
arg2intargsMethod · 0.80
isBoolArrayMethod · 0.80
getIntMethod · 0.80
arg2IntVarMethod · 0.80
getArrayMethod · 0.80
arg2boolvarargsMethod · 0.80
arg2BoolVarMethod · 0.80
ann2iplMethod · 0.80

Tested by

no test coverage detected