diff --git a/lmdb-php.i b/lmdb-php.i index 2bf1c03..fb3318c 100644 --- a/lmdb-php.i +++ b/lmdb-php.i @@ -1,4 +1,4 @@ -%module example +%module lmdb %include exception.i %{ @@ -39,7 +39,9 @@ %newobject mdb_env_stat_swig; %newobject mdb_set_relctx_swig; %newobject mdb_stat_swig; +#if MDB_VERSION_PATCH > 10 %newobject mdb_env_set_userctx_swig; +#endif %newobject mdb_env_get_fd_swig; @@ -52,7 +54,9 @@ %rename (mdb_env_get_fd) mdb_env_get_fd_swig(MDB_env *env); %rename (mdb_env_get_path) mdb_env_get_path_swig(MDB_env *env); %rename (mdb_env_get_flags) mdb_env_get_flags_swig(MDB_env *env); +#if MDB_VERSION_PATCH > 10 %rename (mdb_env_set_userctx) mdb_env_set_userctx_swig(MDB_env *env, char *value); +#endif %rename (mdb_dbi_flags) mdb_dbi_flags_swig(MDB_txn *txn, MDB_dbi dbi); %rename (mdb_cursor_count) mdb_cursor_count_swig(MDB_cursor *cursor); %rename (mdb_reader_check) mdb_reader_check_swig(MDB_env *env); @@ -147,7 +151,9 @@ return flags; } - +%} +#if MDB_VERSION_PATCH > 10 +%inline %{ int mdb_env_set_userctx_swig(MDB_env *env, char *value){ int length = strlen(value); char *res = malloc(length); @@ -164,7 +170,9 @@ return (char *)pointer; } - +%} +#endif +%inline %{ int mdb_env_get_flags_swig(MDB_env *env){ unsigned int flags; diff --git a/lmdb-php_wrap.c b/lmdb-php_wrap.c index ecbe4dc..4f347f8 100644 --- a/lmdb-php_wrap.c +++ b/lmdb-php_wrap.c @@ -1015,17 +1015,17 @@ static swig_module_info swig_module = {swig_types, 18, 0, 0, 0, 0}; /* -------- TYPES TABLE (END) -------- */ /* header section */ -ZEND_BEGIN_MODULE_GLOBALS(example) +ZEND_BEGIN_MODULE_GLOBALS(lmdb) const char *error_msg; int error_code; -ZEND_END_MODULE_GLOBALS(example) -ZEND_DECLARE_MODULE_GLOBALS(example) +ZEND_END_MODULE_GLOBALS(lmdb) +ZEND_DECLARE_MODULE_GLOBALS(lmdb) #ifdef ZTS -#define SWIG_ErrorMsg() TSRMG(example_globals_id, zend_example_globals *, error_msg ) -#define SWIG_ErrorCode() TSRMG(example_globals_id, zend_example_globals *, error_code ) +#define SWIG_ErrorMsg() TSRMG(lmdb_globals_id, zend_lmdb_globals *, error_msg ) +#define SWIG_ErrorCode() TSRMG(lmdb_globals_id, zend_lmdb_globals *, error_code ) #else -#define SWIG_ErrorMsg() (example_globals.error_msg) -#define SWIG_ErrorCode() (example_globals.error_code) +#define SWIG_ErrorMsg() (lmdb_globals.error_msg) +#define SWIG_ErrorCode() (lmdb_globals.error_code) #endif #ifdef __GNUC__ @@ -1037,18 +1037,18 @@ static void SWIG_FAIL(TSRMLS_D) { abort(); } -static void example_init_globals(zend_example_globals *globals ) { +static void lmdb_init_globals(zend_lmdb_globals *globals ) { globals->error_msg = default_error_msg; globals->error_code = default_error_code; } -static void example_destroy_globals(zend_example_globals * globals) { (void)globals; } +static void lmdb_destroy_globals(zend_lmdb_globals * globals) { (void)globals; } static void SWIG_ResetError(TSRMLS_D) { SWIG_ErrorMsg() = default_error_msg; SWIG_ErrorCode() = default_error_code; } -ZEND_NAMED_FUNCTION(_wrap_swig_example_alter_newobject) { +ZEND_NAMED_FUNCTION(_wrap_swig_lmdb_alter_newobject) { zval **args[2]; swig_object_wrapper *value; int type; @@ -1063,7 +1063,7 @@ ZEND_NAMED_FUNCTION(_wrap_swig_example_alter_newobject) { return; } -ZEND_NAMED_FUNCTION(_wrap_swig_example_get_newobject) { +ZEND_NAMED_FUNCTION(_wrap_swig_lmdb_get_newobject) { zval **args[1]; swig_object_wrapper *value; int type; @@ -1078,14 +1078,14 @@ ZEND_NAMED_FUNCTION(_wrap_swig_example_get_newobject) { return; } -#define SWIG_name "example" +#define SWIG_name "lmdb" #ifdef __cplusplus extern "C" { #endif #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" -#include "php_example.h" +#include "php_lmdb.h" #ifdef __cplusplus } #endif @@ -1105,7 +1105,7 @@ extern "C" { int rc = mdb_env_info(env, info); if(rc != 0){ - php_error_docref(NULL, E_NOTICE, "Error code for mdb_env_info: %d\n", rc); + php_error_docref(NULL, E_NOTICE, "mdb_env_info: %d\n", rc); } return info; @@ -1118,7 +1118,7 @@ extern "C" { int rc = mdb_env_stat(env, stat); if(rc != 0){ - php_error_docref(NULL, E_NOTICE, "Error code for mdb_env_stat: %d\n", rc); + php_error_docref(NULL, E_NOTICE, "mdb_env_stat: %d\n", rc); } return stat; @@ -1142,7 +1142,7 @@ extern "C" { int rc = mdb_stat(txn, dbi, stat); if(rc != 0){ - php_error_docref(NULL, E_NOTICE, "Error code for mdb_stat: %d\n", rc); + php_error_docref(NULL, E_NOTICE, "mdb_stat: %d\n", rc); } return stat; @@ -1154,7 +1154,7 @@ extern "C" { int rc = mdb_reader_check(env, &dead); if(rc != 0){ - php_error_docref(NULL, E_NOTICE, "Error code for mdb_reader_check: %d\n", rc); + php_error_docref(NULL, E_NOTICE, "mdb_reader_check: %d\n", rc); } return dead; @@ -1166,7 +1166,7 @@ extern "C" { int rc = mdb_cursor_count(cursor, &duplicates); if(rc != 0){ - php_error_docref(NULL, E_NOTICE, "Error code for mdb_cursor_count: %d\n", rc); + php_error_docref(NULL, E_NOTICE, "mdb_cursor_count: %d\n", rc); } return duplicates; @@ -1178,12 +1178,13 @@ extern "C" { int rc = mdb_dbi_flags(txn, dbi, &flags); if(rc != 0){ - php_error_docref(NULL, E_NOTICE, "Error code for mdb_dbi_flags: %d\n", rc); + php_error_docref(NULL, E_NOTICE, "mdb_dbi_flags: %d\n", rc); } return flags; } + int mdb_env_set_userctx_swig(MDB_env *env, char *value){ int length = strlen(value); char *res = malloc(length); @@ -1201,13 +1202,14 @@ extern "C" { return (char *)pointer; } + int mdb_env_get_flags_swig(MDB_env *env){ unsigned int flags; int rc = mdb_env_get_maxreaders(env, &flags); if(rc != 0){ - php_error_docref(NULL, E_NOTICE, "Error code for mdb_env_get_flags: %d\n", rc); + php_error_docref(NULL, E_NOTICE, "mdb_env_get_flags: %d\n", rc); } return flags; @@ -1219,7 +1221,7 @@ extern "C" { int rc = mdb_env_get_path(env, &path); if(rc != 0){ - php_error_docref(NULL, E_NOTICE, "Error code for mdb_env_get_path: %d\n", rc); + php_error_docref(NULL, E_NOTICE, "mdb_env_get_path: %d\n", rc); } return (unsigned char *)path; @@ -1231,7 +1233,7 @@ extern "C" { int rc = mdb_env_get_fd(env, &fd); if(rc != 0){ - php_error_docref(NULL, E_NOTICE, "Error code for mdb_env_get_fd: %d\n", rc); + php_error_docref(NULL, E_NOTICE, "mdb_env_get_fd: %d\n", rc); } mdb_filehandle_t * fdp; @@ -1246,7 +1248,7 @@ extern "C" { int rc = mdb_env_get_maxreaders(env, &readers); if(rc != 0){ - php_error_docref(NULL, E_NOTICE, "Error code for mdb_env_get_maxreaders: %d\n", rc); + php_error_docref(NULL, E_NOTICE, "mdb_env_get_maxreaders: %d\n", rc); } return readers; @@ -1258,7 +1260,7 @@ extern "C" { int rc = mdb_env_create(&env); if(rc != 0){ - php_error_docref(NULL, E_NOTICE, "Error code for mdb_txn_begin: %d\n", rc); + php_error_docref(NULL, E_NOTICE, "mdb_txn_begin: %d\n", rc); } return env; @@ -1274,7 +1276,7 @@ extern "C" { int rc = mdb_txn_begin(env, parent, flags, &txn); if(rc != 0){ - php_error_docref(NULL, E_NOTICE,"Error code for mdb_txn_begin: %d\n", rc); + php_error_docref(NULL, E_NOTICE,"mdb_txn_begin: %d\n", rc); } return txn; @@ -1286,7 +1288,7 @@ extern "C" { int rc = mdb_dbi_open(txn, name, flags, &dbi); if(rc != 0){ - php_error_docref(NULL, E_NOTICE, "Error code for mdb_dbi_open: %d\n", rc); + php_error_docref(NULL, E_NOTICE, "mdb_dbi_open: %d\n", rc); } return dbi; @@ -1299,7 +1301,7 @@ extern "C" { int rc = mdb_cursor_open(txn, dbi, &cursor); if(rc != 0){ - php_error_docref(NULL, E_NOTICE, "Error code for mdb_cursor_open: %d\n", rc); + php_error_docref(NULL, E_NOTICE, "mdb_cursor_open: %d\n", rc); } return cursor; @@ -2867,31 +2869,6 @@ ZEND_NAMED_FUNCTION(_wrap_mdb_txn_env) { } -ZEND_NAMED_FUNCTION(_wrap_mdb_txn_id) { - MDB_txn *arg1 = (MDB_txn *) 0 ; - zval **args[1]; - size_t result; - - SWIG_ResetError(TSRMLS_C); - if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_array_ex(1, args) != SUCCESS) { - WRONG_PARAM_COUNT; - } - - { - if(SWIG_ConvertPtr(*args[0], (void **) &arg1, SWIGTYPE_p_MDB_txn, 0) < 0) { - SWIG_PHP_Error(E_ERROR, "Type error in argument 1 of mdb_txn_id. Expected SWIGTYPE_p_MDB_txn"); - } - } - result = mdb_txn_id(arg1); - { - ZVAL_LONG(return_value,result); - } - return; -fail: - SWIG_FAIL(TSRMLS_C); -} - - ZEND_NAMED_FUNCTION(_wrap_mdb_txn_commit) { MDB_txn *arg1 = (MDB_txn *) 0 ; zval **args[1]; @@ -4726,9 +4703,6 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(swig_arginfo_mdb_txn_env, 0, 0, 0) ZEND_ARG_PASS_INFO(0) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(swig_arginfo_mdb_txn_id, 0, 0, 0) - ZEND_ARG_PASS_INFO(0) -ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(swig_arginfo_mdb_txn_commit, 0, 0, 0) ZEND_ARG_PASS_INFO(0) ZEND_END_ARG_INFO() @@ -4930,7 +4904,7 @@ ZEND_END_ARG_INFO() /* entry subsection */ /* Every non-class user visible function must have an entry here */ -static zend_function_entry example_functions[] = { +static zend_function_entry lmdb_functions[] = { SWIG_ZEND_NAMED_FE(mdb_val_mv_size_set,_wrap_MDB_val_mv_size_set,swig_arginfo_mdb_val_mv_size_set) SWIG_ZEND_NAMED_FE(mdb_val_mv_size_get,_wrap_MDB_val_mv_size_get,swig_arginfo_mdb_val_mv_size_get) SWIG_ZEND_NAMED_FE(mdb_val_mv_data_set,_wrap_MDB_val_mv_data_set,swig_arginfo_mdb_val_mv_data_set) @@ -4977,7 +4951,6 @@ static zend_function_entry example_functions[] = { SWIG_ZEND_NAMED_FE(mdb_env_get_maxkeysize,_wrap_mdb_env_get_maxkeysize,swig_arginfo_mdb_env_get_maxkeysize) SWIG_ZEND_NAMED_FE(mdb_env_get_userctx,_wrap_mdb_env_get_userctx,swig_arginfo_mdb_env_get_userctx) SWIG_ZEND_NAMED_FE(mdb_txn_env,_wrap_mdb_txn_env,swig_arginfo_mdb_txn_env) - SWIG_ZEND_NAMED_FE(mdb_txn_id,_wrap_mdb_txn_id,swig_arginfo_mdb_txn_id) SWIG_ZEND_NAMED_FE(mdb_txn_commit,_wrap_mdb_txn_commit,swig_arginfo_mdb_txn_commit) SWIG_ZEND_NAMED_FE(mdb_txn_abort,_wrap_mdb_txn_abort,swig_arginfo_mdb_txn_abort) SWIG_ZEND_NAMED_FE(mdb_txn_reset,_wrap_mdb_txn_reset,swig_arginfo_mdb_txn_reset) @@ -5030,8 +5003,8 @@ static zend_function_entry example_functions[] = { SWIG_ZEND_NAMED_FE(mdb_info_last_txnid,_wrap_mdb_info_last_txnid,swig_arginfo_mdb_info_last_txnid) SWIG_ZEND_NAMED_FE(mdb_info_maxreaders,_wrap_mdb_info_maxreaders,swig_arginfo_mdb_info_maxreaders) SWIG_ZEND_NAMED_FE(mdb_info_numreaders,_wrap_mdb_info_numreaders,swig_arginfo_mdb_info_numreaders) - SWIG_ZEND_NAMED_FE(swig_example_alter_newobject,_wrap_swig_example_alter_newobject,NULL) - SWIG_ZEND_NAMED_FE(swig_example_get_newobject,_wrap_swig_example_get_newobject,NULL) + SWIG_ZEND_NAMED_FE(swig_lmdb_alter_newobject,_wrap_swig_lmdb_alter_newobject,NULL) + SWIG_ZEND_NAMED_FE(swig_lmdb_get_newobject,_wrap_swig_lmdb_get_newobject,NULL) {NULL, NULL, NULL} }; @@ -5040,29 +5013,29 @@ static zend_function_entry example_functions[] = { #undef ZEND_MODULE_BUILD_ID #define ZEND_MODULE_BUILD_ID (char*)"API" ZEND_TOSTR(ZEND_MODULE_API_NO) ZEND_BUILD_TS ZEND_BUILD_DEBUG ZEND_BUILD_SYSTEM ZEND_BUILD_EXTRA #endif -zend_module_entry example_module_entry = { +zend_module_entry lmdb_module_entry = { STANDARD_MODULE_HEADER, - (char*)"example", - example_functions, - PHP_MINIT(example), - PHP_MSHUTDOWN(example), - PHP_RINIT(example), - PHP_RSHUTDOWN(example), - PHP_MINFO(example), + (char*)"lmdb", + lmdb_functions, + PHP_MINIT(lmdb), + PHP_MSHUTDOWN(lmdb), + PHP_RINIT(lmdb), + PHP_RSHUTDOWN(lmdb), + PHP_MINFO(lmdb), NO_VERSION_YET, STANDARD_MODULE_PROPERTIES }; -zend_module_entry* SWIG_module_entry = &example_module_entry; +zend_module_entry* SWIG_module_entry = &lmdb_module_entry; #ifdef __cplusplus extern "C" { #endif -SWIGEXPORT zend_module_entry *get_module(void) { return &example_module_entry; } +SWIGEXPORT zend_module_entry *get_module(void) { return &lmdb_module_entry; } #ifdef __cplusplus } #endif -#define SWIG_php_minit PHP_MINIT_FUNCTION(example) +#define SWIG_php_minit PHP_MINIT_FUNCTION(lmdb) /* ----------------------------------------------------------------------------- * Type initialization: * This problem is tough by the requirement that no dynamic @@ -5299,7 +5272,7 @@ SWIG_PropagateClientData(void) { SWIG_InitializeModule(0); /* oinit subsection */ -ZEND_INIT_MODULE_GLOBALS(example, example_init_globals, example_destroy_globals); +ZEND_INIT_MODULE_GLOBALS(lmdb, lmdb_init_globals, lmdb_destroy_globals); /* Register resource destructors for pointer types */ le_swig__p_f_p_q_const__struct_MDB_val_p_q_const__struct_MDB_val__int=zend_register_list_destructors_ex(_wrap_destroy_p_f_p_q_const__struct_MDB_val_p_q_const__struct_MDB_val__int,NULL,(char *)(SWIGTYPE_p_f_p_q_const__struct_MDB_val_p_q_const__struct_MDB_val__int->name),module_number); @@ -5419,7 +5392,7 @@ SWIG_LONG_CONSTANT(MDB_LAST_ERRCODE, (int)(-30780)); return SUCCESS; } -PHP_RINIT_FUNCTION(example) +PHP_RINIT_FUNCTION(lmdb) { /* rinit section */ @@ -5429,23 +5402,23 @@ PHP_RINIT_FUNCTION(example) return SUCCESS; } -PHP_MSHUTDOWN_FUNCTION(example) +PHP_MSHUTDOWN_FUNCTION(lmdb) { /* shutdown section */ #ifdef ZTS - ts_free_id(example_globals_id); + ts_free_id(lmdb_globals_id); #endif return SUCCESS; } -PHP_RSHUTDOWN_FUNCTION(example) +PHP_RSHUTDOWN_FUNCTION(lmdb) { /* rshutdown section */ return SUCCESS; } -PHP_MINFO_FUNCTION(example) +PHP_MINFO_FUNCTION(lmdb) { } /* end init section */ diff --git a/example.php b/lmdb.php similarity index 94% rename from example.php rename to lmdb.php index 28f1276..cf9ca70 100644 --- a/example.php +++ b/lmdb.php @@ -11,22 +11,22 @@ * ----------------------------------------------------------------------------- */ // Try to load our extension if it's not already loaded. -if (!extension_loaded('example')) { +if (!extension_loaded('lmdb')) { if (strtolower(substr(PHP_OS, 0, 3)) === 'win') { - if (!dl('php_example.dll')) return; + if (!dl('php_lmdb.dll')) return; } else { // PHP_SHLIB_SUFFIX gives 'dylib' on MacOS X but modules are 'so'. if (PHP_SHLIB_SUFFIX === 'dylib') { - if (!dl('example.so')) return; + if (!dl('lmdb.so')) return; } else { - if (!dl('example.'.PHP_SHLIB_SUFFIX)) return; + if (!dl('lmdb.'.PHP_SHLIB_SUFFIX)) return; } } } -abstract class example { +abstract class lmdb { const MDB_VERSION_MAJOR = MDB_VERSION_MAJOR; const MDB_VERSION_MINOR = MDB_VERSION_MINOR; @@ -231,10 +231,6 @@ static function mdb_txn_env($txn) { return mdb_txn_env($txn); } - static function mdb_txn_id($txn) { - return mdb_txn_id($txn); - } - static function mdb_txn_commit($txn) { return mdb_txn_commit($txn); } @@ -476,14 +472,14 @@ class MDB_val { function __set($var,$value) { if ($var === 'mv_size') return MDB_val_mv_size_set($this->_cPtr,$value); if ($var === 'mv_data') return MDB_val_mv_data_set($this->_cPtr,$value); - if ($var === 'thisown') return swig_example_alter_newobject($this->_cPtr,$value); + if ($var === 'thisown') return swig_lmdb_alter_newobject($this->_cPtr,$value); $this->_pData[$var] = $value; } function __get($var) { if ($var === 'mv_size') return MDB_val_mv_size_get($this->_cPtr); if ($var === 'mv_data') return MDB_val_mv_data_get($this->_cPtr); - if ($var === 'thisown') return swig_example_get_newobject($this->_cPtr); + if ($var === 'thisown') return swig_lmdb_get_newobject($this->_cPtr); return $this->_pData[$var]; } @@ -509,14 +505,14 @@ class MDB_stat { function __set($var,$value) { $func = 'MDB_stat_'.$var.'_set'; if (function_exists($func)) return call_user_func($func,$this->_cPtr,$value); - if ($var === 'thisown') return swig_example_alter_newobject($this->_cPtr,$value); + if ($var === 'thisown') return swig_lmdb_alter_newobject($this->_cPtr,$value); $this->_pData[$var] = $value; } function __get($var) { $func = 'MDB_stat_'.$var.'_get'; if (function_exists($func)) return call_user_func($func,$this->_cPtr); - if ($var === 'thisown') return swig_example_get_newobject($this->_cPtr); + if ($var === 'thisown') return swig_lmdb_get_newobject($this->_cPtr); return $this->_pData[$var]; } @@ -542,14 +538,14 @@ class MDB_envinfo { function __set($var,$value) { $func = 'MDB_envinfo_'.$var.'_set'; if (function_exists($func)) return call_user_func($func,$this->_cPtr,$value); - if ($var === 'thisown') return swig_example_alter_newobject($this->_cPtr,$value); + if ($var === 'thisown') return swig_lmdb_alter_newobject($this->_cPtr,$value); $this->_pData[$var] = $value; } function __get($var) { $func = 'MDB_envinfo_'.$var.'_get'; if (function_exists($func)) return call_user_func($func,$this->_cPtr); - if ($var === 'thisown') return swig_example_get_newobject($this->_cPtr); + if ($var === 'thisown') return swig_lmdb_get_newobject($this->_cPtr); return $this->_pData[$var]; } diff --git a/php_example.h b/php_lmdb.h similarity index 92% rename from php_example.h rename to php_lmdb.h index f50e3e5..1a145e2 100644 --- a/php_example.h +++ b/php_lmdb.h @@ -8,27 +8,27 @@ * interface file instead. * ----------------------------------------------------------------------------- */ -#ifndef PHP_EXAMPLE_H -#define PHP_EXAMPLE_H +#ifndef PHP_LMDB_H +#define PHP_LMDB_H -extern zend_module_entry example_module_entry; -#define phpext_example_ptr &example_module_entry +extern zend_module_entry lmdb_module_entry; +#define phpext_lmdb_ptr &lmdb_module_entry #ifdef PHP_WIN32 -# define PHP_EXAMPLE_API __declspec(dllexport) +# define PHP_LMDB_API __declspec(dllexport) #else -# define PHP_EXAMPLE_API +# define PHP_LMDB_API #endif #ifdef ZTS #include "TSRM.h" #endif -PHP_MINIT_FUNCTION(example); -PHP_MSHUTDOWN_FUNCTION(example); -PHP_RINIT_FUNCTION(example); -PHP_RSHUTDOWN_FUNCTION(example); -PHP_MINFO_FUNCTION(example); +PHP_MINIT_FUNCTION(lmdb); +PHP_MSHUTDOWN_FUNCTION(lmdb); +PHP_RINIT_FUNCTION(lmdb); +PHP_RSHUTDOWN_FUNCTION(lmdb); +PHP_MINFO_FUNCTION(lmdb); ZEND_NAMED_FUNCTION(_wrap_MDB_val_mv_size_set); ZEND_NAMED_FUNCTION(_wrap_MDB_val_mv_size_get); @@ -76,7 +76,6 @@ ZEND_NAMED_FUNCTION(_wrap_mdb_env_set_maxdbs); ZEND_NAMED_FUNCTION(_wrap_mdb_env_get_maxkeysize); ZEND_NAMED_FUNCTION(_wrap_mdb_env_get_userctx); ZEND_NAMED_FUNCTION(_wrap_mdb_txn_env); -ZEND_NAMED_FUNCTION(_wrap_mdb_txn_id); ZEND_NAMED_FUNCTION(_wrap_mdb_txn_commit); ZEND_NAMED_FUNCTION(_wrap_mdb_txn_abort); ZEND_NAMED_FUNCTION(_wrap_mdb_txn_reset); @@ -129,4 +128,4 @@ ZEND_NAMED_FUNCTION(_wrap_mdb_info_last_pgno); ZEND_NAMED_FUNCTION(_wrap_mdb_info_last_txnid); ZEND_NAMED_FUNCTION(_wrap_mdb_info_maxreaders); ZEND_NAMED_FUNCTION(_wrap_mdb_info_numreaders); -#endif /* PHP_EXAMPLE_H */ +#endif /* PHP_LMDB_H */