GCC Code Coverage Report


Directory: libs/json/include/boost/json/
File: detail/object.hpp
Date: 2025-12-23 17:20:53
Exec Total Coverage
Lines: 13 13 100.0%
Functions: 4 4 100.0%
Branches: 0 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_OBJECT_HPP
11 #define BOOST_JSON_DETAIL_OBJECT_HPP
12
13 #include <boost/json/storage_ptr.hpp>
14 #include <boost/json/string_view.hpp>
15 #include <cstdlib>
16
17 namespace boost {
18 namespace json {
19
20 class object;
21 class value;
22 class key_value_pair;
23
24 namespace detail {
25
26 class unchecked_object
27 {
28 // each element is two values,
29 // first one is a string key,
30 // second one is the value.
31 value* data_;
32 std::size_t size_;
33 storage_ptr const& sp_;
34
35 public:
36 inline
37 ~unchecked_object();
38
39 34879 unchecked_object(
40 value* data,
41 std::size_t size, // # of kv-pairs
42 storage_ptr const& sp) noexcept
43 34879 : data_(data)
44 34879 , size_(size)
45 34879 , sp_(sp)
46 {
47 34879 }
48
49 unchecked_object(
50 unchecked_object&& other) noexcept
51 : data_(other.data_)
52 , size_(other.size_)
53 , sp_(other.sp_)
54 {
55 other.data_ = nullptr;
56 }
57
58 storage_ptr const&
59 34879 storage() const noexcept
60 {
61 34879 return sp_;
62 }
63
64 std::size_t
65 136330 size() const noexcept
66 {
67 136330 return size_;
68 }
69
70 value*
71 33791 release() noexcept
72 {
73 33791 auto const data = data_;
74 33791 data_ = nullptr;
75 33791 return data;
76 }
77 };
78
79 template<class CharRange>
80 std::pair<key_value_pair*, std::size_t>
81 find_in_object(
82 object const& obj,
83 CharRange key) noexcept;
84
85 extern template
86 BOOST_JSON_DECL
87 std::pair<key_value_pair*, std::size_t>
88 find_in_object<string_view>(
89 object const&,
90 string_view key) noexcept;
91
92 } // detail
93 } // namespace json
94 } // namespace boost
95
96 #endif
97