1#ifndef BENCHMARK_REGISTER_H
2#define BENCHMARK_REGISTER_H
3
4#include <limits>
5#include <vector>
6
7#include "check.h"
8
9template <typename T>
10void AddRange(std::vector<T>* dst, T lo, T hi, int mult) {
11  CHECK_GE(lo, 0);
12  CHECK_GE(hi, lo);
13  CHECK_GE(mult, 2);
14
15  // Add "lo"
16  dst->push_back(lo);
17
18  static const T kmax = std::numeric_limits<T>::max();
19
20  // Now space out the benchmarks in multiples of "mult"
21  for (T i = 1; i < kmax / mult; i *= mult) {
22    if (i >= hi) break;
23    if (i > lo) {
24      dst->push_back(i);
25    }
26  }
27
28  // Add "hi" (if different from "lo")
29  if (hi != lo) {
30    dst->push_back(hi);
31  }
32}
33
34#endif  // BENCHMARK_REGISTER_H
35