From 56414078ea265056dd3032144279d2ccee60c4f4 Mon Sep 17 00:00:00 2001 From: Allison Vacanti Date: Tue, 16 Mar 2021 14:36:20 -0400 Subject: [PATCH] Added `state::get_XXXX_or_default(axis_name, default_value)` --- nvbench/state.cu | 36 ++++++++++++++++++++++++++++++++++++ nvbench/state.cuh | 9 +++++++++ testing/state.cu | 11 +++++++++++ 3 files changed, 56 insertions(+) diff --git a/nvbench/state.cu b/nvbench/state.cu index 28ece73..0f8cae0 100644 --- a/nvbench/state.cu +++ b/nvbench/state.cu @@ -60,16 +60,52 @@ nvbench::int64_t state::get_int64(const std::string &axis_name) const return m_axis_values.get_int64(axis_name); } +nvbench::int64_t +state::get_int64_or_default(const std::string &axis_name, + nvbench::int64_t default_value) const +try +{ + return this->get_int64(axis_name); +} +catch (...) +{ + return default_value; +} + nvbench::float64_t state::get_float64(const std::string &axis_name) const { return m_axis_values.get_float64(axis_name); } +nvbench::float64_t +state::get_float64_or_default(const std::string &axis_name, + nvbench::float64_t default_value) const +try +{ + return this->get_float64(axis_name); +} +catch (...) +{ + return default_value; +} + const std::string &state::get_string(const std::string &axis_name) const { return m_axis_values.get_string(axis_name); } +const std::string & +state::get_string_or_default(const std::string &axis_name, + const std::string &default_value) const +try +{ + return this->get_string(axis_name); +} +catch (...) +{ + return default_value; +} + summary &state::add_summary(std::string summary_name) { return m_summaries.emplace_back(std::move(summary_name)); diff --git a/nvbench/state.cuh b/nvbench/state.cuh index 6ff2742..c764950 100644 --- a/nvbench/state.cuh +++ b/nvbench/state.cuh @@ -77,12 +77,21 @@ struct state } [[nodiscard]] nvbench::int64_t get_int64(const std::string &axis_name) const; + [[nodiscard]] nvbench::int64_t + get_int64_or_default(const std::string &axis_name, + nvbench::int64_t default_value) const; [[nodiscard]] nvbench::float64_t get_float64(const std::string &axis_name) const; + [[nodiscard]] nvbench::float64_t + get_float64_or_default(const std::string &axis_name, + nvbench::float64_t default_value) const; [[nodiscard]] const std::string & get_string(const std::string &axis_name) const; + [[nodiscard]] const std::string & + get_string_or_default(const std::string &axis_name, + const std::string &default_value) const; void add_element_count(std::size_t elements, std::string column_name = {}); diff --git a/testing/state.cu b/testing/state.cu index 7465189..58e8dd1 100644 --- a/testing/state.cu +++ b/testing/state.cu @@ -98,8 +98,19 @@ void test_summaries() ASSERT(state.get_summary("Test Summary2").get_size() == 0); } +void test_defaults() +{ + dummy_bench bench; + state_tester state{bench}; + + ASSERT(state.get_int64_or_default("Foo", 42) == 42); + ASSERT(state.get_float64_or_default("Baz", 42.4) == 42.4); + ASSERT(state.get_string_or_default("Bar", "Kramble") == "Kramble"); +} + int main() { test_params(); test_summaries(); + test_defaults(); }