1bdd1243dSDimitry Andric// -*- C++ -*- 2bdd1243dSDimitry Andric//===----------------------------------------------------------------------===// 3bdd1243dSDimitry Andric// 4bdd1243dSDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5bdd1243dSDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 6bdd1243dSDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7bdd1243dSDimitry Andric// 8bdd1243dSDimitry Andric//===----------------------------------------------------------------------===// 9bdd1243dSDimitry Andric 10bdd1243dSDimitry Andric#ifndef _LIBCPP_MEMORY_RESOURCE 11bdd1243dSDimitry Andric#define _LIBCPP_MEMORY_RESOURCE 12bdd1243dSDimitry Andric 13bdd1243dSDimitry Andric/** 14bdd1243dSDimitry Andric memory_resource synopsis 15bdd1243dSDimitry Andric 16bdd1243dSDimitry Andric// C++17 17bdd1243dSDimitry Andric 18bdd1243dSDimitry Andricnamespace std::pmr { 19bdd1243dSDimitry Andric 20bdd1243dSDimitry Andric class memory_resource; 21bdd1243dSDimitry Andric 22bdd1243dSDimitry Andric bool operator==(const memory_resource& a, 23bdd1243dSDimitry Andric const memory_resource& b) noexcept; 24bdd1243dSDimitry Andric bool operator!=(const memory_resource& a, 25*06c3fb27SDimitry Andric const memory_resource& b) noexcept; // removed in C++20 26bdd1243dSDimitry Andric 27bdd1243dSDimitry Andric template <class Tp> class polymorphic_allocator; 28bdd1243dSDimitry Andric 29bdd1243dSDimitry Andric template <class T1, class T2> 30bdd1243dSDimitry Andric bool operator==(const polymorphic_allocator<T1>& a, 31bdd1243dSDimitry Andric const polymorphic_allocator<T2>& b) noexcept; 32bdd1243dSDimitry Andric template <class T1, class T2> 33bdd1243dSDimitry Andric bool operator!=(const polymorphic_allocator<T1>& a, 34*06c3fb27SDimitry Andric const polymorphic_allocator<T2>& b) noexcept; // removed in C++20 35bdd1243dSDimitry Andric 36bdd1243dSDimitry Andric // Global memory resources 37bdd1243dSDimitry Andric memory_resource* set_default_resource(memory_resource* r) noexcept; 38bdd1243dSDimitry Andric memory_resource* get_default_resource() noexcept; 39bdd1243dSDimitry Andric memory_resource* new_delete_resource() noexcept; 40bdd1243dSDimitry Andric memory_resource* null_memory_resource() noexcept; 41bdd1243dSDimitry Andric 42bdd1243dSDimitry Andric // Pool resource classes 43bdd1243dSDimitry Andric struct pool_options; 44bdd1243dSDimitry Andric class synchronized_pool_resource; 45bdd1243dSDimitry Andric class unsynchronized_pool_resource; 46bdd1243dSDimitry Andric class monotonic_buffer_resource; 47bdd1243dSDimitry Andric 48bdd1243dSDimitry Andric} // namespace std::pmr 49bdd1243dSDimitry Andric 50bdd1243dSDimitry Andric */ 51bdd1243dSDimitry Andric 52bdd1243dSDimitry Andric#include <__config> 53bdd1243dSDimitry Andric#include <__memory_resource/memory_resource.h> 54bdd1243dSDimitry Andric#include <__memory_resource/monotonic_buffer_resource.h> 55bdd1243dSDimitry Andric#include <__memory_resource/polymorphic_allocator.h> 56bdd1243dSDimitry Andric#include <__memory_resource/pool_options.h> 57bdd1243dSDimitry Andric#include <__memory_resource/synchronized_pool_resource.h> 58bdd1243dSDimitry Andric#include <__memory_resource/unsynchronized_pool_resource.h> 59bdd1243dSDimitry Andric#include <version> 60bdd1243dSDimitry Andric 61bdd1243dSDimitry Andric#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 62bdd1243dSDimitry Andric# pragma GCC system_header 63bdd1243dSDimitry Andric#endif 64bdd1243dSDimitry Andric 65bdd1243dSDimitry Andric#endif /* _LIBCPP_MEMORY_RESOURCE */ 66