0.00% Lines (0/0) 0.00% Functions (0/0)
TLA Baseline Branch
Line Hits Code Line Hits 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  
DCB 43 - 5 operator()(  
44 - MutableBufferSequence const& bs) const noexcept  
45 - {  
DCB 46 - 5 auto const it = buffer_sequence_begin(bs);  
DCB 47 - 5 if(it != buffer_sequence_end(bs))  
DCB 48 - 4 return *it;  
DCB 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  
DCB 61 - 5 operator()(  
62 - ConstBufferSequence const& bs) const noexcept  
63 - {  
DCB 64 - 5 auto const it = buffer_sequence_begin(bs);  
DCB 65 - 5 if(it != buffer_sequence_end(bs))  
DCB 66 - 4 return *it;  
DCB 67 - 1 return {};  
68 - }  
69 - } const buffers_front{};  
70 -  
71 - } // capy  
72 - } // boost  
73 -  
74 - #endif