libmdbx  0.13.0.37 (2024-04-04T17:32:49+03:00)
One of the fastest compact embeddable key-value ACID database without WAL.
Common Macros

Macros

#define MDBX_PURE_FUNCTION   [[gnu::pure]]
 The 'pure' function attribute for optimization. More...
 
#define MDBX_NOTHROW_PURE_FUNCTION   [[gnu::pure, gnu::nothrow]]
 The 'pure nothrow' function attribute for optimization. More...
 
#define MDBX_CONST_FUNCTION   [[gnu::const]]
 The 'const' function attribute for optimization. More...
 
#define MDBX_NOTHROW_CONST_FUNCTION   [[gnu::const, gnu::nothrow]]
 The 'const nothrow' function attribute for optimization. More...
 
#define LIBMDBX_INLINE_API(TYPE, NAME, ARGS)   static __inline TYPE NAME ARGS
 Auxiliary macro for robustly define the both inline version of API function and non-inline fallback dll-exported version for applications linked with old version of libmdbx, with a strictly ODR-common implementation. More...
 
#define MDBX_CXX17_NOEXCEPT   noexcept
 
#define MDBX_CXX01_CONSTEXPR   constexpr
 
#define MDBX_CXX01_CONSTEXPR_VAR   constexpr
 
#define MDBX_CXX11_CONSTEXPR   constexpr
 
#define MDBX_CXX11_CONSTEXPR_VAR   constexpr
 
#define MDBX_CXX14_CONSTEXPR   constexpr
 
#define MDBX_CXX14_CONSTEXPR_VAR   constexpr
 
#define MDBX_NORETURN   [[noreturn]]
 
#define MDBX_MAYBE_UNUSED   [[maybe_unused]]
 

Detailed Description

Macro Definition Documentation

◆ LIBMDBX_INLINE_API

#define LIBMDBX_INLINE_API (   TYPE,
  NAME,
  ARGS 
)    static __inline TYPE NAME ARGS

Auxiliary macro for robustly define the both inline version of API function and non-inline fallback dll-exported version for applications linked with old version of libmdbx, with a strictly ODR-common implementation.

◆ MDBX_CONST_FUNCTION

#define MDBX_CONST_FUNCTION   [[gnu::const]]

The 'const' function attribute for optimization.

Many functions do not examine any values except their arguments, and have no effects except the return value. Basically this is just slightly more strict class than the PURE attribute, since function is not allowed to read global memory.

Note that a function that has pointer arguments and examines the data pointed to must not be declared const. Likewise, a function that calls a non-const function usually must not be const. It does not make sense for a const function to return void.

◆ MDBX_CXX01_CONSTEXPR

#define MDBX_CXX01_CONSTEXPR   constexpr

Workaround for old compilers without support for any kind of constexpr.

◆ MDBX_CXX01_CONSTEXPR_VAR

#define MDBX_CXX01_CONSTEXPR_VAR   constexpr

◆ MDBX_CXX11_CONSTEXPR

#define MDBX_CXX11_CONSTEXPR   constexpr

Workaround for old compilers without properly support for C++11 constexpr.

◆ MDBX_CXX11_CONSTEXPR_VAR

#define MDBX_CXX11_CONSTEXPR_VAR   constexpr

◆ MDBX_CXX14_CONSTEXPR

#define MDBX_CXX14_CONSTEXPR   constexpr

Workaround for old compilers without properly support for C++14 constexpr.

◆ MDBX_CXX14_CONSTEXPR_VAR

#define MDBX_CXX14_CONSTEXPR_VAR   constexpr

◆ MDBX_CXX17_NOEXCEPT

#define MDBX_CXX17_NOEXCEPT   noexcept

Workaround for old compilers without support for C++17 noexcept.

◆ MDBX_MAYBE_UNUSED

#define MDBX_MAYBE_UNUSED   [[maybe_unused]]

◆ MDBX_NORETURN

#define MDBX_NORETURN   [[noreturn]]

◆ MDBX_NOTHROW_CONST_FUNCTION

#define MDBX_NOTHROW_CONST_FUNCTION   [[gnu::const, gnu::nothrow]]

The 'const nothrow' function attribute for optimization.

Like MDBX_CONST_FUNCTION with addition noexcept restriction that is compatible to CLANG and future [[const]].

◆ MDBX_NOTHROW_PURE_FUNCTION

#define MDBX_NOTHROW_PURE_FUNCTION   [[gnu::pure, gnu::nothrow]]

The 'pure nothrow' function attribute for optimization.

Like MDBX_PURE_FUNCTION with addition noexcept restriction that is compatible to CLANG and proposed [[pure]].

◆ MDBX_PURE_FUNCTION

#define MDBX_PURE_FUNCTION   [[gnu::pure]]

The 'pure' function attribute for optimization.

Many functions have no effects except the return value and their return value depends only on the parameters and/or global variables. Such a function can be subject to common subexpression elimination and loop optimization just as an arithmetic operator would be. These functions should be declared with the attribute pure.