detail/impl/array.hpp

100.0% Lines (15/15) 100.0% List of functions (2/2)
f(x) Functions (2)
Line TLA Hits Source Code
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_ARRAY_HPP
11 #define BOOST_JSON_DETAIL_IMPL_ARRAY_HPP
12
13 namespace boost {
14 namespace json {
15 namespace detail {
16
17 2120x unchecked_array::
18 854x ~unchecked_array()
19 {
20 2977x if(! data_ ||
21 857x sp_.is_not_shared_and_deallocate_is_trivial())
22 1266x return;
23 919x for(unsigned long i = 0;
24 919x i < size_; ++i)
25 65x data_[i].~value();
26 2120x }
27
28 void
29 1263x unchecked_array::
30 relocate(value* dest) noexcept
31 {
32 1263x if(size_ > 0)
33 1263x std::memcpy(
34 static_cast<void*>(dest),
35 1263x data_, size_ * sizeof(value));
36 1263x data_ = nullptr;
37 1263x }
38
39 } // detail
40 } // namespace json
41 } // namespace boost
42
43 #endif
44