| 335 | |
| 336 | template <class ParameterType> |
| 337 | class TestListGenerator_Large_Random |
| 338 | { |
| 339 | protected: |
| 340 | std::vector<size_t> supported_length; |
| 341 | std::vector<ParameterType> data_sets; |
| 342 | |
| 343 | void GenerateSizes(size_t maximum_size) |
| 344 | { |
| 345 | std::list<size_t> sizes; |
| 346 | |
| 347 | size_t i = 0, j = 0, k = 0, l = 0, m = 0, n = 0; |
| 348 | size_t sum, sumi, sumj, sumk, suml, summ, sumn; |
| 349 | |
| 350 | sumi = 1; i = 0; |
| 351 | while (1) |
| 352 | { |
| 353 | sumj = 1; j = 0; |
| 354 | while (1) |
| 355 | { |
| 356 | sumk = 1; k = 0; |
| 357 | while (1) |
| 358 | { |
| 359 | suml = 1; l = 0; |
| 360 | while (1) |
| 361 | { |
| 362 | summ = 1; m = 0; |
| 363 | while (1) |
| 364 | { |
| 365 | sumn = 1; n = 0; |
| 366 | while (1) |
| 367 | { |
| 368 | sum = (sumi*sumj*sumk*suml*summ*sumn); |
| 369 | if (sum > maximum_size) break; |
| 370 | |
| 371 | sizes.push_back(sum); |
| 372 | n++; |
| 373 | sumn *= 2; |
| 374 | } |
| 375 | |
| 376 | if (n == 0) break; |
| 377 | m++; |
| 378 | summ *= 3; |
| 379 | } |
| 380 | |
| 381 | if ((m == 0) && (n == 0)) break; |
| 382 | l++; |
| 383 | suml *= 5; |
| 384 | } |
| 385 | |
| 386 | if ((l == 0) && (m == 0) && (n == 0)) break; |
| 387 | k++; |
| 388 | sumk *= 7; |
| 389 | } |
| 390 | |
| 391 | if ((k == 0) && (l == 0) && (m == 0) && (n == 0)) break; |
| 392 | j++; |
| 393 | sumj *= 11; |
| 394 | } |