xref: /freebsd/contrib/llvm-project/libcxx/include/memory_resource (revision 06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e)
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