#ifndef BENCHMARK_API_INTERNAL_H #define BENCHMARK_API_INTERNAL_H #include "benchmark/benchmark.h" #include "commandlineflags.h" #include <cmath> #include <iosfwd> #include <limits> #include <memory> #include <string> #include <vector> namespace benchmark { namespace internal { // Information kept per benchmark we may want to run struct BenchmarkInstance { std::string name; Benchmark* benchmark; AggregationReportMode aggregation_report_mode; std::vector<int64_t> arg; TimeUnit time_unit; int range_multiplier; bool use_real_time; bool use_manual_time; BigO complexity; BigOFunc* complexity_lambda; UserCounters counters; const std::vector<Statistics>* statistics; bool last_benchmark_instance; int repetitions; double min_time; size_t iterations; int threads; // Number of concurrent threads to us State Run(size_t iters, int thread_id, internal::ThreadTimer* timer, internal::ThreadManager* manager) const; }; bool FindBenchmarksInternal(const std::string& re, std::vector<BenchmarkInstance>* benchmarks, std::ostream* Err); bool IsZero(double n); ConsoleReporter::OutputOptions GetOutputOptions(bool force_no_color = false); } // end namespace internal } // end namespace benchmark #endif // BENCHMARK_API_INTERNAL_H