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