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

            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_CONST_BUFFER_PAIR_HPP
      11              : #define BOOST_BUFFERS_CONST_BUFFER_PAIR_HPP
      12              : 
      13              : #include <boost/buffers/detail/config.hpp>
      14              : #include <boost/buffers/const_buffer.hpp>
      15              : #include <boost/buffers/mutable_buffer_pair.hpp>
      16              : #include <boost/assert.hpp>
      17              : 
      18              : namespace boost {
      19              : namespace buffers {
      20              : 
      21              : /** A constant buffer pair
      22              : */
      23              : class const_buffer_pair
      24              : {
      25              : public:
      26              :     using value_type = const_buffer;
      27              : 
      28              :     using const_iterator = value_type const*;
      29              : 
      30              :     /** Constructor.
      31              :     */
      32              :     const_buffer_pair() = default;
      33              : 
      34              :     /** Constructor.
      35              :     */
      36              :     const_buffer_pair(
      37              :         const_buffer_pair const&) = default;
      38              : 
      39              :     /** Constructor.
      40              :     */
      41       286606 :     const_buffer_pair(
      42              :         const_buffer const& b0,
      43              :         const_buffer const& b1) noexcept
      44       286606 :         : b_{ b0, b1 }
      45              :     {
      46       286606 :     }
      47              : 
      48              :     /** Constructor.
      49              :     */
      50           16 :     const_buffer_pair(
      51              :         mutable_buffer_pair const& bs) noexcept
      52           16 :         : b_{ bs.begin()[0], bs.begin()[1] }
      53              :     {
      54           16 :     }
      55              : 
      56              :     /** Assignment.
      57              :     */
      58              :     const_buffer_pair& operator=(
      59              :         const_buffer_pair const&) = default;
      60              : 
      61              :     /** Assignment.
      62              :     */
      63           16 :     const_buffer_pair& operator=(
      64              :         mutable_buffer_pair const& other) noexcept
      65              :     {
      66           16 :         b_[0] = other.begin()[0];
      67           16 :         b_[1] = other.begin()[1];
      68           16 :         return *this;
      69              :     }
      70              : 
      71              :     const_buffer const&
      72           64 :     operator[](unsigned i) const noexcept
      73              :     {
      74           64 :         BOOST_ASSERT(i < 2);
      75           64 :         return b_[i];
      76              :     }
      77              : 
      78              :     const_buffer&
      79           64 :     operator[](unsigned i) noexcept
      80              :     {
      81           64 :         BOOST_ASSERT(i < 2);
      82           64 :         return b_[i];
      83              :     }
      84              : 
      85              :     const_iterator
      86       774271 :     begin() const noexcept
      87              :     {
      88       774271 :         return b_;
      89              :     }
      90              : 
      91              :     const_iterator
      92       774270 :     end() const noexcept
      93              :     {
      94       774270 :         return b_ + 2;
      95              :     }
      96              : 
      97              :     friend
      98              :     const_buffer_pair
      99       139808 :     tag_invoke(
     100              :         prefix_tag const&,
     101              :         const_buffer_pair const& b,
     102              :         std::size_t n) noexcept
     103              :     {
     104       139808 :         return b.prefix_impl(n);
     105              :     }
     106              : 
     107              :     friend
     108              :     const_buffer_pair
     109       139808 :     tag_invoke(
     110              :         suffix_tag const&,
     111              :         const_buffer_pair const& b,
     112              :         std::size_t n) noexcept
     113              :     {
     114       139808 :         return b.suffix_impl(n);
     115              :     }
     116              : 
     117              : private:
     118              :     BOOST_BUFFERS_DECL
     119              :     const_buffer_pair
     120              :     prefix_impl(
     121              :         std::size_t n) const noexcept;
     122              : 
     123              :     BOOST_BUFFERS_DECL
     124              :     const_buffer_pair
     125              :     suffix_impl(
     126              :         std::size_t n) const noexcept;
     127              : 
     128              :     const_buffer b_[2];
     129              : };
     130              : 
     131              : } // buffers
     132              : } // boost
     133              : 
     134              : #endif
        

Generated by: LCOV version 2.1