Loading...
Searching...
No Matches
Optional Hook Functions
APR Utility Functions » Hook Functions
Collaboration diagram for Optional Hook Functions:

## Macros

#define | APR_OPTIONAL_HOOK(ns, name, pfn, aszPre, aszSucc, nOrder)
#define | APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(ns, link, ret, name, args_decl, args_use, ok, decline)

## Functions

void | apr_optional_hook_add (const char *szName, void(*pfn)(void), const char *const *aszPre, const char *const *aszSucc, int nOrder)
apr_array_header_t * | apr_optional_hook_get (const char *szName)

## Detailed Description

## Macro Definition Documentation

## APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL

#define APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL | ( |  | ns,
|  |  | link,
|  |  | ret,
|  |  | name,
|  |  | args_decl,
|  |  | args_use,
|  |  | ok,
|  |  | decline
| ) |  |

Value:
link##_DECLARE(ret) ns##_run_##name args_decl \
{ \
ns##_LINK_##name##_t *pHook; \
int n; \
ret rv; \
apr_array_header_t *pHookArray=apr_optional_hook_get(#name); \
\
if(!pHookArray) \
return ok; \
\
pHook=(ns##_LINK_##name##_t *)pHookArray->elts; \
for(n=0 ; n < pHookArray->nelts ; ++n) \
{ \
rv=(pHook[n].pFunc)args_use; \
\
if(rv != ok && rv != decline) \
return rv; \
} \
return ok; \
}

Implement an optional hook that runs until one of the functions returns something other than OK or DECLINE.

Parameters

  ns | The namespace prefix of the hook functions
  link | The linkage declaration prefix of the hook
  ret | The type of the return value of the hook
  ret | The type of the return value 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
  ok | Success value
  decline | Decline value

## APR_OPTIONAL_HOOK

#define APR_OPTIONAL_HOOK | ( |  | ns,
|  |  | name,
|  |  | pfn,
|  |  | aszPre,
|  |  | aszSucc,
|  |  | nOrder
| ) |  |

Value:
do { \
ns##_HOOK_##name##_t *apu__hook = pfn; \
apr_optional_hook_add(#name,(void (*)(void))apu__hook,aszPre, aszSucc, nOrder); \
} while (0)

Hook to an optional hook.

Parameters

  ns | The namespace prefix of the hook functions
  name | The name of the hook
  pfn | A pointer to a function that will be called
  aszPre | a NULL-terminated array of strings that name modules whose hooks should precede this one
  aszSucc | a NULL-terminated array of strings that name modules whose hooks should succeed this one
  nOrder | an integer determining order before honouring aszPre and aszSucc (for example HOOK_MIDDLE)

## Function Documentation

## apr_optional_hook_add()

void apr_optional_hook_add | ( | const char * | szName,
|  | void(*)(void) | pfn,
|  | const char *const * | aszPre,
|  | const char *const * | aszSucc,
|  | int | nOrder
| ) |  |

Function to implement the APR_OPTIONAL_HOOK Macro