100.00% Lines (2/2) 100.00% Functions (1/1)
TLA Baseline Branch
Line Hits Code Line Hits Code
  1 + //
  2 + // Copyright (c) 2026 Michael Vandeberg
  3 + //
  4 + // Distributed under the Boost Software License, Version 1.0. (See accompanying
  5 + // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6 + //
  7 + // Official repository: https://github.com/cppalliance/corosio
  8 + //
  9 +
  10 + #ifndef BOOST_COROSIO_ERROR_HPP
  11 + #define BOOST_COROSIO_ERROR_HPP
  12 +
  13 + #include <boost/corosio/detail/config.hpp>
  14 +
  15 + #include <string>
  16 + #include <system_error>
  17 + #include <type_traits>
  18 +
  19 + namespace boost::corosio {
  20 +
  21 + /** Identifies failures corosio detects itself.
  22 +
  23 + Codes the operating system reports keep their system category.
  24 + */
  25 + enum class error
  26 + {
  27 + /// The target object already holds an open handle.
  28 + already_open = 1
  29 + };
  30 +
  31 + } // namespace boost::corosio
  32 +
  33 + namespace std {
  34 + template<>
  35 + struct is_error_code_enum<::boost::corosio::error> : std::true_type
  36 + {};
  37 + } // namespace std
  38 +
  39 + namespace boost::corosio {
  40 + namespace detail {
  41 +
  42 + struct BOOST_COROSIO_SYMBOL_VISIBLE error_cat_type : std::error_category
  43 + {
  44 + BOOST_COROSIO_DECL char const* name() const noexcept override;
  45 + BOOST_COROSIO_DECL std::string message(int) const override;
  46 + constexpr error_cat_type() noexcept = default;
  47 + };
  48 +
  49 + BOOST_COROSIO_DECL extern error_cat_type error_cat;
  50 +
  51 + } // namespace detail
  52 +
  53 + /** Create an `std::error_code` from a corosio error value.
  54 +
  55 + @param ev The error value.
  56 + @return An `std::error_code` in corosio's category.
  57 + */
  58 + inline std::error_code
HITGNC   59 + 120 make_error_code(error ev) noexcept
  60 + {
HITGNC   61 + 120 return std::error_code{static_cast<int>(ev), detail::error_cat};
  62 + }
  63 +
  64 + } // namespace boost::corosio
  65 +
  66 + #endif