• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef BENCHMARK_API_INTERNAL_H
2 #define BENCHMARK_API_INTERNAL_H
3 
4 #include "benchmark/benchmark_api.h"
5 
6 #include <cmath>
7 #include <iosfwd>
8 #include <limits>
9 #include <string>
10 #include <vector>
11 
12 namespace benchmark {
13 namespace internal {
14 
15 // Information kept per benchmark we may want to run
16 struct Benchmark::Instance {
17   std::string name;
18   Benchmark* benchmark;
19   ReportMode report_mode;
20   std::vector<int> arg;
21   TimeUnit time_unit;
22   int range_multiplier;
23   bool use_real_time;
24   bool use_manual_time;
25   BigO complexity;
26   BigOFunc* complexity_lambda;
27   bool last_benchmark_instance;
28   int repetitions;
29   double min_time;
30   int threads;  // Number of concurrent threads to us
31 };
32 
33 bool FindBenchmarksInternal(const std::string& re,
34                             std::vector<Benchmark::Instance>* benchmarks,
35                             std::ostream* Err);
36 
37 namespace {
38 
IsZero(double n)39 bool IsZero(double n) {
40   return std::abs(n) < std::numeric_limits<double>::epsilon();
41 }
42 
43 }  // end namespace
44 }  // end namespace internal
45 }  // end namespace benchmark
46 
47 #endif  // BENCHMARK_API_INTERNAL_H
48