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