100.00% Lines (3/3) 100.00% Functions (1/1)
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   // 3   //
4   // Distributed under the Boost Software License, Version 1.0. (See accompanying 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) 5   // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6   // 6   //
7   // Official repository: https://github.com/cppalliance/capy 7   // Official repository: https://github.com/cppalliance/capy
8   // 8   //
9   9  
10   #ifndef BOOST_CAPY_ERROR_HPP 10   #ifndef BOOST_CAPY_ERROR_HPP
11   #define BOOST_CAPY_ERROR_HPP 11   #define BOOST_CAPY_ERROR_HPP
12   12  
13   #include <boost/capy/detail/config.hpp> 13   #include <boost/capy/detail/config.hpp>
14   #include <system_error> 14   #include <system_error>
15   15  
16   namespace boost { 16   namespace boost {
17   namespace capy { 17   namespace capy {
18   18  
19   /** Error codes for capy I/O operations. 19   /** Error codes for capy I/O operations.
20   20  
21   These codes are produced by capy algorithms and I/O operations. 21   These codes are produced by capy algorithms and I/O operations.
22   22  
23   @warning Callers must never compare received `error_code` values 23   @warning Callers must never compare received `error_code` values
24   directly against this enum. Always compare against the portable 24   directly against this enum. Always compare against the portable
25   @ref cond error conditions instead. These enum values are 25   @ref cond error conditions instead. These enum values are
26   implementation details subject to change. 26   implementation details subject to change.
27   27  
28   @see cond 28   @see cond
29   */ 29   */
30   enum class error 30   enum class error
31   { 31   {
32   /// End-of-stream reached. Compare with `cond::eof`. 32   /// End-of-stream reached. Compare with `cond::eof`.
33   eof = 1, 33   eof = 1,
34   34  
35   /// Operation was cancelled. Compare with `cond::canceled`. 35   /// Operation was cancelled. Compare with `cond::canceled`.
36   canceled, 36   canceled,
37   37  
38   /// Internal test assertion failed. 38   /// Internal test assertion failed.
39   test_failure, 39   test_failure,
40   40  
41   /// Peer closed connection without proper TLS shutdown. 41   /// Peer closed connection without proper TLS shutdown.
42   /// Compare with `cond::stream_truncated`. 42   /// Compare with `cond::stream_truncated`.
43   stream_truncated, 43   stream_truncated,
44   44  
45   /// Requested item was not found. Compare with `cond::not_found`. 45   /// Requested item was not found. Compare with `cond::not_found`.
46 - not_found 46 + not_found,
47 - };  
48   47  
49 - //----------------------------------------------- 48 + /// Operation timed out. Compare with `cond::timeout`.
  49 + timeout
  50 + };
50   51  
51   } // capy 52   } // capy
52   } // boost 53   } // boost
53   54  
54   namespace std { 55   namespace std {
55   template<> 56   template<>
56   struct is_error_code_enum< 57   struct is_error_code_enum<
57   ::boost::capy::error> 58   ::boost::capy::error>
58   : std::true_type {}; 59   : std::true_type {};
59   } // std 60   } // std
60   61  
61   namespace boost { 62   namespace boost {
62   namespace capy { 63   namespace capy {
63 - //-----------------------------------------------  
64 -  
65   64  
66   namespace detail { 65   namespace detail {
67   66  
68   struct BOOST_CAPY_SYMBOL_VISIBLE 67   struct BOOST_CAPY_SYMBOL_VISIBLE
69   error_cat_type 68   error_cat_type
70   : std::error_category 69   : std::error_category
71   { 70   {
72   BOOST_CAPY_DECL const char* name( 71   BOOST_CAPY_DECL const char* name(
73   ) const noexcept override; 72   ) const noexcept override;
74   BOOST_CAPY_DECL std::string message( 73   BOOST_CAPY_DECL std::string message(
75   int) const override; 74   int) const override;
76   constexpr error_cat_type() noexcept = default; 75   constexpr error_cat_type() noexcept = default;
77   }; 76   };
78   77  
79   BOOST_CAPY_DECL extern error_cat_type error_cat; 78   BOOST_CAPY_DECL extern error_cat_type error_cat;
80   79  
81   } // detail 80   } // detail
82   81  
83 - //----------------------------------------------- 82 + /// Create an error_code from an error value.
84 -  
85   inline 83   inline
86   std::error_code 84   std::error_code
HITCBC 87   2195 make_error_code( 85   2255 make_error_code(
88   error ev) noexcept 86   error ev) noexcept
89   { 87   {
HITCBC 90   2195 return std::error_code{ 88   2255 return std::error_code{
91   static_cast<std::underlying_type< 89   static_cast<std::underlying_type<
92   error>::type>(ev), 90   error>::type>(ev),
HITCBC 93   2195 detail::error_cat}; 91   2255 detail::error_cat};
94   } 92   }
95   93  
96   } // capy 94   } // capy
97   } // boost 95   } // boost
98   96  
99   #endif 97   #endif