set.icc
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 namespace Gecode {
00027
00028
00029
00030
00031
00032
00033 forceinline
00034 SetVar::SetVar(void) {
00035
00036
00037 }
00038
00039 forceinline void
00040 SetVar::init(Space* home) {
00041 x = new (home) Set::SetVarImp(home);
00042 }
00043
00044 forceinline void
00045 SetVar::init(Space* home,int lbMin,int lbMax,int ubMin,int ubMax,
00046 unsigned int cardMin, unsigned int cardMax) {
00047 x = new (home) Set::SetVarImp(home, lbMin,lbMax,ubMin,ubMax,
00048 cardMin, cardMax);
00049 }
00050
00051 forceinline void
00052 SetVar::init(Space* home, const IntSet& glb,int ubMin,int ubMax,
00053 unsigned int cardMin, unsigned int cardMax) {
00054 x = new (home) Set::SetVarImp(home, glb, ubMin, ubMax, cardMin, cardMax);
00055 }
00056
00057 forceinline void
00058 SetVar::init(Space* home, int lbMin,int lbMax,const IntSet& lub,
00059 unsigned int cardMin, unsigned int cardMax) {
00060 x = new (home) Set::SetVarImp(home, lbMin, lbMax, lub, cardMin, cardMax);
00061 }
00062
00063 forceinline void
00064 SetVar::init(Space* home, const IntSet& glb, const IntSet& lub,
00065 unsigned int cardMin, unsigned int cardMax) {
00066 x = new (home) Set::SetVarImp(home, glb, lub, cardMin, cardMax);
00067 }
00068
00069 forceinline Set::SetVarImp*
00070 SetVar::variable(void) const {
00071 return x;
00072 }
00073
00074
00075
00076
00077
00078
00079
00080
00081 forceinline unsigned int
00082 SetVar::glbSize(void) const { return x->glbSize(); }
00083
00084 forceinline unsigned int
00085 SetVar::lubSize(void) const { return x->lubSize(); }
00086
00087 forceinline unsigned int
00088 SetVar::unknownSize(void) const { return x->lubSize() - x->glbSize(); }
00089
00090 forceinline bool
00091 SetVar::assigned(void) const { return x->assigned(); }
00092
00093 forceinline bool
00094 SetVar::contains(int i) const { return (x->knownIn(i)); }
00095
00096 forceinline bool
00097 SetVar::notContains(int i) const { return (x->knownOut(i)); }
00098
00099 forceinline unsigned int
00100 SetVar::cardMin(void) const { return x->cardMin(); }
00101
00102 forceinline unsigned int
00103 SetVar::cardMax(void) const { return x->cardMax(); }
00104
00105 forceinline int
00106 SetVar::lubMin(void) const { return x->lubMin(); }
00107
00108 forceinline int
00109 SetVar::lubMax(void) const { return x->lubMax(); }
00110
00111 forceinline int
00112 SetVar::glbMin(void) const { return x->glbMin(); }
00113
00114 forceinline int
00115 SetVar::glbMax(void) const { return x->glbMax(); }
00116
00117
00118
00119
00120
00121
00122 forceinline void
00123 SetVar::update(Space* home, bool share, SetVar& y) {
00124 x = y.x->copy(home,share);
00125 }
00126
00127
00128
00129
00130
00131
00132
00133 forceinline
00134 SetVarGlbRanges::SetVarGlbRanges(void) {}
00135
00136 forceinline
00137 SetVarGlbRanges::SetVarGlbRanges(const SetVar& s)
00138 : iter(s.variable()) {}
00139
00140 forceinline
00141 bool
00142 SetVarGlbRanges::operator()(void) const { return iter(); }
00143
00144 forceinline
00145 void
00146 SetVarGlbRanges::operator++(void) { ++iter; }
00147
00148 forceinline
00149 int
00150 SetVarGlbRanges::min(void) const { return iter.min(); }
00151
00152 forceinline
00153 int
00154 SetVarGlbRanges::max(void) const { return iter.max(); }
00155
00156 forceinline
00157 unsigned int
00158 SetVarGlbRanges::width(void) const { return iter.width(); }
00159
00160 forceinline
00161 SetVarLubRanges::SetVarLubRanges(void) {}
00162
00163 forceinline
00164 SetVarLubRanges::SetVarLubRanges(const SetVar& s)
00165 : iter(s.variable()) {}
00166
00167 forceinline
00168 bool
00169 SetVarLubRanges::operator()(void) const { return iter(); }
00170
00171 forceinline
00172 void
00173 SetVarLubRanges::operator++(void) { ++iter; }
00174
00175 forceinline
00176 int
00177 SetVarLubRanges::min(void) const { return iter.min(); }
00178
00179 forceinline
00180 int
00181 SetVarLubRanges::max(void) const { return iter.max(); }
00182
00183 forceinline
00184 unsigned int
00185 SetVarLubRanges::width(void) const { return iter.width(); }
00186
00187 forceinline
00188 SetVarUnknownRanges::SetVarUnknownRanges(void) {}
00189
00190 forceinline
00191 SetVarUnknownRanges::SetVarUnknownRanges(const SetVar& s) {
00192 Set::SetVarImp *si = s.variable();
00193 iter.init(si);
00194 }
00195
00196 forceinline
00197 bool
00198 SetVarUnknownRanges::operator()(void) const { return iter(); }
00199
00200 forceinline
00201 void
00202 SetVarUnknownRanges::operator++(void) { ++iter; }
00203
00204 forceinline
00205 int
00206 SetVarUnknownRanges::min(void) const { return iter.min(); }
00207
00208 forceinline
00209 int
00210 SetVarUnknownRanges::max(void) const { return iter.max(); }
00211
00212 forceinline
00213 unsigned int
00214 SetVarUnknownRanges::width(void) const { return iter.width(); }
00215
00216 forceinline
00217 SetVarGlbValues::SetVarGlbValues(const SetVar& x) {
00218 SetVarGlbRanges ivr(x);
00219 iter.init(ivr);
00220 }
00221
00222 forceinline bool
00223 SetVarGlbValues::operator()(void) const {
00224 return iter();
00225 }
00226
00227 forceinline void
00228 SetVarGlbValues::operator++(void) {
00229 ++iter;
00230 }
00231
00232 forceinline int
00233 SetVarGlbValues::val(void) const {
00234 return iter.val();
00235 }
00236
00237 forceinline
00238 SetVarLubValues::SetVarLubValues(const SetVar& x) {
00239 SetVarLubRanges ivr(x);
00240 iter.init(ivr);
00241 }
00242
00243 forceinline bool
00244 SetVarLubValues::operator()(void) const {
00245 return iter();
00246 }
00247
00248 forceinline void
00249 SetVarLubValues::operator++(void) {
00250 ++iter;
00251 }
00252
00253 forceinline int
00254 SetVarLubValues::val(void) const {
00255 return iter.val();
00256 }
00257
00258 forceinline
00259 SetVarUnknownValues::SetVarUnknownValues(const SetVar& x) {
00260 SetVarUnknownRanges ivr(x);
00261 iter.init(ivr);
00262 }
00263
00264 forceinline bool
00265 SetVarUnknownValues::operator()(void) const {
00266 return iter();
00267 }
00268
00269 forceinline void
00270 SetVarUnknownValues::operator++(void) {
00271 ++iter;
00272 }
00273
00274 forceinline int
00275 SetVarUnknownValues::val(void) const {
00276 return iter.val();
00277 }
00278
00279 }
00280
00281
00282