1193323Sed#ifndef BENCHMARK_REGISTER_H 2193323Sed#define BENCHMARK_REGISTER_H 3193323Sed 4193323Sed#include <vector> 5193323Sed 6193323Sed#include "check.h" 7193323Sed 8193323Sedtemplate <typename T> 9193323Sedvoid AddRange(std::vector<T>* dst, T lo, T hi, int mult) { 10193323Sed CHECK_GE(lo, 0); 11193323Sed CHECK_GE(hi, lo); 12193323Sed CHECK_GE(mult, 2); 13193323Sed 14193323Sed // Add "lo" 15193323Sed dst->push_back(lo); 16193323Sed 17193323Sed static const T kmax = std::numeric_limits<T>::max(); 18249423Sdim 19193323Sed // Now space out the benchmarks in multiples of "mult" 20198090Srdivacky for (T i = 1; i < kmax / mult; i *= mult) { 21249423Sdim if (i >= hi) break; 22198090Srdivacky if (i > lo) { 23193323Sed dst->push_back(i); 24193323Sed } 25193323Sed } 26193323Sed 27193323Sed // Add "hi" (if different from "lo") 28193323Sed if (hi != lo) { 29193323Sed dst->push_back(hi); 30193323Sed } 31193323Sed} 32193323Sed 33193323Sed#endif // BENCHMARK_REGISTER_H 34193323Sed