1e564246ec
The patch touches these files: locale array deque new string utility vector __bit_reference __split_buffer locale_win32.h There is no intended functionality change and it is expected that reversing the position of the inline keyword with regard to the other keywords does not change the meaning of anything, least not for apple/Linux etc. It is intended to make libcxx more consistent with itself and to prevent the 1000 or so "inline.cpp(3) : warning C4141: 'inline' : used more than once" warnings that MS's cl.exe compiler emits without this patch, i.e. if inline is not the first keyword before a function name etc. Prefer "inline [other inline related keyword]" over "[other related keyword] inline". After this patch, libcxx should be consistent to this pattern. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@191987 91177308-0d34-0410-b5e6-96231b3b80d8
149 lines
4.5 KiB
C++
149 lines
4.5 KiB
C++
// -*- C++ -*-
|
|
//===----------------------------- new ------------------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
// Source Licenses. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef _LIBCPP_NEW
|
|
#define _LIBCPP_NEW
|
|
|
|
/*
|
|
new synopsis
|
|
|
|
namespace std
|
|
{
|
|
|
|
class bad_alloc
|
|
: public exception
|
|
{
|
|
public:
|
|
bad_alloc() noexcept;
|
|
bad_alloc(const bad_alloc&) noexcept;
|
|
bad_alloc& operator=(const bad_alloc&) noexcept;
|
|
virtual const char* what() const noexcept;
|
|
};
|
|
|
|
class bad_array_length : public bad_alloc // C++14
|
|
{
|
|
public:
|
|
bad_array_length() noexcept;
|
|
};
|
|
|
|
class bad_array_new_length : public bad_alloc
|
|
{
|
|
public:
|
|
bad_array_new_length() noexcept;
|
|
};
|
|
|
|
struct nothrow_t {};
|
|
extern const nothrow_t nothrow;
|
|
typedef void (*new_handler)();
|
|
new_handler set_new_handler(new_handler new_p) noexcept;
|
|
new_handler get_new_handler() noexcept;
|
|
|
|
} // std
|
|
|
|
void* operator new(std::size_t size); // replaceable
|
|
void* operator new(std::size_t size, const std::nothrow_t&) noexcept; // replaceable
|
|
void operator delete(void* ptr) noexcept; // replaceable
|
|
void operator delete(void* ptr, const std::nothrow_t&) noexcept; // replaceable
|
|
|
|
void* operator new[](std::size_t size); // replaceable
|
|
void* operator new[](std::size_t size, const std::nothrow_t&) noexcept; // replaceable
|
|
void operator delete[](void* ptr) noexcept; // replaceable
|
|
void operator delete[](void* ptr, const std::nothrow_t&) noexcept; // replaceable
|
|
|
|
void* operator new (std::size_t size, void* ptr) noexcept;
|
|
void* operator new[](std::size_t size, void* ptr) noexcept;
|
|
void operator delete (void* ptr, void*) noexcept;
|
|
void operator delete[](void* ptr, void*) noexcept;
|
|
|
|
*/
|
|
|
|
#include <__config>
|
|
#include <exception>
|
|
#include <cstddef>
|
|
|
|
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
|
#pragma GCC system_header
|
|
#endif
|
|
|
|
namespace std // purposefully not using versioning namespace
|
|
{
|
|
|
|
class _LIBCPP_EXCEPTION_ABI bad_alloc
|
|
: public exception
|
|
{
|
|
public:
|
|
bad_alloc() _NOEXCEPT;
|
|
virtual ~bad_alloc() _NOEXCEPT;
|
|
virtual const char* what() const _NOEXCEPT;
|
|
};
|
|
|
|
class _LIBCPP_EXCEPTION_ABI bad_array_new_length
|
|
: public bad_alloc
|
|
{
|
|
public:
|
|
bad_array_new_length() _NOEXCEPT;
|
|
virtual ~bad_array_new_length() _NOEXCEPT;
|
|
virtual const char* what() const _NOEXCEPT;
|
|
};
|
|
|
|
#if defined(_LIBCPP_BUILDING_NEW) || (_LIBCPP_STD_VER > 11)
|
|
class _LIBCPP_EXCEPTION_ABI bad_array_length
|
|
: public bad_alloc
|
|
{
|
|
public:
|
|
bad_array_length() _NOEXCEPT;
|
|
virtual ~bad_array_length() _NOEXCEPT;
|
|
virtual const char* what() const _NOEXCEPT;
|
|
};
|
|
#endif
|
|
|
|
_LIBCPP_FUNC_VIS void __throw_bad_alloc(); // not in C++ spec
|
|
|
|
struct _LIBCPP_TYPE_VIS nothrow_t {};
|
|
extern _LIBCPP_FUNC_VIS const nothrow_t nothrow;
|
|
typedef void (*new_handler)();
|
|
_LIBCPP_FUNC_VIS new_handler set_new_handler(new_handler) _NOEXCEPT;
|
|
_LIBCPP_FUNC_VIS new_handler get_new_handler() _NOEXCEPT;
|
|
|
|
} // std
|
|
|
|
#if defined(_WIN32) && !defined(cxx_EXPORTS)
|
|
# define _LIBCPP_NEW_DELETE_VIS _LIBCPP_FUNC_VIS_ONLY
|
|
#else
|
|
# define _LIBCPP_NEW_DELETE_VIS _LIBCPP_FUNC_VIS
|
|
#endif
|
|
|
|
_LIBCPP_NEW_DELETE_VIS void* operator new(std::size_t __sz)
|
|
#if !__has_feature(cxx_noexcept)
|
|
throw(std::bad_alloc)
|
|
#endif
|
|
;
|
|
_LIBCPP_NEW_DELETE_VIS void* operator new(std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
|
|
_LIBCPP_NEW_DELETE_VIS void operator delete(void* __p) _NOEXCEPT;
|
|
_LIBCPP_NEW_DELETE_VIS void operator delete(void* __p, const std::nothrow_t&) _NOEXCEPT;
|
|
|
|
_LIBCPP_NEW_DELETE_VIS void* operator new[](std::size_t __sz)
|
|
#if !__has_feature(cxx_noexcept)
|
|
throw(std::bad_alloc)
|
|
#endif
|
|
;
|
|
_LIBCPP_NEW_DELETE_VIS void* operator new[](std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
|
|
_LIBCPP_NEW_DELETE_VIS void operator delete[](void* __p) _NOEXCEPT;
|
|
_LIBCPP_NEW_DELETE_VIS void operator delete[](void* __p, const std::nothrow_t&) _NOEXCEPT;
|
|
|
|
#undef _LIBCPP_NEW_DELETE_VIS
|
|
|
|
inline _LIBCPP_INLINE_VISIBILITY void* operator new (std::size_t, void* __p) _NOEXCEPT {return __p;}
|
|
inline _LIBCPP_INLINE_VISIBILITY void* operator new[](std::size_t, void* __p) _NOEXCEPT {return __p;}
|
|
inline _LIBCPP_INLINE_VISIBILITY void operator delete (void*, void*) _NOEXCEPT {}
|
|
inline _LIBCPP_INLINE_VISIBILITY void operator delete[](void*, void*) _NOEXCEPT {}
|
|
|
|
#endif // _LIBCPP_NEW
|