82 lines · plain
1// -*- C++ -*-2//===----------------------------------------------------------------------===//3//4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9 10#ifndef _LIBCPP_MEMORY_RESOURCE11#define _LIBCPP_MEMORY_RESOURCE12 13/**14 memory_resource synopsis15 16// C++1717 18namespace std::pmr {19 20 class memory_resource;21 22 bool operator==(const memory_resource& a,23 const memory_resource& b) noexcept;24 bool operator!=(const memory_resource& a,25 const memory_resource& b) noexcept; // removed in C++2026 27 template <class Tp> class polymorphic_allocator;28 29 template <class T1, class T2>30 bool operator==(const polymorphic_allocator<T1>& a,31 const polymorphic_allocator<T2>& b) noexcept;32 template <class T1, class T2>33 bool operator!=(const polymorphic_allocator<T1>& a,34 const polymorphic_allocator<T2>& b) noexcept; // removed in C++2035 36 // Global memory resources37 memory_resource* set_default_resource(memory_resource* r) noexcept;38 memory_resource* get_default_resource() noexcept;39 memory_resource* new_delete_resource() noexcept;40 memory_resource* null_memory_resource() noexcept;41 42 // Pool resource classes43 struct pool_options;44 class synchronized_pool_resource;45 class unsynchronized_pool_resource;46 class monotonic_buffer_resource;47 48} // namespace std::pmr49 50 */51 52#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)53# include <__cxx03/__config>54#else55# include <__config>56 57# if _LIBCPP_STD_VER >= 1758# include <__memory_resource/memory_resource.h>59# include <__memory_resource/monotonic_buffer_resource.h>60# include <__memory_resource/polymorphic_allocator.h>61# include <__memory_resource/pool_options.h>62# include <__memory_resource/synchronized_pool_resource.h>63# include <__memory_resource/unsynchronized_pool_resource.h>64# endif65 66# include <version>67 68# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)69# pragma GCC system_header70# endif71 72# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER >= 17 && _LIBCPP_STD_VER <= 2073# include <mutex>74# endif75 76# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 2077# include <stdexcept>78# endif79#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)80 81#endif /* _LIBCPP_MEMORY_RESOURCE */82