From 77b651ac6fa408019f341871c36b7c80003cdc98 Mon Sep 17 00:00:00 2001 From: "lperron@google.com" Date: Tue, 19 Mar 2013 18:29:15 +0000 Subject: [PATCH] MakeIsBetweenVar --- src/constraint_solver/constraint_solver.h | 1 + src/constraint_solver/expr_cst.cc | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/constraint_solver/constraint_solver.h b/src/constraint_solver/constraint_solver.h index 4127e9c630..b99876370c 100644 --- a/src/constraint_solver/constraint_solver.h +++ b/src/constraint_solver/constraint_solver.h @@ -1524,6 +1524,7 @@ class Solver { // b == (l <= v <= u) Constraint* MakeIsBetweenCt(IntVar* const v, int64 l, int64 u, IntVar* const b); + IntVar* MakeIsBetweenVar(IntVar* const v, int64 l, int64 u); // b == (v in set) Constraint* MakeIsMemberCt(IntVar* const v, const std::vector& values, diff --git a/src/constraint_solver/expr_cst.cc b/src/constraint_solver/expr_cst.cc index 943c677887..4d07673363 100644 --- a/src/constraint_solver/expr_cst.cc +++ b/src/constraint_solver/expr_cst.cc @@ -879,6 +879,13 @@ Constraint* Solver::MakeIsBetweenCt(IntVar* const v, return RevAlloc(new IsBetweenCt(this, v, l, u, b)); } +IntVar* Solver::MakeIsBetweenVar(IntVar* const v, int64 l, int64 u) { + CHECK_EQ(this, v->solver()); + IntVar* const b = MakeBoolVar(); + AddConstraint(MakeIsBetweenCt(v, l, u, b)); + return b; +} + // ---------- Member ---------- // ----- Member(IntVar, IntSet) -----