22#ifndef APR_OPTIONAL_HOOK_H
23#define APR_OPTIONAL_HOOK_H
64#define APR_OPTIONAL_HOOK(ns,name,pfn,aszPre,aszSucc,nOrder) do { \
65 ns##_HOOK_##name##_t *apu__hook = pfn; \
66 apr_optional_hook_add(#name,(void (*)(void))apu__hook,aszPre, aszSucc, nOrder); \
90#define APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(ns,link,ret,name,args_decl,args_use,ok,decline) \
91link##_DECLARE(ret) ns##_run_##name args_decl \
93 ns##_LINK_##name##_t *pHook; \
96 apr_array_header_t *pHookArray=apr_optional_hook_get(#name); \
101 pHook=(ns##_LINK_##name##_t *)pHookArray->elts; \
102 for(n=0 ; n < pHookArray->nelts ; ++n) \
104 rv=(pHook[n].pFunc)args_use; \
106 if(rv != ok && rv != decline) \
void(*) const char *const aszPre)
APU_DECLARE(void) apr_optional_hook_add(const char *szName
void(*) const char *const const char *const aszSucc)
void(*) const char *const const char *const in nOrder)