array.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 namespace Gecode {
00023
00024
00025 class BoolVarArray;
00026
00036
00037 typedef PrimArgArray<int> IntArgs;
00039 typedef VarArgArray<IntVar> IntVarArgs;
00041 class BoolVarArgs : public IntVarArgs {
00042 public:
00044
00045
00046 BoolVarArgs(int n);
00048 BoolVarArgs(const BoolVarArgs& a);
00050 explicit BoolVarArgs(const BoolVarArray& a);
00052
00054
00055
00056 BoolVar& operator[](int i);
00058 const BoolVar& operator[](int i) const;
00060 };
00061
00063
00079 class IntVarArray : public VarArray<IntVar> {
00080 public:
00082
00083
00084 IntVarArray(void);
00086 IntVarArray(Space* home, int n);
00088 IntVarArray(const IntVarArray& a);
00100 GECODE_INT_EXPORT
00101 IntVarArray(Space* home, int n, int min, int max);
00113 GECODE_INT_EXPORT
00114 IntVarArray(Space* home, int n, const IntSet& s);
00116 };
00121 class BoolVarArray : public IntVarArray {
00122 public:
00124
00125
00126 BoolVarArray(void);
00128 BoolVarArray(Space* home, int n);
00130 BoolVarArray(const BoolVarArray& a);
00142 GECODE_INT_EXPORT
00143 BoolVarArray(Space* home, int n, int min, int max);
00145
00147
00148
00149 BoolVar& operator[](int i);
00151 const BoolVar& operator[](int i) const;
00153 };
00154
00156 template <>
00157 class ArrayTraits<IntVarArray> {
00158 public:
00159 typedef IntVarArgs storage_type;
00160 typedef IntVar value_type;
00161 typedef IntVarArgs args_type;
00162 };
00164 template <>
00165 class ArrayTraits<IntVarArgs> {
00166 public:
00167 typedef IntVarArgs storage_type;
00168 typedef IntVar value_type;
00169 typedef IntVarArgs args_type;
00170 };
00172 template <>
00173 class ArrayTraits<IntArgs> {
00174 public:
00175 typedef IntArgs storage_type;
00176 typedef int value_type;
00177 typedef IntArgs args_type;
00178 };
00180 template <>
00181 class ArrayTraits<BoolVarArray> {
00182 public:
00183 typedef BoolVarArgs storage_type;
00184 typedef BoolVar value_type;
00185 typedef BoolVarArgs args_type;
00186 };
00188 template <>
00189 class ArrayTraits<BoolVarArgs> {
00190 public:
00191 typedef BoolVarArgs storage_type;
00192 typedef BoolVar value_type;
00193 typedef BoolVarArgs args_type;
00194 };
00195
00196
00197
00198
00199
00200
00201 forceinline
00202 BoolVarArgs::BoolVarArgs(const BoolVarArgs& a)
00203 : IntVarArgs(a) {}
00204
00205 forceinline
00206 BoolVarArgs::BoolVarArgs(const BoolVarArray& a)
00207 : IntVarArgs(a) {}
00208
00209 forceinline
00210 BoolVarArgs::BoolVarArgs(int n)
00211 : IntVarArgs(n) {}
00212
00213
00214 forceinline BoolVar&
00215 BoolVarArgs::operator[](int i) {
00216 BoolVar* b = static_cast<BoolVar*>(&a[i]);
00217 return *b;
00218 }
00219
00220 forceinline const BoolVar&
00221 BoolVarArgs::operator[](int i) const {
00222 const BoolVar* b = static_cast<BoolVar*>(&a[i]);
00223 return *b;
00224 }
00225
00226 forceinline
00227 IntVarArray::IntVarArray(void) {}
00228
00229 forceinline
00230 IntVarArray::IntVarArray(Space* home, int n)
00231 : VarArray<IntVar>(home,n) {}
00232
00233 forceinline
00234 IntVarArray::IntVarArray(const IntVarArray& a)
00235 : VarArray<IntVar>(a) {}
00236
00237
00238 forceinline
00239 BoolVarArray::BoolVarArray(void) {}
00240
00241 forceinline
00242 BoolVarArray::BoolVarArray(const BoolVarArray& a)
00243 : IntVarArray(a) {}
00244
00245 forceinline
00246 BoolVarArray::BoolVarArray(Space* home, int n)
00247 : IntVarArray(home,n) {}
00248
00249
00250 forceinline BoolVar&
00251 BoolVarArray::operator[](int i) {
00252 BoolVar* b = static_cast<BoolVar*>(&x[i]);
00253 return *b;
00254 }
00255
00256 forceinline const BoolVar&
00257 BoolVarArray::operator[](int i) const {
00258 const BoolVar* b = static_cast<BoolVar*>(&x[i]);
00259 return *b;
00260 }
00261
00262 }
00263
00264