1#ifndef BENCHMARK_API_INTERNAL_H
2#define BENCHMARK_API_INTERNAL_H
3
4#include "benchmark/benchmark.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<int64_t> 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  UserCounters counters;
28  const std::vector<Statistics>* statistics;
29  bool last_benchmark_instance;
30  int repetitions;
31  double min_time;
32  size_t iterations;
33  int threads;  // Number of concurrent threads to us
34};
35
36bool FindBenchmarksInternal(const std::string& re,
37                            std::vector<Benchmark::Instance>* benchmarks,
38                            std::ostream* Err);
39
40bool IsZero(double n);
41
42ConsoleReporter::OutputOptions GetOutputOptions(bool force_no_color = false);
43
44}  // end namespace internal
45}  // end namespace benchmark
46
47#endif  // BENCHMARK_API_INTERNAL_H
48