1 #ifndef BENCHMARK_API_INTERNAL_H 2 #define BENCHMARK_API_INTERNAL_H 3 4 #include "benchmark/benchmark.h" 5 #include "commandlineflags.h" 6 7 #include <cmath> 8 #include <iosfwd> 9 #include <limits> 10 #include <memory> 11 #include <string> 12 #include <vector> 13 14 namespace benchmark { 15 namespace internal { 16 17 // Information kept per benchmark we may want to run 18 struct BenchmarkInstance { 19 BenchmarkName name; 20 Benchmark* benchmark; 21 AggregationReportMode aggregation_report_mode; 22 std::vector<int64_t> arg; 23 TimeUnit time_unit; 24 int range_multiplier; 25 bool measure_process_cpu_time; 26 bool use_real_time; 27 bool use_manual_time; 28 BigO complexity; 29 BigOFunc* complexity_lambda; 30 UserCounters counters; 31 const std::vector<Statistics>* statistics; 32 bool last_benchmark_instance; 33 int repetitions; 34 double min_time; 35 IterationCount iterations; 36 int threads; // Number of concurrent threads to us 37 38 State Run(IterationCount iters, int thread_id, internal::ThreadTimer* timer, 39 internal::ThreadManager* manager) const; 40 }; 41 42 bool FindBenchmarksInternal(const std::string& re, 43 std::vector<BenchmarkInstance>* benchmarks, 44 std::ostream* Err); 45 46 bool IsZero(double n); 47 48 ConsoleReporter::OutputOptions GetOutputOptions(bool force_no_color = false); 49 50 } // end namespace internal 51 } // end namespace benchmark 52 53 #endif // BENCHMARK_API_INTERNAL_H 54