template IMPLEMENT_DYNAMIC_BIND_FN(fn)
extern (C) nothrow
enum IMPLEMENT_DYNAMIC_BIND_FN =
"
extern(C)
int bind_engine(ENGINE* e, const(char)* id, const(dynamic_fns)* fns);
extern(C)
int bind_engine(ENGINE* e, const(char)* id, const(dynamic_fns)* fns) {
if(ENGINE_get_static_state() == fns->static_state) goto skip_cbs;
if(!CRYPTO_set_mem_functions(fns->mem_fns.malloc_cb,
fns->mem_fns.realloc_cb, fns->mem_fns.free_cb))
return 0;
CRYPTO_set_locking_callback(fns->lock_fns.lock_locking_cb);
CRYPTO_set_add_lock_callback(fns->lock_fns.lock_add_lock_cb);
CRYPTO_set_dynlock_create_callback(fns->lock_fns.dynlock_create_cb);
CRYPTO_set_dynlock_lock_callback(fns->lock_fns.dynlock_lock_cb);
CRYPTO_set_dynlock_destroy_callback(fns->lock_fns.dynlock_destroy_cb);
if(!CRYPTO_set_ex_data_implementation(fns->ex_data_fns))
return 0;
if(!ERR_set_implementation(fns->err_fns)) return 0;
skip_cbs:
if(!" ~ fn ~ "(e,id)) return 0;
return 1; }
";