LCOV - code coverage report
Current view: top level - boost/capy - cond.hpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 100.0 % 3 3
Test Date: 2026-01-23 22:12:31 Functions: 100.0 % 1 1

            Line data    Source code
       1              : //
       2              : // Copyright (c) 2025 Vinnie Falco (vinnie.falco@gmail.com)
       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/capy
       8              : //
       9              : 
      10              : #ifndef BOOST_CAPY_COND_HPP
      11              : #define BOOST_CAPY_COND_HPP
      12              : 
      13              : #include <boost/capy/detail/config.hpp>
      14              : #include <boost/system/error_category.hpp>
      15              : #include <boost/system/is_error_condition_enum.hpp>
      16              : 
      17              : namespace boost {
      18              : namespace capy {
      19              : 
      20              : /** Portable error conditions.
      21              : 
      22              :     Use these conditions for portable error comparisons:
      23              : 
      24              :   - Return `error::eof` when originating an eof error.
      25              :       Check `ec == cond::eof` to portably test for eof.
      26              : 
      27              :   - Return the platform canceled error when originating canceled.
      28              :       Check `ec == cond::canceled` to portably test for cancellation.
      29              : 
      30              :   - Return `error::stream_truncated` when peer closes without TLS shutdown.
      31              :       Check `ec == cond::stream_truncated` to portably test for truncation.
      32              : */
      33              : enum class cond
      34              : {
      35              :     eof = 1,
      36              :     canceled = 2,
      37              :     stream_truncated = 3
      38              : };
      39              : 
      40              : //-----------------------------------------------
      41              : 
      42              : } // capy
      43              : 
      44              : namespace system {
      45              : template<>
      46              : struct is_error_condition_enum<
      47              :     ::boost::capy::cond>
      48              : {
      49              :     static bool const value = true;
      50              : };
      51              : } // system
      52              : 
      53              : namespace capy {
      54              : 
      55              : //-----------------------------------------------
      56              : 
      57              : namespace detail {
      58              : 
      59              : struct BOOST_SYMBOL_VISIBLE
      60              :     cond_cat_type
      61              :     : system::error_category
      62              : {
      63              :     BOOST_CAPY_DECL const char* name(
      64              :         ) const noexcept override;
      65              :     BOOST_CAPY_DECL std::string message(
      66              :         int) const override;
      67              :     BOOST_CAPY_DECL char const* message(
      68              :         int, char*, std::size_t
      69              :             ) const noexcept override;
      70              :     BOOST_CAPY_DECL bool equivalent(
      71              :         system::error_code const& ec,
      72              :         int condition) const noexcept override;
      73              :     BOOST_SYSTEM_CONSTEXPR cond_cat_type()
      74              :         : error_category(0x2f7a9b3c4e8d1a05)
      75              :     {
      76              :     }
      77              : };
      78              : 
      79              : BOOST_CAPY_DECL extern cond_cat_type cond_cat;
      80              : 
      81              : } // detail
      82              : 
      83              : //-----------------------------------------------
      84              : 
      85              : inline
      86              : BOOST_SYSTEM_CONSTEXPR
      87              : system::error_condition
      88           11 : make_error_condition(
      89              :     cond ev) noexcept
      90              : {
      91           11 :     return system::error_condition{
      92              :         static_cast<std::underlying_type<
      93              :             cond>::type>(ev),
      94           11 :         detail::cond_cat};
      95              : }
      96              : 
      97              : } // capy
      98              : } // boost
      99              : 
     100              : #endif
        

Generated by: LCOV version 2.3