ben 99/07/10 11:58:17
Modified: mpm/src/include ap_hooks.h Log: Use arrays for hooks. Revision Changes Path 1.4 +12 -7 apache-2.0/mpm/src/include/ap_hooks.h Index: ap_hooks.h =================================================================== RCS file: /export/home/cvs/apache-2.0/mpm/src/include/ap_hooks.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ap_hooks.h 1999/07/10 13:32:46 1.3 +++ ap_hooks.h 1999/07/10 18:58:17 1.4 @@ -10,33 +10,38 @@ typedef struct _LINK_##name \ { \ HOOK_##name *pFunc; \ - struct _LINK_##name *pNext; \ } LINK_##name; #define HOOK_STRUCT(members) \ static struct { members } _hooks; #define HOOK_LINK(name) \ - LINK_##name *link_##name; + array_header *link_##name; #define IMPLEMENT_HOOK_BASE(ret,rv_decl,sv,rv,name,args,args2,run_all,term1,term2,rv_final) \ void ap_hook_##name(HOOK_##name *pf) \ { \ - LINK_##name *pHook=ap_palloc(g_pHookPool,sizeof(LINK_##name)); \ - pHook->pNext=_hooks.link_##name; \ + LINK_##name *pHook; \ + if(!_hooks.link_##name) \ + _hooks.link_##name=ap_make_array(g_pHookPool,1,sizeof(LINK_##name)); \ + pHook=ap_push_array(_hooks.link_##name); \ pHook->pFunc=pf; \ - _hooks.link_##name=pHook; \ if(g_bDebugHooks) \ puts(" Hooked " #name); \ } \ ret ap_run_##name args \ { \ LINK_##name *pHook; \ + int n; \ rv_decl \ +\ + if(!_hooks.link_##name) \ + return rv_final; \ \ - for(pHook=_hooks.link_##name ; pHook ; pHook=pHook->pNext) \ + pHook=(LINK_##name *)_hooks.link_##name->elts; \ + for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ { \ - sv pHook->pFunc args2; \ + sv pHook[n].pFunc args2; \ \ if(term1 && (!run_all || term2)) \ return rv; \