GCC Code Coverage Report


Directory: libs/http_proto/
File: src/detail/array_of_const_buffers.cpp
Date: 2025-09-21 18:08:15
Exec Total Coverage
Lines: 34 34 100.0%
Functions: 5 5 100.0%
Branches: 8 10 80.0%

Line Branch Exec Source
1 //
2 // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
3 // Copyright (c) 2025 Mohammad Nejati
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/http_proto
9 //
10
11 #include "src/detail/array_of_const_buffers.hpp"
12
13 #include <boost/http_proto/detail/except.hpp>
14
15 #include <boost/buffers/slice.hpp>
16
17 namespace boost {
18 namespace http_proto {
19 namespace detail {
20
21 83 array_of_const_buffers::
22 array_of_const_buffers(
23 value_type* p,
24 83 std::uint16_t capacity) noexcept
25 83 : base_(p)
26 83 , cap_(capacity)
27 83 , pos_(0)
28 83 , size_(0)
29 {
30 83 }
31
32 void
33 3789 array_of_const_buffers::
34 consume(std::size_t n)
35 {
36
2/2
✓ Branch 0 taken 3888 times.
✓ Branch 1 taken 1954 times.
5842 while(size_ > 0)
37 {
38 3888 auto* p = base_ + pos_;
39
2/2
✓ Branch 1 taken 1835 times.
✓ Branch 2 taken 2053 times.
3888 if(n < p->size())
40 {
41 1835 buffers::trim_front(*p, n);
42 1835 return;
43 }
44 2053 n -= p->size();
45 2053 ++pos_;
46 2053 --size_;
47 }
48 }
49
50 void
51 1956 array_of_const_buffers::
52 reset(std::uint16_t n) noexcept
53 {
54
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1956 times.
1956 BOOST_ASSERT(n <= cap_);
55 1956 pos_ = 0;
56 1956 size_ = n;
57 1956 }
58
59 void
60 4 array_of_const_buffers::
61 slide_to_front() noexcept
62 {
63 4 auto* p = base_ + pos_; // begin
64 4 auto* e = p + size_; // end
65 4 auto* d = base_; // dest
66
2/2
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 4 times.
20 while(p < e)
67 16 *d++ = *p++;
68 4 pos_ = 0;
69 4 }
70
71 void
72 2080 array_of_const_buffers::
73 append(value_type buf) noexcept
74 {
75
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2080 times.
2080 BOOST_ASSERT(size_ < cap_);
76 2080 base_[pos_ + size_] = buf;
77 2080 ++size_;
78 2080 }
79
80 } // detail
81 } // http_proto
82 } // boost
83