From cc43bdd85f6425372623ebfee9cace98fd63e330 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Tue, 11 Jul 2023 13:48:49 +0200 Subject: c++,core: Added an error category get function --- src/core/error.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/core/error.cpp') diff --git a/src/core/error.cpp b/src/core/error.cpp index e777c84..52af76f 100644 --- a/src/core/error.cpp +++ b/src/core/error.cpp @@ -15,6 +15,17 @@ error::error(error &&error) , is_critical_{std::move(error.is_critical_)} , error_message_{std::move(error.error_message_)}{} +const std::string_view error::get_category() const { + auto& reg = impl::get_error_registry(); + + auto eov = reg.search_error_category(error_code_); + SAW_ASSERT(eov.is_value()){ + return "Error category not found. Report this error to the forstio maintainer"; + } + + return eov.get_value(); +} + const std::string_view error::get_message() const { return std::visit( [this](auto &&arg) -> const std::string_view { @@ -93,6 +104,14 @@ error_registry::error_registry(): } {} +error_or error_registry::search_category(const error::code& id) const { + if(infos_.size() >= id){ + return make_error(); + } + + return infos_.at(id).description; +} + error_or error_registry::search_id(const std::string_view& desc)const{ /** * Search the index in the vector -- cgit v1.2.3