blob: d481dc528644639ad6cf1c98be2bdc7bb6f251fb [file] [log] [blame]
Eric Fiselierfbc9ff22016-11-05 00:30:27 +00001#ifndef BENCHMARK_API_INTERNAL_H
2#define BENCHMARK_API_INTERNAL_H
3
Eric Fiselier19039762018-01-18 04:23:01 +00004#include "benchmark/benchmark.h"
Eric Fiselierfbc9ff22016-11-05 00:30:27 +00005
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;
Eric Fiselier133a7202017-04-18 07:17:20 +000027 UserCounters counters;
Eric Fiselier19039762018-01-18 04:23:01 +000028 const std::vector<Statistics>* statistics;
Eric Fiselierfbc9ff22016-11-05 00:30:27 +000029 bool last_benchmark_instance;
30 int repetitions;
31 double min_time;
Eric Fiselier133a7202017-04-18 07:17:20 +000032 size_t iterations;
Eric Fiselierfbc9ff22016-11-05 00:30:27 +000033 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
Eric Fiselier19039762018-01-18 04:23:01 +000040bool IsZero(double n);
Eric Fiselierfbc9ff22016-11-05 00:30:27 +000041
Eric Fiselier19039762018-01-18 04:23:01 +000042ConsoleReporter::OutputOptions GetOutputOptions(bool force_no_color = false);
Eric Fiselierfbc9ff22016-11-05 00:30:27 +000043
Eric Fiselierfbc9ff22016-11-05 00:30:27 +000044} // end namespace internal
45} // end namespace benchmark
46
47#endif // BENCHMARK_API_INTERNAL_H