mirror of
https://github.com/pybind/pybind11.git
synced 2026-03-14 20:27:47 +00:00
Collect all #define PYBIND11_HAS_... in pybind11/detail/common.h (#5647)
This commit is contained in:
committed by
GitHub
parent
002c05b17e
commit
c125cc789c
@@ -50,6 +50,21 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
// These PYBIND11_HAS_... macros are consolidated in pybind11/detail/common.h
|
||||
// to simplify backward compatibility handling for users (e.g., via #ifdef checks):
|
||||
#define PYBIND11_HAS_TYPE_CASTER_STD_FUNCTION_SPECIALIZATIONS 1
|
||||
#define PYBIND11_HAS_INTERNALS_WITH_SMART_HOLDER_SUPPORT 1
|
||||
#define PYBIND11_HAS_CPP_CONDUIT 1
|
||||
#define PYBIND11_HAS_NATIVE_ENUM 1
|
||||
|
||||
#if defined(PYBIND11_CPP17) && defined(__has_include)
|
||||
# if __has_include(<filesystem>)
|
||||
# define PYBIND11_HAS_FILESYSTEM 1
|
||||
# elif __has_include(<experimental/filesystem>)
|
||||
# define PYBIND11_HAS_EXPERIMENTAL_FILESYSTEM 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(__cpp_lib_launder) && !(defined(_MSC_VER) && (_MSC_VER < 1914))
|
||||
# define PYBIND11_STD_LAUNDER std::launder
|
||||
# define PYBIND11_HAS_STD_LAUNDER 1
|
||||
@@ -168,14 +183,9 @@
|
||||
# define PYBIND11_HAS_VARIANT 1
|
||||
#endif
|
||||
|
||||
#if defined(PYBIND11_CPP17)
|
||||
# if defined(__has_include)
|
||||
# if __has_include(<string_view>)
|
||||
# define PYBIND11_HAS_STRING_VIEW
|
||||
# endif
|
||||
# elif defined(_MSC_VER)
|
||||
# define PYBIND11_HAS_STRING_VIEW
|
||||
# endif
|
||||
#if defined(PYBIND11_CPP17) \
|
||||
&& ((defined(__has_include) && __has_include(<string_view>)) || defined(_MSC_VER))
|
||||
# define PYBIND11_HAS_STRING_VIEW 1
|
||||
#endif
|
||||
|
||||
#if (defined(PYPY_VERSION) || defined(GRAALVM_PYTHON)) && !defined(PYBIND11_SIMPLE_GIL_MANAGEMENT)
|
||||
@@ -213,7 +223,7 @@
|
||||
|
||||
// Must be after including <version> or one of the other headers specified by the standard
|
||||
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
|
||||
# define PYBIND11_HAS_U8STRING
|
||||
# define PYBIND11_HAS_U8STRING 1
|
||||
#endif
|
||||
|
||||
// See description of PR #4246:
|
||||
|
||||
@@ -71,7 +71,5 @@ inline void *try_raw_pointer_ephemeral_from_cpp_conduit(handle src,
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
#define PYBIND11_HAS_CPP_CONDUIT 1
|
||||
|
||||
PYBIND11_NAMESPACE_END(detail)
|
||||
PYBIND11_NAMESPACE_END(PYBIND11_NAMESPACE)
|
||||
|
||||
@@ -206,9 +206,6 @@ struct internals {
|
||||
}
|
||||
};
|
||||
|
||||
// For backwards compatibility (i.e. #ifdef guards):
|
||||
#define PYBIND11_HAS_INTERNALS_WITH_SMART_HOLDER_SUPPORT
|
||||
|
||||
enum class holder_enum_t : uint8_t {
|
||||
undefined,
|
||||
std_unique_ptr, // Default, lacking interop with std::shared_ptr.
|
||||
|
||||
@@ -4,8 +4,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#define PYBIND11_HAS_NATIVE_ENUM
|
||||
|
||||
#include "../pytypes.h"
|
||||
#include "common.h"
|
||||
#include "internals.h"
|
||||
|
||||
@@ -9,8 +9,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#define PYBIND11_HAS_TYPE_CASTER_STD_FUNCTION_SPECIALIZATIONS
|
||||
|
||||
#include "pybind11.h"
|
||||
|
||||
#include <functional>
|
||||
|
||||
@@ -12,22 +12,12 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
#ifdef __has_include
|
||||
# if defined(PYBIND11_CPP17)
|
||||
# if __has_include(<filesystem>)
|
||||
# include <filesystem>
|
||||
# define PYBIND11_HAS_FILESYSTEM 1
|
||||
# elif __has_include(<experimental/filesystem>)
|
||||
# include <experimental/filesystem>
|
||||
# define PYBIND11_HAS_EXPERIMENTAL_FILESYSTEM 1
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined(PYBIND11_HAS_FILESYSTEM) && !defined(PYBIND11_HAS_EXPERIMENTAL_FILESYSTEM) \
|
||||
&& !defined(PYBIND11_HAS_FILESYSTEM_IS_OPTIONAL)
|
||||
# error \
|
||||
"Neither #include <filesystem> nor #include <experimental/filesystem is available. (Use -DPYBIND11_HAS_FILESYSTEM_IS_OPTIONAL to ignore.)"
|
||||
#if defined(PYBIND11_HAS_FILESYSTEM)
|
||||
# include <filesystem>
|
||||
#elif defined(PYBIND11_HAS_EXPERIMENTAL_FILESYSTEM)
|
||||
# include <experimental/filesystem>
|
||||
#else
|
||||
# error "Neither #include <filesystem> nor #include <experimental/filesystem is available."
|
||||
#endif
|
||||
|
||||
PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE)
|
||||
|
||||
@@ -12,10 +12,10 @@
|
||||
#include "constructor_stats.h"
|
||||
#include "pybind11_tests.h"
|
||||
|
||||
#ifndef PYBIND11_HAS_FILESYSTEM_IS_OPTIONAL
|
||||
# define PYBIND11_HAS_FILESYSTEM_IS_OPTIONAL
|
||||
#if defined(PYBIND11_HAS_FILESYSTEM) || defined(PYBIND11_HAS_EXPERIMENTAL_FILESYSTEM)
|
||||
# include <pybind11/stl/filesystem.h>
|
||||
#endif
|
||||
#include <pybind11/stl/filesystem.h>
|
||||
|
||||
#include <pybind11/typing.h>
|
||||
|
||||
#include <string>
|
||||
|
||||
Reference in New Issue
Block a user