8 #ifndef _MP_domain_hpp_
9 #define _MP_domain_hpp_
44 virtual size_t size()
const ;
146 std::vector<int> elm(nbr);
147 for (
int i=0; i<nbr; i++) {
148 elm[i] =
D->I[i]->evaluate();
170 const std::vector<MP_index*> &i) :
S(s),
I(i){}
176 return S->evaluate(
I);
195 bool allBound =
true;
196 for (
int j=0; j<nbr; j++) {
197 if (
I[j]->isInstantiated() ==
true) {
207 if (allBound ==
true) {
210 std::map<std::vector<int>,
int>::const_iterator i;
212 for (i =
S->elements.begin(); i !=
S->elements.end(); i++) {
216 for (
int j=0; j<nbr; j++) {
217 if (isBound[j] ==
true) {
223 I[j]->assign(i->first[j]);
231 for (
int j=0; j<nbr; j++) {
232 if (isBound[j] ==
false) {
234 I[j]->unInstantiate();
246 std::vector<MP_index*>
I;
Representation of an index.
insertFunctor(MP_domain_subset< nbr > *d)
size_t size() const
returns number of elements in the domain.
MP_index * getIndex() const
getter for obtaining the index used in construction
std::vector< MP_boolean > condition
Constant operator*(const Constant &a, const Constant &b)
Returns the product of two constants.
MP_domain_subset< nbr > * D
MP_domain such_that(const MP_boolean &b)
Special conditional creation of a subset.
MP_domain getDomain(MP_set *s) const
std::vector< MP_index * > I
static MP_index & getEmpty()
returns a reference to the distinct "empty" index.
const MP_set_base * getSet() const
Getter for the set used in construction.
Internal representation of a "set".
static const MP_domain * Empty
Functor * makeInsertFunctor() const
Semantic representation of a linear constraint.
Handle< MP_domain_base * > last
Reference counted class for all "boolean" types of data.
virtual size_t size() const
Utility for doing reference counted pointers.
int evaluate() const
Evaluates the index within the domain.
int evaluate() const
Evaluates the index within the domain.
Range over which some other constuct is defined.
Internal representation of a index.
MP_index * getIndex() const
Getter for the index used in construction.
Representation of a set for indexing into some other construct.
void Forall(const Functor *op) const
Special conditional operation on the domain.
Representation of an expression involving an index.
static const MP_domain & getEmpty()
returns a reference to the "empty" set.
virtual ~MP_domain_base()
friend MP_domain operator*(const MP_domain &a, const MP_domain &b)
operator which creates a new domain as the pairwise combinations of two input domains.
MP_domain getDomain(MP_set *s) const
virtual MP_index * getIndex() const =0
friend MP_domain operator*(const MP_domain &a, const MP_domain &b)
operator which creates a new domain as the pairwise combinations of two input domains.
Inserter for construction of a subset.
MP_domain_set(const MP_set *s, MP_index *i)
Constructor taking a set pointer and an index pointer.
Range over which some other constuct is defined.
Reference to a set of index values.
MP_domain()
a set which points to nothing.
virtual const MP_set_base * getSet() const =0
virtual Functor * makeInsertFunctor() const
Internal representation of a "set".
Range over which some other constuct is defined.
MP_set_base * getSet() const
getter for obtaining the set used in construction