GME
13
|
#define APR_DECLARE_EXTERNAL_HOOK | ( | ns, | |
link, | |||
ret, | |||
name, | |||
args | |||
) |
typedef ret ns##_HOOK_##name##_t args; \ link##_DECLARE(void) ns##_hook_##name(ns##_HOOK_##name##_t *pf, \ const char * const *aszPre, \ const char * const *aszSucc, int nOrder); \ link##_DECLARE(ret) ns##_run_##name args; \ APR_IMPLEMENT_HOOK_GET_PROTO(ns,link,name); \ typedef struct ns##_LINK_##name##_t \ { \ ns##_HOOK_##name##_t *pFunc; \ const char *szName; \ const char * const *aszPredecessors; \ const char * const *aszSuccessors; \ int nOrder; \ } ns##_LINK_##name##_t;
macro to declare the hook correctly
Definition at line 118 of file apr_hooks.h.
#define APR_HOOK_FIRST 0 |
run this hook first
Definition at line 301 of file apr_hooks.h.
#define APR_HOOK_LAST 20 |
run this hook after every other hook which is defined
Definition at line 305 of file apr_hooks.h.
#define APR_HOOK_LINK | ( | name | ) | apr_array_header_t *link_##name; |
macro to link the hook structure
Definition at line 139 of file apr_hooks.h.
#define APR_HOOK_MIDDLE 10 |
run this hook somewhere
Definition at line 303 of file apr_hooks.h.
#define APR_HOOK_REALLY_FIRST (-10) |
run this hook first, before ANYTHING
Definition at line 299 of file apr_hooks.h.
#define APR_HOOK_REALLY_LAST 30 |
run this hook last, after EVERYTHING
Definition at line 307 of file apr_hooks.h.
#define APR_HOOK_STRUCT | ( | members | ) | static struct { members } _hooks; |
macro to declare the hook structure
Definition at line 135 of file apr_hooks.h.
#define APR_IMPLEMENT_EXTERNAL_HOOK_BASE | ( | ns, | |
link, | |||
name | |||
) |
link##_DECLARE(void) ns##_hook_##name(ns##_HOOK_##name##_t *pf,const char * const *aszPre, \ const char * const *aszSucc,int nOrder) \ { \ ns##_LINK_##name##_t *pHook; \ if(!_hooks.link_##name) \ { \ _hooks.link_##name=apr_array_make(apr_hook_global_pool,1,sizeof(ns##_LINK_##name##_t)); \ apr_hook_sort_register(#name,&_hooks.link_##name); \ } \ pHook=apr_array_push(_hooks.link_##name); \ pHook->pFunc=pf; \ pHook->aszPredecessors=aszPre; \ pHook->aszSuccessors=aszSucc; \ pHook->nOrder=nOrder; \ pHook->szName=apr_hook_debug_current; \ if(apr_hook_debug_enabled) \ apr_hook_debug_show(#name,aszPre,aszSucc); \ } \ APR_IMPLEMENT_HOOK_GET_PROTO(ns,link,name) \ { \ return _hooks.link_##name; \ }
macro to implement the hook
Definition at line 143 of file apr_hooks.h.
#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL | ( | ns, | |
link, | |||
ret, | |||
name, | |||
args_decl, | |||
args_use, | |||
ok, | |||
decline | |||
) |
APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ link##_DECLARE(ret) ns##_run_##name args_decl \ { \ ns##_LINK_##name##_t *pHook; \ int n; \ ret rv = ok; \ APR_HOOK_INT_DCL_UD; \ \ APR_HOOK_PROBE_ENTRY(ud, ns, name, args_use); \ \ if(_hooks.link_##name) \ { \ pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ { \ APR_HOOK_PROBE_INVOKE(ud, ns, name, (char *)pHook[n].szName, args_use); \ rv=pHook[n].pFunc args_use; \ APR_HOOK_PROBE_COMPLETE(ud, ns, name, (char *)pHook[n].szName, rv, args_use); \ if(rv != ok && rv != decline) \ break; \ rv = ok; \ } \ } \ \ APR_HOOK_PROBE_RETURN(ud, ns, name, rv, args_use); \ \ return rv; \ }
Implement a hook that runs until one of the functions returns something other than OK or DECLINE
ns | The namespace prefix of the hook functions |
link | The linkage declaration prefix of the hook |
ret | Type to return |
name | The name of the hook |
args_decl | The declaration of the arguments for the hook |
args_use | The names for the arguments for the hook |
ok | Success value |
decline | Decline value |
Definition at line 222 of file apr_hooks.h.
#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST | ( | ns, | |
link, | |||
ret, | |||
name, | |||
args_decl, | |||
args_use, | |||
decline | |||
) |
APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ link##_DECLARE(ret) ns##_run_##name args_decl \ { \ ns##_LINK_##name##_t *pHook; \ int n; \ ret rv = decline; \ APR_HOOK_INT_DCL_UD; \ \ APR_HOOK_PROBE_ENTRY(ud, ns, name, args_use); \ \ if(_hooks.link_##name) \ { \ pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ { \ APR_HOOK_PROBE_INVOKE(ud, ns, name, (char *)pHook[n].szName, args_use); \ rv=pHook[n].pFunc args_use; \ APR_HOOK_PROBE_COMPLETE(ud, ns, name, (char *)pHook[n].szName, rv, args_use); \ \ if(rv != decline) \ break; \ } \ } \ \ APR_HOOK_PROBE_RETURN(ud, ns, name, rv, args_use); \ \ return rv; \ }
Implement a hook that runs until the first function returns something other than the value of decline
ns | The namespace prefix of the hook functions |
link | The linkage declaration prefix of the hook |
name | The name of the hook |
ret | Type to return |
args_decl | The declaration of the arguments for the hook |
args_use | The names for the arguments for the hook |
decline | Decline value |
Definition at line 267 of file apr_hooks.h.
#define APR_IMPLEMENT_EXTERNAL_HOOK_VOID | ( | ns, | |
link, | |||
name, | |||
args_decl, | |||
args_use | |||
) |
APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ link##_DECLARE(void) ns##_run_##name args_decl \ { \ ns##_LINK_##name##_t *pHook; \ int n; \ APR_HOOK_INT_DCL_UD; \ \ APR_HOOK_PROBE_ENTRY(ud, ns, name, args_use); \ \ if(_hooks.link_##name) \ { \ pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ { \ APR_HOOK_PROBE_INVOKE(ud, ns, name, (char *)pHook[n].szName, args_use); \ pHook[n].pFunc args_use; \ APR_HOOK_PROBE_COMPLETE(ud, ns, name, (char *)pHook[n].szName, 0, args_use); \ } \ } \ \ APR_HOOK_PROBE_RETURN(ud, ns, name, 0, args_use); \ \ }
Implement a hook that has no return code, and therefore runs all of the registered functions
ns | The namespace prefix of the hook functions |
link | The linkage declaration prefix of the hook |
name | The name of the hook |
args_decl | The declaration of the arguments for the hook |
args_use | The names for the arguments for the hook |
Definition at line 179 of file apr_hooks.h.
#define APR_IMPLEMENT_HOOK_GET_PROTO | ( | ns, | |
link, | |||
name | |||
) | link##_DECLARE(apr_array_header_t *) ns##_hook_get_##name(void) |
macro to return the prototype of the hook function
Definition at line 114 of file apr_hooks.h.
APU_DECLARE | ( | void | ) | const |
Register a hook function to be sorted
szHookName | The name of the Hook the function is registered for |
aHooks | The array which stores all of the functions for this hook |
Sort all of the registerd functions for a given hook
Print all of the information about the current hook. This is used for debugging purposes.
szName | The name of the hook |
aszPre | All of the functions in the predecessor array |
aszSucc | All of the functions in the successor array |
Remove all currently registered functions.
Definition at line 331 of file apr_hooks.h.
APU_DECLARE_DATA const char* apr_hook_debug_current |
The name of the module that is currently registering a function
A global variable to determine if debugging information about the hooks functions should be printed
The global pool used to allocate any memory needed by the hooks.
const char* const* aszPre |
Definition at line 345 of file apr_hooks.h.
const char* const const char* const* aszSucc |
Definition at line 345 of file apr_hooks.h.