Browse Source

Collect all `#define PYBIND11_HAS_...` in pybind11/detail/common.h (#5647)

pull/5653/head
Ralf W. Grosse-Kunstleve 2 months ago committed by GitHub
parent
commit
c125cc789c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 28
      include/pybind11/detail/common.h
  2. 2
      include/pybind11/detail/cpp_conduit.h
  3. 3
      include/pybind11/detail/internals.h
  4. 2
      include/pybind11/detail/native_enum_data.h
  5. 2
      include/pybind11/functional.h
  6. 22
      include/pybind11/stl/filesystem.h
  7. 6
      tests/test_stl.cpp

28
include/pybind11/detail/common.h

@ -50,6 +50,21 @@ @@ -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 @@ @@ -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 @@ @@ -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:

2
include/pybind11/detail/cpp_conduit.h

@ -71,7 +71,5 @@ inline void *try_raw_pointer_ephemeral_from_cpp_conduit(handle src, @@ -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)

3
include/pybind11/detail/internals.h

@ -206,9 +206,6 @@ struct internals { @@ -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.

2
include/pybind11/detail/native_enum_data.h

@ -4,8 +4,6 @@ @@ -4,8 +4,6 @@
#pragma once
#define PYBIND11_HAS_NATIVE_ENUM
#include "../pytypes.h"
#include "common.h"
#include "internals.h"

2
include/pybind11/functional.h

@ -9,8 +9,6 @@ @@ -9,8 +9,6 @@
#pragma once
#define PYBIND11_HAS_TYPE_CASTER_STD_FUNCTION_SPECIALIZATIONS
#include "pybind11.h"
#include <functional>

22
include/pybind11/stl/filesystem.h

@ -12,22 +12,12 @@ @@ -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)

6
tests/test_stl.cpp

@ -12,10 +12,10 @@ @@ -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>

Loading…
Cancel
Save