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
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 #ifndef VRS_CONTAINER_MAKEITERATOR_H
00060 #define VRS_CONTAINER_MAKEITERATOR_H
00061
00062 #include <vrs/container/fixedsizeiterator.h>
00063
00064 namespace VRS {
00065
00066 template<class T>
00067 inline Iterator<T>* makeIterator(
00068 const T& t0
00069 ) {
00070 FixedSizeIterator<T>* data = new FixedSizeIterator<T>(1);
00071 (*data)[0] = t0;
00072 return data;
00073 }
00074
00075 template<class T>
00076 inline Iterator<T>* makeIterator(
00077 const T& t0,
00078 const T& t1
00079 ) {
00080 FixedSizeIterator<T>* data = new FixedSizeIterator<T>(2);
00081 (*data)[0] = t0;
00082 (*data)[1] = t1;
00083 return data;
00084 }
00085
00086 template<class T>
00087 inline Iterator<T>* makeIterator(
00088 const T& t0,
00089 const T& t1,
00090 const T& t2
00091 ) {
00092 FixedSizeIterator<T>* data = new FixedSizeIterator<T>(3);
00093 (*data)[0] = t0;
00094 (*data)[1] = t1;
00095 (*data)[2] = t2;
00096 return data;
00097 }
00098
00099 template<class T>
00100 inline Iterator<T>* makeIterator(
00101 const T& t0,
00102 const T& t1,
00103 const T& t2,
00104 const T& t3
00105 ) {
00106 FixedSizeIterator<T>* data = new FixedSizeIterator<T>(4);
00107 (*data)[0] = t0;
00108 (*data)[1] = t1;
00109 (*data)[2] = t2;
00110 (*data)[3] = t3;
00111 return data;
00112 }
00113
00114 template<class T>
00115 inline Iterator<T>* makeIterator(
00116 const T& t0,
00117 const T& t1,
00118 const T& t2,
00119 const T& t3,
00120 const T& t4
00121 ) {
00122 FixedSizeIterator<T>* data = new FixedSizeIterator<T>(5);
00123 (*data)[0] = t0;
00124 (*data)[1] = t1;
00125 (*data)[2] = t2;
00126 (*data)[3] = t3;
00127 (*data)[4] = t4;
00128 return data;
00129 }
00130
00131 template<class T>
00132 inline Iterator<T>* makeIterator(
00133 const T& t0,
00134 const T& t1,
00135 const T& t2,
00136 const T& t3,
00137 const T& t4,
00138 const T& t5
00139 ) {
00140 FixedSizeIterator<T>* data = new FixedSizeIterator<T>(6);
00141 (*data)[0] = t0;
00142 (*data)[1] = t1;
00143 (*data)[2] = t2;
00144 (*data)[3] = t3;
00145 (*data)[4] = t4;
00146 (*data)[5] = t5;
00147 return data;
00148 }
00149
00150 template<class T>
00151 inline Iterator<T>* makeIterator(
00152 const T& t0,
00153 const T& t1,
00154 const T& t2,
00155 const T& t3,
00156 const T& t4,
00157 const T& t5,
00158 const T& t6
00159 ) {
00160 FixedSizeIterator<T>* data = new FixedSizeIterator<T>(7);
00161 (*data)[0] = t0;
00162 (*data)[1] = t1;
00163 (*data)[2] = t2;
00164 (*data)[3] = t3;
00165 (*data)[4] = t4;
00166 (*data)[5] = t5;
00167 (*data)[6] = t6;
00168 return data;
00169 }
00170
00171 template<class T>
00172 inline Iterator<T>* makeIterator(
00173 const T& t0,
00174 const T& t1,
00175 const T& t2,
00176 const T& t3,
00177 const T& t4,
00178 const T& t5,
00179 const T& t6,
00180 const T& t7
00181 ) {
00182 FixedSizeIterator<T>* data = new FixedSizeIterator<T>(8);
00183 (*data)[0] = t0;
00184 (*data)[1] = t1;
00185 (*data)[2] = t2;
00186 (*data)[3] = t3;
00187 (*data)[4] = t4;
00188 (*data)[5] = t5;
00189 (*data)[6] = t6;
00190 (*data)[7] = t7;
00191 return data;
00192 }
00193
00194 template<class T>
00195 inline Iterator<T>* makeIterator(
00196 const T& t0,
00197 const T& t1,
00198 const T& t2,
00199 const T& t3,
00200 const T& t4,
00201 const T& t5,
00202 const T& t6,
00203 const T& t7,
00204 const T& t8
00205 ) {
00206 FixedSizeIterator<T>* data = new FixedSizeIterator<T>(9);
00207 (*data)[0] = t0;
00208 (*data)[1] = t1;
00209 (*data)[2] = t2;
00210 (*data)[3] = t3;
00211 (*data)[4] = t4;
00212 (*data)[5] = t5;
00213 (*data)[6] = t6;
00214 (*data)[7] = t7;
00215 (*data)[8] = t8;
00216 return data;
00217 }
00218
00219
00220
00221 template<class T>
00222 inline Iterator<T>* makeNonPersistentIterator(
00223 const T& t0
00224 ) {
00225 NonPersistentFixedSizeIterator<T>* data = new NonPersistentFixedSizeIterator<T>(1);
00226 (*data)[0] = t0;
00227 return data;
00228 }
00229
00230 template<class T>
00231 inline Iterator<T>* makeNonPersistentIterator(
00232 const T& t0,
00233 const T& t1
00234 ) {
00235 NonPersistentFixedSizeIterator<T>* data = new NonPersistentFixedSizeIterator<T>(2);
00236 (*data)[0] = t0;
00237 (*data)[1] = t1;
00238 return data;
00239 }
00240
00241 template<class T>
00242 inline Iterator<T>* makeNonPersistentIterator(
00243 const T& t0,
00244 const T& t1,
00245 const T& t2
00246 ) {
00247 NonPersistentFixedSizeIterator<T>* data = new NonPersistentFixedSizeIterator<T>(3);
00248 (*data)[0] = t0;
00249 (*data)[1] = t1;
00250 (*data)[2] = t2;
00251 return data;
00252 }
00253
00254 template<class T>
00255 inline Iterator<T>* makeNonPersistentIterator(
00256 const T& t0,
00257 const T& t1,
00258 const T& t2,
00259 const T& t3
00260 ) {
00261 NonPersistentFixedSizeIterator<T>* data = new NonPersistentFixedSizeIterator<T>(4);
00262 (*data)[0] = t0;
00263 (*data)[1] = t1;
00264 (*data)[2] = t2;
00265 (*data)[3] = t3;
00266 return data;
00267 }
00268
00269 template<class T>
00270 inline Iterator<T>* makeNonPersistentIterator(
00271 const T& t0,
00272 const T& t1,
00273 const T& t2,
00274 const T& t3,
00275 const T& t4
00276 ) {
00277 NonPersistentFixedSizeIterator<T>* data = new NonPersistentFixedSizeIterator<T>(5);
00278 (*data)[0] = t0;
00279 (*data)[1] = t1;
00280 (*data)[2] = t2;
00281 (*data)[3] = t3;
00282 (*data)[4] = t4;
00283 return data;
00284 }
00285
00286 template<class T>
00287 inline Iterator<T>* makeNonPersistentIterator(
00288 const T& t0,
00289 const T& t1,
00290 const T& t2,
00291 const T& t3,
00292 const T& t4,
00293 const T& t5
00294 ) {
00295 NonPersistentFixedSizeIterator<T>* data = new NonPersistentFixedSizeIterator<T>(6);
00296 (*data)[0] = t0;
00297 (*data)[1] = t1;
00298 (*data)[2] = t2;
00299 (*data)[3] = t3;
00300 (*data)[4] = t4;
00301 (*data)[5] = t5;
00302 return data;
00303 }
00304
00305 template<class T>
00306 inline Iterator<T>* makeNonPersistentIterator(
00307 const T& t0,
00308 const T& t1,
00309 const T& t2,
00310 const T& t3,
00311 const T& t4,
00312 const T& t5,
00313 const T& t6
00314 ) {
00315 NonPersistentFixedSizeIterator<T>* data = new NonPersistentFixedSizeIterator<T>(7);
00316 (*data)[0] = t0;
00317 (*data)[1] = t1;
00318 (*data)[2] = t2;
00319 (*data)[3] = t3;
00320 (*data)[4] = t4;
00321 (*data)[5] = t5;
00322 (*data)[6] = t6;
00323 return data;
00324 }
00325
00326 template<class T>
00327 inline Iterator<T>* makeNonPersistentIterator(
00328 const T& t0,
00329 const T& t1,
00330 const T& t2,
00331 const T& t3,
00332 const T& t4,
00333 const T& t5,
00334 const T& t6,
00335 const T& t7
00336 ) {
00337 NonPersistentFixedSizeIterator<T>* data = new NonPersistentFixedSizeIterator<T>(8);
00338 (*data)[0] = t0;
00339 (*data)[1] = t1;
00340 (*data)[2] = t2;
00341 (*data)[3] = t3;
00342 (*data)[4] = t4;
00343 (*data)[5] = t5;
00344 (*data)[6] = t6;
00345 (*data)[7] = t7;
00346 return data;
00347 }
00348
00349 template<class T>
00350 inline Iterator<T>* makeNonPersistentIterator(
00351 const T& t0,
00352 const T& t1,
00353 const T& t2,
00354 const T& t3,
00355 const T& t4,
00356 const T& t5,
00357 const T& t6,
00358 const T& t7,
00359 const T& t8
00360 ) {
00361 NonPersistentFixedSizeIterator<T>* data = new NonPersistentFixedSizeIterator<T>(9);
00362 (*data)[0] = t0;
00363 (*data)[1] = t1;
00364 (*data)[2] = t2;
00365 (*data)[3] = t3;
00366 (*data)[4] = t4;
00367 (*data)[5] = t5;
00368 (*data)[6] = t6;
00369 (*data)[7] = t7;
00370 (*data)[8] = t8;
00371 return data;
00372 }
00373
00374
00375
00376 template<class T>
00377 inline Iterator<T>* makeIterator(
00378 const std::vector<T>& elements
00379 ) {
00380 return new FixedSizeIterator<T>(elements);
00381 }
00382
00383 template<class T>
00384 inline Iterator<T>* makeNonPersistentIterator(
00385 const std::vector<T>& elements
00386 ) {
00387 return new NonPersistentFixedSizeIterator<T>(elements);
00388 }
00389
00390
00391 template<class T>
00392 inline Iterator<T>* makeIterator(
00393 const std::list<T>& elements
00394 ) {
00395 return new FixedSizeIterator<T>(elements.begin(), elements.end());
00396 }
00397
00398 template<class T>
00399 inline Iterator<T>* makeNonPersistentIterator(
00400 const std::list<T>& elements
00401 ) {
00402 return new NonPersistentFixedSizeIterator<T>(elements.begin(), elements.end());
00403 }
00404
00405
00406 template<class T>
00407 inline Iterator<T>* makeIterator(
00408 const std::set<T>& elements
00409 ) {
00410 return new FixedSizeIterator<T>(elements.begin(), elements.end());
00411 }
00412
00413 template<class T>
00414 inline Iterator<T>* makeNonPersistentIterator(
00415 const std::set<T>& elements
00416 ) {
00417 return new NonPersistentFixedSizeIterator<T>(elements.begin(), elements.end());
00418 }
00419
00420 }
00421
00422 #endif // VRS_CONTAINER_MAKEITERATOR_H