22 #ifndef APR_OPTIONAL_HOOK_H
23 #define APR_OPTIONAL_HOOK_H
49 const
char * const *aszPre,
50 const
char * const *aszSucc,
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) \
91 link##_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) \