100.00% Lines (20/20)
100.00% Functions (3/3)
| TLA | Baseline | Branch | ||||||
|---|---|---|---|---|---|---|---|---|
| Line | Hits | Code | Line | Hits | Code | |||
| 1 | // | 1 | // | |||||
| 2 | // Copyright (c) 2025 Vinnie Falco (vinnie.falco@gmail.com) | 2 | // Copyright (c) 2025 Vinnie Falco (vinnie.falco@gmail.com) | |||||
| 3 | // Copyright (c) 2026 Michael Vandeberg | 3 | // Copyright (c) 2026 Michael Vandeberg | |||||
| 4 | // | 4 | // | |||||
| 5 | // Distributed under the Boost Software License, Version 1.0. (See accompanying | 5 | // Distributed under the Boost Software License, Version 1.0. (See accompanying | |||||
| 6 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | 6 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |||||
| 7 | // | 7 | // | |||||
| 8 | // Official repository: https://github.com/cppalliance/capy | 8 | // Official repository: https://github.com/cppalliance/capy | |||||
| 9 | // | 9 | // | |||||
| 10 | 10 | |||||||
| 11 | #include <boost/capy/error.hpp> | 11 | #include <boost/capy/error.hpp> | |||||
| 12 | #include <boost/capy/cond.hpp> | 12 | #include <boost/capy/cond.hpp> | |||||
| 13 | 13 | |||||||
| 14 | namespace boost { | 14 | namespace boost { | |||||
| 15 | namespace capy { | 15 | namespace capy { | |||||
| 16 | 16 | |||||||
| 17 | namespace detail { | 17 | namespace detail { | |||||
| 18 | 18 | |||||||
| 19 | const char* | 19 | const char* | |||||
| HITCBC | 20 | 2 | error_cat_type:: | 20 | 2 | error_cat_type:: | ||
| 21 | name() const noexcept | 21 | name() const noexcept | |||||
| 22 | { | 22 | { | |||||
| HITCBC | 23 | 2 | return "boost.capy"; | 23 | 2 | return "boost.capy"; | ||
| 24 | } | 24 | } | |||||
| 25 | 25 | |||||||
| 26 | std::string | 26 | std::string | |||||
| HITCBC | 27 | 1037 | error_cat_type:: | 27 | 1037 | error_cat_type:: | ||
| 28 | message(int code) const | 28 | message(int code) const | |||||
| 29 | { | 29 | { | |||||
| HITCBC | 30 | 1037 | switch(static_cast<error>(code)) | 30 | 1037 | switch(static_cast<error>(code)) | ||
| 31 | { | 31 | { | |||||
| HITCBC | 32 | 6 | case error::eof: return "eof"; | 32 | 6 | case error::eof: return "eof"; | ||
| HITCBC | 33 | 3 | case error::canceled: return "operation canceled"; | 33 | 3 | case error::canceled: return "operation canceled"; | ||
| HITCBC | 34 | 3090 | case error::test_failure: return "test failure"; | 34 | 3090 | case error::test_failure: return "test failure"; | ||
| HITCBC | 35 | 3 | case error::stream_truncated: return "stream truncated"; | 35 | 3 | case error::stream_truncated: return "stream truncated"; | ||
| HITCBC | 36 | 3 | case error::not_found: return "not found"; | 36 | 3 | case error::not_found: return "not found"; | ||
| HITCBC | 37 | 3 | case error::timeout: return "timeout"; | 37 | 3 | case error::timeout: return "timeout"; | ||
| HITCBC | 38 | 1 | default: | 38 | 1 | default: | ||
| HITCBC | 39 | 2 | return "unknown"; | 39 | 2 | return "unknown"; | ||
| 40 | } | 40 | } | |||||
| 41 | } | 41 | } | |||||
| 42 | 42 | |||||||
| 43 | // Map each capy error code to its canonical portable condition. | 43 | // Map each capy error code to its canonical portable condition. | |||||
| 44 | // canceled and timeout have standard equivalents, so they map to the | 44 | // canceled and timeout have standard equivalents, so they map to the | |||||
| 45 | // generic conditions rather than capy's own cond enumerators; this is | 45 | // generic conditions rather than capy's own cond enumerators; this is | |||||
| 46 | // what lets, e.g., error::canceled compare equal to | 46 | // what lets, e.g., error::canceled compare equal to | |||||
| 47 | // std::errc::operation_canceled. | 47 | // std::errc::operation_canceled. | |||||
| 48 | std::error_condition | 48 | std::error_condition | |||||
| HITCBC | 49 | 547 | error_cat_type:: | 49 | 547 | error_cat_type:: | ||
| 50 | default_error_condition(int code) const noexcept | 50 | default_error_condition(int code) const noexcept | |||||
| 51 | { | 51 | { | |||||
| HITCBC | 52 | 547 | switch(static_cast<error>(code)) | 52 | 547 | switch(static_cast<error>(code)) | ||
| 53 | { | 53 | { | |||||
| HITCBC | 54 | 302 | case error::eof: return make_error_condition(cond::eof); | 54 | 302 | case error::eof: return make_error_condition(cond::eof); | ||
| HITCBC | 55 | 4 | case error::canceled: return std::make_error_condition(std::errc::operation_canceled); | 55 | 4 | case error::canceled: return std::make_error_condition(std::errc::operation_canceled); | ||
| HITCBC | 56 | 1 | case error::stream_truncated: return make_error_condition(cond::stream_truncated); | 56 | 1 | case error::stream_truncated: return make_error_condition(cond::stream_truncated); | ||
| HITCBC | 57 | 12 | case error::not_found: return make_error_condition(cond::not_found); | 57 | 12 | case error::not_found: return make_error_condition(cond::not_found); | ||
| HITCBC | 58 | 7 | case error::timeout: return std::make_error_condition(std::errc::timed_out); | 58 | 7 | case error::timeout: return std::make_error_condition(std::errc::timed_out); | ||
| HITCBC | 59 | 221 | default: return std::error_condition(code, *this); | 59 | 221 | default: return std::error_condition(code, *this); | ||
| 60 | } | 60 | } | |||||
| 61 | } | 61 | } | |||||
| 62 | 62 | |||||||
| 63 | //----------------------------------------------- | 63 | //----------------------------------------------- | |||||
| 64 | 64 | |||||||
| 65 | // msvc 14.0 has a bug that warns about inability | 65 | // msvc 14.0 has a bug that warns about inability | |||||
| 66 | // to use constexpr construction here, even though | 66 | // to use constexpr construction here, even though | |||||
| 67 | // there's no constexpr construction | 67 | // there's no constexpr construction | |||||
| 68 | #if BOOST_CAPY_WORKAROUND(_MSC_VER, <= 1900) | 68 | #if BOOST_CAPY_WORKAROUND(_MSC_VER, <= 1900) | |||||
| 69 | BOOST_CAPY_MSVC_WARNING_PUSH | 69 | BOOST_CAPY_MSVC_WARNING_PUSH | |||||
| 70 | BOOST_CAPY_MSVC_WARNING_DISABLE(4592) | 70 | BOOST_CAPY_MSVC_WARNING_DISABLE(4592) | |||||
| 71 | #endif | 71 | #endif | |||||
| 72 | 72 | |||||||
| 73 | #if defined(__cpp_constinit) && __cpp_constinit >= 201907L | 73 | #if defined(__cpp_constinit) && __cpp_constinit >= 201907L | |||||
| 74 | constinit error_cat_type error_cat; | 74 | constinit error_cat_type error_cat; | |||||
| 75 | #else | 75 | #else | |||||
| 76 | error_cat_type error_cat; | 76 | error_cat_type error_cat; | |||||
| 77 | #endif | 77 | #endif | |||||
| 78 | 78 | |||||||
| 79 | #if BOOST_CAPY_WORKAROUND(_MSC_VER, <= 1900) | 79 | #if BOOST_CAPY_WORKAROUND(_MSC_VER, <= 1900) | |||||
| 80 | BOOST_CAPY_MSVC_WARNING_POP | 80 | BOOST_CAPY_MSVC_WARNING_POP | |||||
| 81 | #endif | 81 | #endif | |||||
| 82 | 82 | |||||||
| 83 | } // detail | 83 | } // detail | |||||
| 84 | 84 | |||||||
| 85 | } // capy | 85 | } // capy | |||||
| 86 | } // boost | 86 | } // boost | |||||