Expose default help printer function (#1425)
* Pass the default help string into custom help printer
Improves #1329.
* Expose default help printer
diff --git a/include/benchmark/benchmark.h b/include/benchmark/benchmark.h
index 58a8a30..b25b001 100644
--- a/include/benchmark/benchmark.h
+++ b/include/benchmark/benchmark.h
@@ -291,8 +291,10 @@
namespace benchmark {
class BenchmarkReporter;
+BENCHMARK_EXPORT void PrintDefaultHelp();
+
BENCHMARK_EXPORT void Initialize(int* argc, char** argv,
- void (*HelperPrinterf)() = NULL);
+ void (*HelperPrinterf)() = PrintDefaultHelp);
BENCHMARK_EXPORT void Shutdown();
// Report to stdout all arguments in 'argv' as unrecognized except the first.
diff --git a/src/benchmark.cc b/src/benchmark.cc
index 254b95e..88167f6 100644
--- a/src/benchmark.cc
+++ b/src/benchmark.cc
@@ -567,28 +567,7 @@
void (*HelperPrintf)();
void PrintUsageAndExit() {
- if (HelperPrintf) {
- HelperPrintf();
- } else {
- fprintf(stdout,
- "benchmark"
- " [--benchmark_list_tests={true|false}]\n"
- " [--benchmark_filter=<regex>]\n"
- " [--benchmark_min_time=<min_time>]\n"
- " [--benchmark_min_warmup_time=<min_warmup_time>]\n"
- " [--benchmark_repetitions=<num_repetitions>]\n"
- " [--benchmark_enable_random_interleaving={true|false}]\n"
- " [--benchmark_report_aggregates_only={true|false}]\n"
- " [--benchmark_display_aggregates_only={true|false}]\n"
- " [--benchmark_format=<console|json|csv>]\n"
- " [--benchmark_out=<filename>]\n"
- " [--benchmark_out_format=<json|console|csv>]\n"
- " [--benchmark_color={auto|true|false}]\n"
- " [--benchmark_counters_tabular={true|false}]\n"
- " [--benchmark_context=<key>=<value>,...]\n"
- " [--benchmark_time_unit={ns|us|ms|s}]\n"
- " [--v=<verbosity>]\n");
- }
+ HelperPrintf();
exit(0);
}
@@ -670,6 +649,27 @@
} // end namespace internal
+void PrintDefaultHelp() {
+ fprintf(stdout,
+ "benchmark"
+ " [--benchmark_list_tests={true|false}]\n"
+ " [--benchmark_filter=<regex>]\n"
+ " [--benchmark_min_time=<min_time>]\n"
+ " [--benchmark_min_warmup_time=<min_warmup_time>]\n"
+ " [--benchmark_repetitions=<num_repetitions>]\n"
+ " [--benchmark_enable_random_interleaving={true|false}]\n"
+ " [--benchmark_report_aggregates_only={true|false}]\n"
+ " [--benchmark_display_aggregates_only={true|false}]\n"
+ " [--benchmark_format=<console|json|csv>]\n"
+ " [--benchmark_out=<filename>]\n"
+ " [--benchmark_out_format=<json|console|csv>]\n"
+ " [--benchmark_color={auto|true|false}]\n"
+ " [--benchmark_counters_tabular={true|false}]\n"
+ " [--benchmark_context=<key>=<value>,...]\n"
+ " [--benchmark_time_unit={ns|us|ms|s}]\n"
+ " [--v=<verbosity>]\n");
+}
+
void Initialize(int* argc, char** argv, void (*HelperPrintf)()) {
internal::ParseCommandLineFlags(argc, argv);
internal::LogLevel() = FLAGS_v;