GCC Code Coverage Report


Directory: libs/json/include/boost/json/
File: detail/impl/stack.ipp
Date: 2025-12-23 17:22:01
Exec Total Coverage
Lines: 23 23 100.0%
Functions: 3 3 100.0%
Branches: 9 10 90.0%

Line Branch Exec Source
1 //
2 // Copyright (c) 2019 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/boostorg/json
8 //
9
10 #ifndef BOOST_JSON_DETAIL_IMPL_STACK_IPP
11 #define BOOST_JSON_DETAIL_IMPL_STACK_IPP
12
13 #include <boost/json/detail/stack.hpp>
14
15 namespace boost {
16 namespace json {
17 namespace detail {
18
19 2185382 stack::
20 ~stack()
21 {
22
2/2
✓ Branch 0 taken 117701 times.
✓ Branch 1 taken 2067681 times.
2185382 if(base_ != buf_)
23 117701 sp_->deallocate(
24 117701 base_, cap_);
25 2185382 }
26
27 18855 stack::
28 stack(
29 storage_ptr sp,
30 unsigned char* buf,
31 18855 std::size_t buf_size) noexcept
32 18855 : sp_(std::move(sp))
33 18855 , cap_(buf_size)
34 18855 , base_(buf)
35 18855 , buf_(buf)
36 {
37 18855 }
38
39 void
40 213127 stack::
41 reserve(std::size_t n)
42 {
43
2/2
✓ Branch 0 taken 89423 times.
✓ Branch 1 taken 123704 times.
213127 if(cap_ >= n)
44 89423 return;
45 auto const base = static_cast<
46 123704 unsigned char*>(sp_->allocate(n));
47
2/2
✓ Branch 0 taken 6001 times.
✓ Branch 1 taken 117701 times.
123702 if(base_)
48 {
49
2/2
✓ Branch 0 taken 5314 times.
✓ Branch 1 taken 687 times.
6001 if(size_ > 0)
50 5314 std::memcpy(base, base_, size_);
51
1/2
✓ Branch 0 taken 6001 times.
✗ Branch 1 not taken.
6001 if(base_ != buf_)
52 6001 sp_->deallocate(base_, cap_);
53 }
54 123702 base_ = base;
55 123702 cap_ = n;
56 }
57
58 } // detail
59 } // namespace json
60 } // namespace boost
61
62 #endif
63