mdbx++: добавление MDBX_CXXnn_CONSTEXPR_ENUM.

This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2023-11-21 15:14:55 +03:00
parent bf21ee7bde
commit b9e2f6dc09

View File

@ -162,6 +162,20 @@
#define MDBX_CXX20_CONSTEXPR inline
#endif /* MDBX_CXX20_CONSTEXPR */
#if CONSTEXPR_ENUM_FLAGS_OPERATIONS || defined(DOXYGEN)
#define MDBX_CXX01_CONSTEXPR_ENUM MDBX_CXX01_CONSTEXPR
#define MDBX_CXX11_CONSTEXPR_ENUM MDBX_CXX11_CONSTEXPR
#define MDBX_CXX14_CONSTEXPR_ENUM MDBX_CXX14_CONSTEXPR
#define MDBX_CXX17_CONSTEXPR_ENUM MDBX_CXX17_CONSTEXPR
#define MDBX_CXX20_CONSTEXPR_ENUM MDBX_CXX20_CONSTEXPR
#else
#define MDBX_CXX01_CONSTEXPR_ENUM inline
#define MDBX_CXX11_CONSTEXPR_ENUM inline
#define MDBX_CXX14_CONSTEXPR_ENUM inline
#define MDBX_CXX17_CONSTEXPR_ENUM inline
#define MDBX_CXX20_CONSTEXPR_ENUM inline
#endif /* CONSTEXPR_ENUM_FLAGS_OPERATIONS */
/** Workaround for old compilers without support assertion inside `constexpr`
* functions. */
#if defined(CONSTEXPR_ASSERT)
@ -3198,18 +3212,8 @@ struct LIBMDBX_API_TYPE map_handle {
map_handle::state state) noexcept;
info(const info &) noexcept = default;
info &operator=(const info &) noexcept = default;
#if CONSTEXPR_ENUM_FLAGS_OPERATIONS
MDBX_CXX11_CONSTEXPR
#else
inline
#endif
::mdbx::key_mode key_mode() const noexcept;
#if CONSTEXPR_ENUM_FLAGS_OPERATIONS
MDBX_CXX11_CONSTEXPR
#else
inline
#endif
::mdbx::value_mode value_mode() const noexcept;
MDBX_CXX11_CONSTEXPR_ENUM mdbx::key_mode key_mode() const noexcept;
MDBX_CXX11_CONSTEXPR_ENUM mdbx::value_mode value_mode() const noexcept;
};
};
@ -5491,17 +5495,13 @@ MDBX_CXX11_CONSTEXPR map_handle::info::info(map_handle::flags flags,
map_handle::state state) noexcept
: flags(flags), state(state) {}
#if CONSTEXPR_ENUM_FLAGS_OPERATIONS
MDBX_CXX11_CONSTEXPR
#endif
::mdbx::key_mode map_handle::info::key_mode() const noexcept {
MDBX_CXX11_CONSTEXPR_ENUM mdbx::key_mode
map_handle::info::key_mode() const noexcept {
return ::mdbx::key_mode(flags & (MDBX_REVERSEKEY | MDBX_INTEGERKEY));
}
#if CONSTEXPR_ENUM_FLAGS_OPERATIONS
MDBX_CXX11_CONSTEXPR
#endif
::mdbx::value_mode map_handle::info::value_mode() const noexcept {
MDBX_CXX11_CONSTEXPR_ENUM mdbx::value_mode
map_handle::info::value_mode() const noexcept {
return ::mdbx::value_mode(flags & (MDBX_DUPSORT | MDBX_REVERSEDUP |
MDBX_DUPFIXED | MDBX_INTEGERDUP));
}