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
12namespace benchmark {
13namespace internal {
14
15// Information kept per benchmark we may want to run
16struct 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
33bool FindBenchmarksInternal(const std::string& re,
34 std::vector<Benchmark::Instance>* benchmarks,
35 std::ostream* Err);
36
37namespace {
38
39bool 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