You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by wr...@locus.apache.org on 2000/10/11 19:11:03 UTC

cvs commit: apache-2.0/src/include ap_hooks.h

wrowe       00/10/11 10:11:03

  Modified:    src/include ap_hooks.h
  Log:
    This change is not the same old change.  We declare a new set of
    DECLARE_EXTERNAL_HOOK/IMPLEMENT_EXTERNAL_HOOK macros based on the
    new syntax, but retain the originals _and_ derive them from the more
    complex macro, so that we aren't duplicating code.
  
    Required by mod_dav for it's exported hooks.
  
  Revision  Changes    Path
  1.23      +40 -25    apache-2.0/src/include/ap_hooks.h
  
  Index: ap_hooks.h
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/include/ap_hooks.h,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- ap_hooks.h	2000/08/02 05:25:26	1.22
  +++ ap_hooks.h	2000/10/11 17:11:02	1.23
  @@ -64,11 +64,11 @@
    * @package Apache hooks functions
    */
   
  -#define AP_DECLARE_HOOK(ret,name,args) \
  +#define AP_DECLARE_EXTERNAL_HOOK(link,ret,name,args) \
   typedef ret HOOK_##name args; \
  -API_EXPORT(void) ap_hook_##name(HOOK_##name *pf,const char * const *aszPre, \
  -		         const char * const *aszSucc,int nOrder); \
  -API_EXPORT(ret) ap_run_##name args; \
  +link##_DECLARE(void) ap_hook_##name(HOOK_##name *pf, const char* const* aszPre, \
  +                                    const char * const *aszSucc, int nOrder); \
  +link##_DECLARE(ret) ap_run_##name args; \
   typedef struct _LINK_##name \
       { \
       HOOK_##name *pFunc; \
  @@ -78,15 +78,18 @@
       int nOrder; \
       } LINK_##name;
   
  +#define AP_DECLARE_HOOK(ret,name,args) \
  +AP_DECLARE_EXTERNAL_HOOK(AP,ret,name,args)
  +
   #define AP_HOOK_STRUCT(members) \
   static struct { members } _hooks;
   
   #define AP_HOOK_LINK(name) \
       apr_array_header_t *link_##name;
   
  -#define AP_IMPLEMENT_HOOK_BASE(name) \
  -API_EXPORT(void) ap_hook_##name(HOOK_##name *pf,const char * const *aszPre, \
  -		         const char * const *aszSucc,int nOrder) \
  +#define AP_IMPLEMENT_EXTERNAL_HOOK_BASE(link,name) \
  +link##_DECLARE(void) ap_hook_##name(HOOK_##name *pf,const char * const *aszPre, \
  +                                    const char * const *aszSucc,int nOrder) \
       { \
       LINK_##name *pHook; \
       if(!_hooks.link_##name) \
  @@ -104,14 +107,17 @@
   	ap_show_hook(#name,aszPre,aszSucc); \
       }
   
  +#define AP_IMPLEMENT_HOOK_BASE(name) \
  +AP_IMPLEMENT_EXTERNAL_HOOK_BASE(AP,name)
  +
   /* RUN_ALL runs to the first one to return other than ok or decline
      RUN_FIRST runs to the first one to return other than decline
      VOID runs all
   */
   
  -#define AP_IMPLEMENT_HOOK_VOID(name,args_decl,args_use) \
  -AP_IMPLEMENT_HOOK_BASE(name) \
  -API_EXPORT(void) ap_run_##name args_decl \
  +#define AP_IMPLEMENT_EXTERNAL_HOOK_VOID(link,name,args_decl,args_use) \
  +AP_IMPLEMENT_EXTERNAL_HOOK_BASE(link,name) \
  +link##_DECLARE(void) ap_run_##name args_decl \
       { \
       LINK_##name *pHook; \
       int n; \
  @@ -124,12 +130,15 @@
   	pHook[n].pFunc args_use; \
       }
   
  +#define AP_IMPLEMENT_HOOK_VOID(name,args_decl,args_use) \
  +AP_IMPLEMENT_EXTERNAL_HOOK_VOID(AP,name,args_decl,args_use)
  +
   /* FIXME: note that this returns ok when nothing is run. I suspect it should
      really return decline, but that breaks Apache currently - Ben
   */
  -#define AP_IMPLEMENT_HOOK_RUN_ALL(ret,name,args_decl,args_use,ok,decline) \
  -AP_IMPLEMENT_HOOK_BASE(name) \
  -API_EXPORT(ret) ap_run_##name args_decl \
  +#define AP_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(link,ret,name,args_decl,args_use,ok,decline) \
  +AP_IMPLEMENT_EXTERNAL_HOOK_BASE(link,name) \
  +link##_DECLARE(ret) ap_run_##name args_decl \
       { \
       LINK_##name *pHook; \
       int n; \
  @@ -149,9 +158,12 @@
       return ok; \
       }
   
  -#define AP_IMPLEMENT_HOOK_RUN_FIRST(ret,name,args_decl,args_use,decline) \
  -AP_IMPLEMENT_HOOK_BASE(name) \
  -API_EXPORT(ret) ap_run_##name args_decl \
  +#define AP_IMPLEMENT_HOOK_RUN_ALL(ret,name,args_decl,args_use,ok,decline) \
  +AP_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(AP,ret,name,args_decl,args_use,ok,decline)
  +
  +#define AP_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(link,ret,name,args_decl,args_use,decline) \
  +AP_IMPLEMENT_EXTERNAL_HOOK_BASE(link,name) \
  +link##_DECLARE(ret) ap_run_##name args_decl \
       { \
       LINK_##name *pHook; \
       int n; \
  @@ -171,6 +183,9 @@
       return decline; \
       }
   
  +#define AP_IMPLEMENT_HOOK_RUN_FIRST(ret,name,args_decl,args_use,decline) \
  +AP_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(AP,ret,name,args_decl,args_use,decline)
  +
        /* Hook orderings */
   #define AP_HOOK_REALLY_FIRST	(-10)
   #define AP_HOOK_FIRST		0
  @@ -182,20 +197,20 @@
    * The global pool used to allocate any memory needed by the hooks.
    * @defvar apr_pool_t *ap_global_hook_pool
    */ 
  -extern API_VAR_EXPORT apr_pool_t *ap_global_hook_pool;
  +extern AP_DECLARE_DATA apr_pool_t *ap_global_hook_pool;
   
   /**
    * A global variable to determine if debugging information about the
    * hooks functions should be printed
    * @defvar apr_pool_t *ap_debug_module_hooks
    */ 
  -extern API_VAR_EXPORT int ap_debug_module_hooks;
  +extern AP_DECLARE_DATA int ap_debug_module_hooks;
   
   /**
    * The name of the module that is currently registering a function
    * @defvar apr_pool_t *ap_debug_module_name
    */ 
  -extern API_VAR_EXPORT const char *ap_debug_module_name;
  +extern AP_DECLARE_DATA const char *ap_debug_module_name;
   
   /**
    * Register a hook function to be sorted
  @@ -203,13 +218,13 @@
    * @param aHooks The array which stores all of the functions for this hook
    * @deffunc void ap_hook_sort_register(const char *szHookName, ap_arry_header_t **aHooks)
    */
  -API_EXPORT(void) ap_hook_sort_register(const char *szHookName, 
  -                                      apr_array_header_t **aHooks);
  +AP_DECLARE(void) ap_hook_sort_register(const char *szHookName, 
  +                                       apr_array_header_t **aHooks);
   /**
    * Sort all of the registerd functions for a given hook
    * @deffunc void ap_sort_hooks(void)
    */
  -API_EXPORT(void) ap_sort_hooks(void);
  +AP_DECLARE(void) ap_sort_hooks(void);
   
   /**
    * Print all of the information about the current hook.  This is used for
  @@ -219,13 +234,13 @@
    * @param aszSucc All of the functions in the successor array
    * @deffunc void ap_show_hook(const char *szName, const char *const *aszPre, const char *const *aszSucc)
    */
  -API_EXPORT(void) ap_show_hook(const char *szName,const char * const *aszPre,
  -                             const char * const *aszSucc);
  +AP_DECLARE(void) ap_show_hook(const char *szName,const char * const *aszPre,
  +                              const char * const *aszSucc);
   
   /**
    * Remove all currently registered functions.
    * @deffunc void ap_hook_deregister_all(void)
    */
  -API_EXPORT(void) ap_hook_deregister_all(void);
  +AP_DECLARE(void) ap_hook_deregister_all(void);
   
   #endif /* ndef(AP_HOOKS_H) */
  
  
  

Re: cvs commit: apache-2.0/src/include ap_hooks.h

Posted by Greg Stein <gs...@lyra.org>.
On Wed, Oct 11, 2000 at 12:33:36PM -0500, William A. Rowe, Jr. wrote:
> > wrowe       00/10/11 10:11:03
> > 
> >   Modified:    src/include ap_hooks.h
> >   Log:
> >     This change is not the same old change.  We declare a new set of
> >     DECLARE_EXTERNAL_HOOK/IMPLEMENT_EXTERNAL_HOOK macros based on the
> >     new syntax, but retain the originals _and_ derive them from the more
> >     complex macro, so that we aren't duplicating code.
> >   
> >     Required by mod_dav for it's exported hooks.
> 
> This is what we asked for, correct?

Yup. The only pain is suffered by mod_dav. Nobody else needs to change or
worry about this "funny linkage thing"

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/

RE: cvs commit: apache-2.0/src/include ap_hooks.h

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
> wrowe       00/10/11 10:11:03
> 
>   Modified:    src/include ap_hooks.h
>   Log:
>     This change is not the same old change.  We declare a new set of
>     DECLARE_EXTERNAL_HOOK/IMPLEMENT_EXTERNAL_HOOK macros based on the
>     new syntax, but retain the originals _and_ derive them from the more
>     complex macro, so that we aren't duplicating code.
>   
>     Required by mod_dav for it's exported hooks.

This is what we asked for, correct?