38 namespace Gecode {
namespace Int {
namespace Linear {
63 class ResultIter :
public ViewValues<IntView> {
73 void operator ++(
void);
189 SupportSet::ResultIter::operator ++(
void) {
192 }
while (ViewValues<IntView>::operator ()() && s.supported(p));
205 ResultIter
i(*
this,x);
222 int a0,
const IntView& x0, Val l0, Val u0) {
223 a=a0; x=x0; l=l0; u=u0;
234 return s.tell(home,x);
246 if (d + static_cast<Val>(
a)*x.
max() < u)
251 while (d + static_cast<Val>(
a)*
i.max() < u) {
259 while (d + static_cast<Val>(
a)*
c < u) {
263 d +=
static_cast<Val
>(
a) *
c;
270 Val
v =
static_cast<Val
>(
a) *
c;
284 c =
i.min(); v =
static_cast<Val
>(
a) *
c;
303 if (d + static_cast<Val>(
a)*x.
min() < u)
308 while (d + static_cast<Val>(
a)*
i.min() < u) {
316 while (d + static_cast<Val>(
a)*
c < u) {
320 d +=
static_cast<Val
>(
a) *
c;
327 Val
v =
static_cast<Val
>(
a) *
c;
341 c =
i.max(); v =
static_cast<Val
>(
a) *
c;
357 template<
class Val,
class View>
364 template<
class Val,
class View>
373 template<
class Val,
class View>
378 template<
class Val,
class View>
384 template<
class Val,
class View>
393 template<
class Val,
class View>
397 ExecStatus es = prop_bnd<Val,View,View>(home,med,*
this,x,y,
c);
399 return home.ES_FIX_PARTIAL(*
this,View::med(
ME_INT_DOM));
417 for (
int j=m; j--; ) {
418 yp[j].
init(r,-y[j].scale(),y[j].base(),l,u);
419 l += y[j].max(); u += y[j].min();
421 for (
int i=n;
i--; ) {
422 xp[
i].
init(r,x[
i].scale(),x[
i].base(),l,u);
436 if (!xp[i].reset(d))
goto prev_i;
442 if (!yp[j].reset(d))
goto prev_j;
448 for (
int is=n; is--; ) xp[is].support();
449 for (
int js=m; js--; ) yp[js].support();
454 if (yp[j-1].adjust(d))
goto next_j;
460 if (xp[i-1].adjust(d))
goto next_i;
467 for (
int i=n;
i--; ) {
472 for (
int j=m; j--; ) {