LCOV - code coverage report
Current view: top level - libs/capy/src - cond.cpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 69.2 % 26 18
Test Date: 2026-01-30 23:43:15 Functions: 100.0 % 3 3

            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              : #include <boost/capy/cond.hpp>
      11              : #include <boost/capy/error.hpp>
      12              : #include <system_error>
      13              : 
      14              : namespace boost {
      15              : namespace capy {
      16              : 
      17              : namespace detail {
      18              : 
      19              : const char*
      20            1 : cond_cat_type::
      21              : name() const noexcept
      22              : {
      23            1 :     return "boost.capy";
      24              : }
      25              : 
      26              : std::string
      27            3 : cond_cat_type::
      28              : message(int code) const
      29              : {
      30            3 :     switch(static_cast<cond>(code))
      31              :     {
      32            3 :     case cond::eof: return "end of file";
      33            3 :     case cond::canceled: return "operation canceled";
      34            0 :     case cond::stream_truncated: return "stream truncated";
      35            3 :     case cond::not_found: return "not found";
      36            0 :     default:
      37            0 :         return "unknown";
      38              :     }
      39              : }
      40              : 
      41              : bool
      42         1006 : cond_cat_type::
      43              : equivalent(
      44              :     std::error_code const& ec,
      45              :     int condition) const noexcept
      46              : {
      47         1006 :     switch(static_cast<cond>(condition))
      48              :     {
      49          987 :     case cond::eof:
      50          987 :         return ec == capy::error::eof;
      51              : 
      52            5 :     case cond::canceled:
      53            5 :         if(ec == capy::error::canceled)
      54            0 :             return true;
      55            5 :         if(ec == std::errc::operation_canceled)
      56            2 :             return true;
      57            3 :         return false;
      58              : 
      59            0 :     case cond::stream_truncated:
      60            0 :         return ec == capy::error::stream_truncated;
      61              : 
      62           14 :     case cond::not_found:
      63           14 :         return ec == capy::error::not_found;
      64              : 
      65            0 :     default:
      66            0 :         return false;
      67              :     }
      68              : }
      69              : 
      70              : //-----------------------------------------------
      71              : 
      72              : // msvc 14.0 has a bug that warns about inability
      73              : // to use constexpr construction here, even though
      74              : // there's no constexpr construction
      75              : #if defined(_MSC_VER) && _MSC_VER <= 1900
      76              : # pragma warning( push )
      77              : # pragma warning( disable : 4592 )
      78              : #endif
      79              : 
      80              : #if defined(__cpp_constinit) && __cpp_constinit >= 201907L
      81              : constinit cond_cat_type cond_cat;
      82              : #else
      83              : cond_cat_type cond_cat;
      84              : #endif
      85              : 
      86              : #if defined(_MSC_VER) && _MSC_VER <= 1900
      87              : # pragma warning( pop )
      88              : #endif
      89              : 
      90              : } // detail
      91              : 
      92              : } // capy
      93              : } // boost
        

Generated by: LCOV version 2.3