[libc++] Move pointer safety related utilities out of <memory>
Differential Revision: https://reviews.llvm.org/D100318
GitOrigin-RevId: 7f1963dc8e233fb28332b0e797372e63d5a9598e
diff --git a/include/memory b/include/memory
index f2af033..ad97733 100644
--- a/include/memory
+++ b/include/memory
@@ -683,6 +683,7 @@
#include <__memory/auto_ptr.h>
#include <__memory/base.h>
#include <__memory/compressed_pair.h>
+#include <__memory/pointer_safety.h>
#include <__memory/pointer_traits.h>
#include <__memory/raw_storage_iterator.h>
#include <__memory/shared_ptr.h>
@@ -828,64 +829,6 @@
{__process(__p, integral_constant<bool, is_trivially_destructible<_Tp>::value>());}
};
-//enum class
-#if defined(_LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE)
-# ifndef _LIBCPP_CXX03_LANG
-enum class pointer_safety : unsigned char {
- relaxed,
- preferred,
- strict
-};
-# endif
-#else
-struct _LIBCPP_TYPE_VIS pointer_safety
-{
- enum __lx
- {
- relaxed,
- preferred,
- strict
- };
-
- __lx __v_;
-
- _LIBCPP_INLINE_VISIBILITY
- pointer_safety() : __v_() {}
-
- _LIBCPP_INLINE_VISIBILITY
- pointer_safety(__lx __v) : __v_(__v) {}
- _LIBCPP_INLINE_VISIBILITY
- operator int() const {return __v_;}
-};
-#endif
-
-#if !defined(_LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE) && \
- defined(_LIBCPP_BUILDING_LIBRARY)
-_LIBCPP_FUNC_VIS pointer_safety get_pointer_safety() _NOEXCEPT;
-#else
-// This function is only offered in C++03 under ABI v1.
-# if !defined(_LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE) || !defined(_LIBCPP_CXX03_LANG)
-inline _LIBCPP_INLINE_VISIBILITY
-pointer_safety get_pointer_safety() _NOEXCEPT {
- return pointer_safety::relaxed;
-}
-# endif
-#endif
-
-
-_LIBCPP_FUNC_VIS void declare_reachable(void* __p);
-_LIBCPP_FUNC_VIS void declare_no_pointers(char* __p, size_t __n);
-_LIBCPP_FUNC_VIS void undeclare_no_pointers(char* __p, size_t __n);
-_LIBCPP_FUNC_VIS void* __undeclare_reachable(void* __p);
-
-template <class _Tp>
-inline _LIBCPP_INLINE_VISIBILITY
-_Tp*
-undeclare_reachable(_Tp* __p)
-{
- return static_cast<_Tp*>(__undeclare_reachable(__p));
-}
-
_LIBCPP_FUNC_VIS void* align(size_t __align, size_t __sz, void*& __ptr, size_t& __space);
// --- Helper for container swap --