LCOV - code coverage report
Current view: top level - boost/buffers/buffer_size.hpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 100.0 % 7 7
Test Date: 2024-07-24 21:34:17 Functions: 100.0 % 16 16

            Line data    Source code
       1              : //
       2              : // Copyright (c) 2023 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/buffers
       8              : //
       9              : 
      10              : #ifndef BOOST_BUFFERS_BUFFER_SIZE_HPP
      11              : #define BOOST_BUFFERS_BUFFER_SIZE_HPP
      12              : 
      13              : #include <boost/buffers/detail/config.hpp>
      14              : #include <boost/buffers/const_buffer.hpp>
      15              : #include <boost/buffers/range.hpp>
      16              : #include <boost/buffers/tag_invoke.hpp>
      17              : #include <boost/buffers/type_traits.hpp>
      18              : 
      19              : namespace boost {
      20              : namespace buffers {
      21              : 
      22              : template<class Buffers>
      23              : std::size_t
      24       857995 : tag_invoke(
      25              :     size_tag const&,
      26              :     Buffers const& bs) noexcept
      27              : {
      28       857995 :     std::size_t n = 0;
      29      2139041 :     for(const_buffer b : range(bs))
      30      1281046 :         n += b.size();
      31       857995 :     return n;
      32              : }
      33              : 
      34              : namespace detail {
      35              : 
      36              : struct buffer_size_impl
      37              : {
      38              :     template<class Buffers>
      39              :     std::size_t
      40       857995 :     operator()(
      41              :         Buffers const& bs) const noexcept
      42              :     {
      43              :         // If you get a compile error here it
      44              :         // means that your type does not meet
      45              :         // the requirements.
      46              :         static_assert(
      47              :             is_const_buffer_sequence<Buffers>::value,
      48              :             "Type requirements not met.");
      49              : 
      50       857995 :         return tag_invoke(size_tag{}, bs);
      51              :     }
      52              : };
      53              : 
      54              : } // detail
      55              : 
      56              : /** Return the total octets in a buffer sequence
      57              : 
      58              :     @par Constraints
      59              :     @code
      60              :     is_const_buffer_sequence< ConstBufferSequence >::value == true
      61              :     @endcode
      62              : */
      63              : constexpr detail::buffer_size_impl buffer_size{};
      64              : 
      65              : } // buffers
      66              : } // boost
      67              : 
      68              : #endif
        

Generated by: LCOV version 2.1