LCOV - code coverage report
Current view: top level - capy/buffers - buffers_front.hpp (source / functions) Coverage Total Hit
Test: coverage_remapped.info Lines: 100.0 % 10 10
Test Date: 2026-10-30 18:56:53 Functions: 100.0 % 10 10

           TLA  Line data    Source code
       1                 : //
       2                 : // Copyright (c) 2023 Vinnie Falco (vinnie.falco@gmail.com)
       3                 : // Copyright (c) 2026 Steve Gerbino
       4                 : //
       5                 : // Distributed under the Boost Software License, Version 1.0. (See accompanying
       6                 : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       7                 : //
       8                 : // Official repository: https://github.com/cppalliance/capy
       9                 : //
      10                 : 
      11                 : #ifndef BOOST_CAPY_BUFFERS_BUFFERS_FRONT_HPP
      12                 : #define BOOST_CAPY_BUFFERS_BUFFERS_FRONT_HPP
      13                 : 
      14                 : #include <boost/capy/detail/config.hpp>
      15                 : #include <boost/capy/buffers.hpp>
      16                 : 
      17                 : namespace boost {
      18                 : namespace capy {
      19                 : 
      20                 : // MrDocs 0.8.0 flags this object as `buffers_front: variable is
      21                 : // undocumented`, as it does the other five buffer CPOs
      22                 : // (buffer_sequence_begin, buffer_sequence_end, buffer_size, buffers_empty,
      23                 : // buffer_copy). The finding is grandfathered in doc/lint/baseline.json.
      24                 : // Silencing it buys nothing: on the synthesised overload page MrDocs renders
      25                 : // neither the record-level docstring below nor one attached to the variable,
      26                 : // so any docstring that clears the warning is invisible to readers -- a
      27                 : // second, dead copy of this prose. Verified twice against the built site.
      28                 : /** Return the first buffer in a sequence.
      29                 : 
      30                 :     @functionobject
      31                 : */
      32                 : constexpr struct
      33                 : {
      34                 :     /** Return the first mutable buffer, or an empty buffer.
      35                 : 
      36                 :         @param bs The buffer sequence to inspect.
      37                 : 
      38                 :         @return The first buffer in `bs`, or an empty buffer if `bs`
      39                 :         contains no buffers.
      40                 :     */
      41                 :     template<MutableBufferSequence MutableBufferSequence>
      42                 :     mutable_buffer
      43 HIT           5 :     operator()(
      44                 :         MutableBufferSequence const& bs) const noexcept
      45                 :     {
      46               5 :         auto const it = buffer_sequence_begin(bs);
      47               5 :         if(it != buffer_sequence_end(bs))
      48               4 :             return *it;
      49               1 :         return {};
      50                 :     }
      51                 : 
      52                 :     /** Return the first const buffer, or an empty buffer.
      53                 : 
      54                 :         @param bs The buffer sequence to inspect.
      55                 : 
      56                 :         @return The first buffer in `bs`, or an empty buffer if `bs`
      57                 :         contains no buffers.
      58                 :     */
      59                 :     template<ConstBufferSequence ConstBufferSequence>
      60                 :     const_buffer
      61               5 :     operator()(
      62                 :         ConstBufferSequence const& bs) const noexcept
      63                 :     {
      64               5 :         auto const it = buffer_sequence_begin(bs);
      65               5 :         if(it != buffer_sequence_end(bs))
      66               4 :             return *it;
      67               1 :         return {};
      68                 :     }
      69                 : } const buffers_front{};
      70                 : 
      71                 : } // capy
      72                 : } // boost
      73                 : 
      74                 : #endif
        

Generated by: LCOV version 2.3