Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/libcxx/include/__new/global_new_delete.h
213766 views
1
//===----------------------------------------------------------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef _LIBCPP___NEW_GLOBAL_NEW_DELETE_H
10
#define _LIBCPP___NEW_GLOBAL_NEW_DELETE_H
11
12
#include <__config>
13
#include <__cstddef/size_t.h>
14
#include <__new/align_val_t.h>
15
#include <__new/exceptions.h>
16
#include <__new/nothrow_t.h>
17
18
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
19
# pragma GCC system_header
20
#endif
21
22
#if defined(_LIBCPP_CXX03_LANG)
23
# define _THROW_BAD_ALLOC throw(std::bad_alloc)
24
#else
25
# define _THROW_BAD_ALLOC
26
#endif
27
28
#if defined(__cpp_sized_deallocation) && __cpp_sized_deallocation >= 201309L
29
# define _LIBCPP_HAS_SIZED_DEALLOCATION 1
30
#else
31
# define _LIBCPP_HAS_SIZED_DEALLOCATION 0
32
#endif
33
34
#if defined(_LIBCPP_ABI_VCRUNTIME)
35
# include <new.h>
36
#else
37
[[__nodiscard__]] _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz) _THROW_BAD_ALLOC;
38
[[__nodiscard__]] _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz, const std::nothrow_t&) _NOEXCEPT
39
_LIBCPP_NOALIAS;
40
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p) _NOEXCEPT;
41
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, const std::nothrow_t&) _NOEXCEPT;
42
# if _LIBCPP_HAS_SIZED_DEALLOCATION
43
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::size_t __sz) _NOEXCEPT;
44
# endif
45
46
[[__nodiscard__]] _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz) _THROW_BAD_ALLOC;
47
[[__nodiscard__]] _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz, const std::nothrow_t&) _NOEXCEPT
48
_LIBCPP_NOALIAS;
49
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p) _NOEXCEPT;
50
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, const std::nothrow_t&) _NOEXCEPT;
51
# if _LIBCPP_HAS_SIZED_DEALLOCATION
52
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::size_t __sz) _NOEXCEPT;
53
# endif
54
55
# if _LIBCPP_HAS_LIBRARY_ALIGNED_ALLOCATION
56
[[__nodiscard__]] _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz, std::align_val_t) _THROW_BAD_ALLOC;
57
[[__nodiscard__]] _LIBCPP_OVERRIDABLE_FUNC_VIS void*
58
operator new(std::size_t __sz, std::align_val_t, const std::nothrow_t&) _NOEXCEPT _LIBCPP_NOALIAS;
59
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::align_val_t) _NOEXCEPT;
60
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::align_val_t, const std::nothrow_t&) _NOEXCEPT;
61
# if _LIBCPP_HAS_SIZED_DEALLOCATION
62
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT;
63
# endif
64
65
[[__nodiscard__]] _LIBCPP_OVERRIDABLE_FUNC_VIS void*
66
operator new[](std::size_t __sz, std::align_val_t) _THROW_BAD_ALLOC;
67
[[__nodiscard__]] _LIBCPP_OVERRIDABLE_FUNC_VIS void*
68
operator new[](std::size_t __sz, std::align_val_t, const std::nothrow_t&) _NOEXCEPT _LIBCPP_NOALIAS;
69
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::align_val_t) _NOEXCEPT;
70
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::align_val_t, const std::nothrow_t&) _NOEXCEPT;
71
# if _LIBCPP_HAS_SIZED_DEALLOCATION
72
_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT;
73
# endif
74
# endif
75
#endif
76
77
#endif // _LIBCPP___NEW_GLOBAL_NEW_DELETE_H
78
79