Protected Member Functions 
 SetVarImp (Space &home, SetVarImp &x) 
 Constructor for cloning x.

Constructors and initialization 

 SetVarImp (Space &home) 
 Initialize with empty lower and full upper bound.

 SetVarImp (Space &home, int glbMin, int glbMax, int lubMin, int lubMax, unsigned int cardMin=0, unsigned int cardMax=Limits::card) 
 Initialize with given bounds and cardinality.

 SetVarImp (Space &home, const IntSet &glbD, int lubMin, int lubMax, unsigned int cardMin, unsigned int cardMax) 
 Initialize with given bounds and cardinality.

 SetVarImp (Space &home, int glbMin, int glbMax, const IntSet &lubD, unsigned int cardMin, unsigned int cardMax) 
 Initialize with given bounds and cardinality.

 SetVarImp (Space &home, const IntSet &glbD, const IntSet &lubD, unsigned int cardMin, unsigned int cardMax) 
 Initialize with given bounds and cardinality.

Value access 

unsigned int  cardMin (void) const 
 Return current cardinality minimum.

unsigned int  cardMax (void) const 
 Return current cardinality maximum.

int  lubMin (void) const 
 Return minimum of the least upper bound.

int  lubMax (void) const 
 Return maximum of the least upper bound.

int  lubMinN (unsigned int n) const 
 Return n th smallest element in the least upper bound.

int  glbMin (void) const 
 Return minimum of the greatest lower bound.

int  glbMax (void) const 
 Return maximum of the greatest lower bound.

unsigned int  glbSize (void) const 
 Return the size of the greatest lower bound.

unsigned int  lubSize (void) const 
 Return the size of the least upper bound.

Domain tests 

bool  assigned (void) const 
 Test whether variable is assigned.

bool  knownIn (int n) const 
 Test whether n is contained in greatest lower bound.

bool  knownOut (int) const 
 Test whether n is not contained in least upper bound.

Domain update by value 

ModEvent  include (Space &home, int n) 
 Include n in the greatest lower bound.

ModEvent  include (Space &home, int i, int j) 
 Include the range in the greatest lower bound.

ModEvent  exclude (Space &home, int n) 
 Exclude n from the least upper bound.

ModEvent  exclude (Space &home, int i, int j) 
 Exclude the range from the least upper bound.

ModEvent  intersect (Space &home, int n) 
 Exclude everything but n from the least upper bound.

ModEvent  intersect (Space &home, int i, int j) 
 Exclude everything but the range from the least upper bound.

ModEvent  cardMin (Space &home, unsigned int n) 
 Restrict cardinality to be at least n.

ModEvent  cardMax (Space &home, unsigned int n) 
 Restrict cardinality to be at most n.

Domain update by range iterator 

template<class I > 
ModEvent  includeI (Space &home, I &i) 
 Include set described by i in the greatest lower bound.

template<class I > 
ModEvent  excludeI (Space &home, I &i) 
 Exclude set described by i from the least upper bound.

template<class I > 
ModEvent  intersectI (Space &home, I &i) 
 Exclude everything but set described by i from the least upper bound.

Dependencies 

void  subscribe (Space &home, Propagator &p, PropCond pc, bool schedule=true) 
 Subscribe propagator p with propagation condition pc to variable.

void  reschedule (Space &home, Propagator &p, PropCond pc) 
 Reschedule propagator p with propagation condition pc.

void  subscribe (Space &home, Advisor &a, bool fail) 
 Subscribe advisor a to variable.

Cloning 

SetVarImp *  copy (Space &home) 
 Return copy of this variable.

Delta information for advisors 

static int  glbMin (const Delta &d) 
 Return minimum value just pruned from glb.

static int  glbMax (const Delta &d) 
 Return maximum value just pruned from glb.

static bool  glbAny (const Delta &d) 
 Test whether arbitrary values got pruned from glb.

static int  lubMin (const Delta &d) 
 Return minimum value just pruned from lub.

static int  lubMax (const Delta &d) 
 Return maximum value just pruned from lub.

static bool  lubAny (const Delta &d) 
 Test whether arbitrary values got pruned from lub.
