Const version of get criterion

This commit is contained in:
Georgy Evtushenko
2024-01-10 10:09:00 -08:00
parent dd54af3dc5
commit bd23bcac31
2 changed files with 14 additions and 7 deletions

View File

@@ -47,6 +47,7 @@ public:
*/
nvbench::stopping_criterion& add(std::unique_ptr<nvbench::stopping_criterion> criterion);
nvbench::stopping_criterion& get_criterion(const std::string& name);
const nvbench::stopping_criterion& get_criterion(const std::string& name) const;
nvbench::stopping_criterion::params_description get_params_description() const;
};

View File

@@ -36,10 +36,18 @@ criterion_manager &criterion_manager::get()
stopping_criterion& criterion_manager::get_criterion(const std::string& name)
{
criterion_manager& registry = criterion_manager::get();
auto iter = m_map.find(name);
if (iter == m_map.end())
{
NVBENCH_THROW(std::runtime_error, "No stopping criterion named \"{}\".", name);
}
return *iter->second.get();
}
auto iter = registry.m_map.find(name);
if (iter == registry.m_map.end())
const nvbench::stopping_criterion& criterion_manager::get_criterion(const std::string& name) const
{
auto iter = m_map.find(name);
if (iter == m_map.end())
{
NVBENCH_THROW(std::runtime_error, "No stopping criterion named \"{}\".", name);
}
@@ -48,10 +56,9 @@ stopping_criterion& criterion_manager::get_criterion(const std::string& name)
stopping_criterion &criterion_manager::add(std::unique_ptr<stopping_criterion> criterion)
{
criterion_manager& manager = criterion_manager::get();
const std::string name = criterion->get_name();
auto [it, success] = manager.m_map.emplace(name, std::move(criterion));
auto [it, success] = m_map.emplace(name, std::move(criterion));
if (!success)
{
@@ -66,8 +73,7 @@ nvbench::stopping_criterion::params_description criterion_manager::get_params_de
{
nvbench::stopping_criterion::params_description desc;
criterion_manager& manager = criterion_manager::get();
for (auto &[criterion_name, criterion] : manager.m_map)
for (auto &[criterion_name, criterion] : m_map)
{
for (auto param : criterion->get_params_description())
{