brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · 4d72ec2 Raw
125 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_NEW11#define _LIBCPP_NEW12 13/*14    new synopsis15 16namespace std17{18 19class bad_alloc20    : public exception21{22public:23    bad_alloc() noexcept;24    bad_alloc(const bad_alloc&) noexcept;25    bad_alloc& operator=(const bad_alloc&) noexcept;26    virtual const char* what() const noexcept;27};28 29class bad_array_new_length : public bad_alloc // C++1430{31public:32    bad_array_new_length() noexcept;33};34 35enum class align_val_t : size_t {}; // C++1736 37struct destroying_delete_t { // C++2038  explicit destroying_delete_t() = default;39};40inline constexpr destroying_delete_t destroying_delete{}; // C++2041 42struct nothrow_t { explicit nothrow_t() = default; };43extern const nothrow_t nothrow;44typedef void (*new_handler)();45new_handler set_new_handler(new_handler new_p) noexcept;46new_handler get_new_handler() noexcept;47 48// 21.6.4, pointer optimization barrier49template <class T> [[nodiscard]] constexpr T* launder(T* p) noexcept;   // C++17, nodiscard since C++2050}  // std51 52void* operator new(std::size_t size);                                   // replaceable, nodiscard in C++2053void* operator new(std::size_t size, std::align_val_t alignment);       // replaceable, C++17, nodiscard in C++2054void* operator new(std::size_t size, const std::nothrow_t&) noexcept;   // replaceable, nodiscard in C++2055void* operator new(std::size_t size, std::align_val_t alignment,56                   const std::nothrow_t&) noexcept;                     // replaceable, C++17, nodiscard in C++2057void  operator delete(void* ptr) noexcept;                              // replaceable58void  operator delete(void* ptr, std::size_t size) noexcept;            // replaceable, C++1459void  operator delete(void* ptr, std::align_val_t alignment) noexcept;  // replaceable, C++1760void  operator delete(void* ptr, std::size_t size,61                      std::align_val_t alignment) noexcept;             // replaceable, C++1762void  operator delete(void* ptr, const std::nothrow_t&) noexcept;       // replaceable63void  operator delete(void* ptr, std:align_val_t alignment,64                      const std::nothrow_t&) noexcept;                  // replaceable, C++1765 66void* operator new[](std::size_t size);                                 // replaceable, nodiscard in C++2067void* operator new[](std::size_t size,68                     std::align_val_t alignment) noexcept;              // replaceable, C++17, nodiscard in C++2069void* operator new[](std::size_t size, const std::nothrow_t&) noexcept; // replaceable, nodiscard in C++2070void* operator new[](std::size_t size, std::align_val_t alignment,71                     const std::nothrow_t&) noexcept;                   // replaceable, C++17, nodiscard in C++2072void  operator delete[](void* ptr) noexcept;                            // replaceable73void  operator delete[](void* ptr, std::size_t size) noexcept;          // replaceable, C++1474void  operator delete[](void* ptr,75                        std::align_val_t alignment) noexcept;           // replaceable, C++1776void  operator delete[](void* ptr, std::size_t size,77                        std::align_val_t alignment) noexcept;           // replaceable, C++1778void  operator delete[](void* ptr, const std::nothrow_t&) noexcept;     // replaceable79void  operator delete[](void* ptr, std::align_val_t alignment,80                        const std::nothrow_t&) noexcept;                // replaceable, C++1781 82void* operator new  (std::size_t size, void* ptr) noexcept;             // nodiscard in C++20, constexpr since C++2683void* operator new[](std::size_t size, void* ptr) noexcept;             // nodiscard in C++20, constexpr since C++2684void  operator delete  (void* ptr, void*) noexcept;85void  operator delete[](void* ptr, void*) noexcept;86 87*/88 89#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)90#  include <__cxx03/new>91#else92#  include <__config>93#  include <__new/align_val_t.h>94#  include <__new/allocate.h>95#  include <__new/exceptions.h>96#  include <__new/global_new_delete.h>97#  include <__new/new_handler.h>98#  include <__new/nothrow_t.h>99#  include <__new/placement_new_delete.h>100 101#  if _LIBCPP_STD_VER >= 17102#    include <__new/interference_size.h>103#    include <__new/launder.h>104#  endif105 106#  if _LIBCPP_STD_VER >= 20107#    include <__new/destroying_delete_t.h>108#  endif109 110// feature-test macros111#  include <version>112 113#  if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)114#    pragma GCC system_header115#  endif116 117#  if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20118#    include <cstddef>119#    include <cstdlib>120#    include <type_traits>121#  endif122#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)123 124#endif // _LIBCPP_NEW125