Line data 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 2120 : unchecked_array::
18 854 : ~unchecked_array()
19 : {
20 2977 : if(! data_ ||
21 857 : sp_.is_not_shared_and_deallocate_is_trivial())
22 1266 : return;
23 919 : for(unsigned long i = 0;
24 919 : i < size_; ++i)
25 65 : data_[i].~value();
26 2120 : }
27 :
28 : void
29 1263 : unchecked_array::
30 : relocate(value* dest) noexcept
31 : {
32 1263 : if(size_ > 0)
33 1263 : std::memcpy(
34 : static_cast<void*>(dest),
35 1263 : data_, size_ * sizeof(value));
36 1263 : data_ = nullptr;
37 1263 : }
38 :
39 : } // detail
40 : } // namespace json
41 : } // namespace boost
42 :
43 : #endif
|