//
// Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
// Official repository: https://github.com/boostorg/json
//

#ifndef BOOST_JSON_MEMORY_RESOURCE_HPP
#define BOOST_JSON_MEMORY_RESOURCE_HPP

#include <boost/json/detail/config.hpp>

#include <boost/container/pmr/memory_resource.hpp>
#include <boost/container/pmr/polymorphic_allocator.hpp>
#include <boost/json/is_deallocate_trivial.hpp>

namespace boost {
namespace json {

/** The type of memory resource used by the library.

    @note This alias is deprecated in favor of
    `boost::container::pmr::memory_resource`. It is included for backwards
    compatibility and shouldn't be used in new code. It will be removed
    completely in version 1.87.0.
*/
typedef boost::container::pmr::memory_resource
    BOOST_JSON_DEPRECATED("Use boost::container::pmr::memory_resource instead")
    memory_resource;

/** The type of polymorphic allocator used by the library.

    @note This alias is deprecated in favor of
    `boost::container::pmr::polymorphic_allocator`. It is included for
    backwards compatibility and shouldn't be used in new code. It will be
    removed completely in version 1.87.0.
*/
template<class T>
using
    polymorphic_allocator
#ifndef BOOST_MSVC
    BOOST_JSON_DEPRECATED("Use boost::container::pmr::polymorphic_allocator instead")
#endif
    = boost::container::pmr::polymorphic_allocator<T>;

} // namespace json
} // namespace boost

#endif
