home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 November / CMCD1104.ISO / Software / Complet / Apache / apache_2.0.52-win32-x86-no_ssl.msi / Data.Cab / F277253_ap_config.h < prev    next >
C/C++ Source or Header  |  2004-03-17  |  9KB  |  256 lines

  1. /* Copyright 1999-2004 The Apache Software Foundation
  2.  *
  3.  * Licensed under the Apache License, Version 2.0 (the "License");
  4.  * you may not use this file except in compliance with the License.
  5.  * You may obtain a copy of the License at
  6.  *
  7.  *     http://www.apache.org/licenses/LICENSE-2.0
  8.  *
  9.  * Unless required by applicable law or agreed to in writing, software
  10.  * distributed under the License is distributed on an "AS IS" BASIS,
  11.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12.  * See the License for the specific language governing permissions and
  13.  * limitations under the License.
  14.  */
  15.  
  16. #ifndef AP_CONFIG_H
  17. #define AP_CONFIG_H
  18.  
  19. #include "apr.h"
  20. #include "apr_hooks.h"
  21. #include "apr_optional_hooks.h"
  22.  
  23. /**
  24.  * @file ap_config.h
  25.  * @brief Symbol export macros and hook functions
  26.  */
  27.  
  28. /* Although this file doesn't declare any hooks, declare the hook group here */
  29. /** @defgroup hooks Apache Hooks */
  30.  
  31. #ifdef DOXYGEN
  32. /* define these just so doxygen documents them */
  33.  
  34. /**
  35.  * AP_DECLARE_STATIC is defined when including Apache's Core headers,
  36.  * to provide static linkage when the dynamic library may be unavailable.
  37.  *
  38.  * @see AP_DECLARE_EXPORT
  39.  *
  40.  * AP_DECLARE_STATIC and AP_DECLARE_EXPORT are left undefined when
  41.  * including Apache's Core headers, to import and link the symbols from the 
  42.  * dynamic Apache Core library and assure appropriate indirection and calling 
  43.  * conventions at compile time.
  44.  */
  45. # define AP_DECLARE_STATIC
  46. /**
  47.  * AP_DECLARE_EXPORT is defined when building the Apache Core dynamic
  48.  * library, so that all public symbols are exported.
  49.  *
  50.  * @see AP_DECLARE_STATIC
  51.  */
  52. # define AP_DECLARE_EXPORT
  53.  
  54. #endif /* def DOXYGEN */
  55.  
  56. #if !defined(WIN32)
  57. /**
  58.  * Apache Core dso functions are declared with AP_DECLARE(), so they may
  59.  * use the most appropriate calling convention.  Hook functions and other
  60.  * Core functions with variable arguments must use AP_DECLARE_NONSTD().
  61.  * @code
  62.  * AP_DECLARE(rettype) ap_func(args)
  63.  * @endcode
  64.  */
  65. #define AP_DECLARE(type)            type
  66.  
  67. /**
  68.  * Apache Core dso variable argument and hook functions are declared with 
  69.  * AP_DECLARE_NONSTD(), as they must use the C language calling convention.
  70.  * @see AP_DECLARE
  71.  * @code
  72.  * AP_DECLARE_NONSTD(rettype) ap_func(args [...])
  73.  * @endcode
  74.  */
  75. #define AP_DECLARE_NONSTD(type)     type
  76.  
  77. /**
  78.  * Apache Core dso variables are declared with AP_MODULE_DECLARE_DATA.
  79.  * This assures the appropriate indirection is invoked at compile time.
  80.  *
  81.  * @note AP_DECLARE_DATA extern type apr_variable; syntax is required for
  82.  * declarations within headers to properly import the variable.
  83.  * @code
  84.  * AP_DECLARE_DATA type apr_variable
  85.  * @endcode
  86.  */
  87. #define AP_DECLARE_DATA
  88.  
  89. #elif defined(AP_DECLARE_STATIC)
  90. #define AP_DECLARE(type)            type __stdcall
  91. #define AP_DECLARE_NONSTD(type)     type
  92. #define AP_DECLARE_DATA
  93. #elif defined(AP_DECLARE_EXPORT)
  94. #define AP_DECLARE(type)            __declspec(dllexport) type __stdcall
  95. #define AP_DECLARE_NONSTD(type)     __declspec(dllexport) type
  96. #define AP_DECLARE_DATA             __declspec(dllexport)
  97. #else
  98. #define AP_DECLARE(type)            __declspec(dllimport) type __stdcall
  99. #define AP_DECLARE_NONSTD(type)     __declspec(dllimport) type
  100. #define AP_DECLARE_DATA             __declspec(dllimport)
  101. #endif
  102.  
  103. #if !defined(WIN32) || defined(AP_MODULE_DECLARE_STATIC)
  104. /**
  105.  * Declare a dso module's exported module structure as AP_MODULE_DECLARE_DATA.
  106.  *
  107.  * Unless AP_MODULE_DECLARE_STATIC is defined at compile time, symbols 
  108.  * declared with AP_MODULE_DECLARE_DATA are always exported.
  109.  * @code
  110.  * module AP_MODULE_DECLARE_DATA mod_tag
  111.  * @endcode
  112.  */
  113. #if defined(WIN32)
  114. #define AP_MODULE_DECLARE(type)            type __stdcall
  115. #else
  116. #define AP_MODULE_DECLARE(type)            type
  117. #endif
  118. #define AP_MODULE_DECLARE_NONSTD(type)     type
  119. #define AP_MODULE_DECLARE_DATA
  120. #else
  121. /**
  122.  * AP_MODULE_DECLARE_EXPORT is a no-op.  Unless contradicted by the
  123.  * AP_MODULE_DECLARE_STATIC compile-time symbol, it is assumed and defined.
  124.  *
  125.  * The old SHARED_MODULE compile-time symbol is now the default behavior, 
  126.  * so it is no longer referenced anywhere with Apache 2.0.
  127.  */
  128. #define AP_MODULE_DECLARE_EXPORT
  129. #define AP_MODULE_DECLARE(type)          __declspec(dllexport) type __stdcall
  130. #define AP_MODULE_DECLARE_NONSTD(type)   __declspec(dllexport) type
  131. #define AP_MODULE_DECLARE_DATA           __declspec(dllexport)
  132. #endif
  133.  
  134. /**
  135.  * Declare a hook function
  136.  * @param ret The return type of the hook
  137.  * @param name The hook's name (as a literal)
  138.  * @param args The arguments the hook function takes, in brackets.
  139.  */
  140. #define AP_DECLARE_HOOK(ret,name,args) \
  141.     APR_DECLARE_EXTERNAL_HOOK(ap,AP,ret,name,args)
  142.  
  143. /** @internal */
  144. #define AP_IMPLEMENT_HOOK_BASE(name) \
  145.     APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ap,AP,name)
  146.  
  147. /**
  148.  * Implement an Apache core hook that has no return code, and
  149.  * therefore runs all of the registered functions. The implementation
  150.  * is called ap_run_<i>name</i>.
  151.  *
  152.  * @param name The name of the hook
  153.  * @param args_decl The declaration of the arguments for the hook, for example
  154.  * "(int x,void *y)"
  155.  * @param args_use The arguments for the hook as used in a call, for example
  156.  * "(x,y)"
  157.  * @note If IMPLEMENTing a hook that is not linked into the Apache core,
  158.  * (e.g. within a dso) see APR_IMPLEMENT_EXTERNAL_HOOK_VOID.
  159.  */
  160. #define AP_IMPLEMENT_HOOK_VOID(name,args_decl,args_use) \
  161.     APR_IMPLEMENT_EXTERNAL_HOOK_VOID(ap,AP,name,args_decl,args_use)
  162.  
  163. /**
  164.  * Implement an Apache core hook that runs until one of the functions
  165.  * returns something other than ok or decline. That return value is
  166.  * then returned from the hook runner. If the hooks run to completion,
  167.  * then ok is returned. Note that if no hook runs it would probably be
  168.  * more correct to return decline, but this currently does not do
  169.  * so. The implementation is called ap_run_<i>name</i>.
  170.  *
  171.  * @param ret The return type of the hook (and the hook runner)
  172.  * @param name The name of the hook
  173.  * @param args_decl The declaration of the arguments for the hook, for example
  174.  * "(int x,void *y)"
  175.  * @param args_use The arguments for the hook as used in a call, for example
  176.  * "(x,y)"
  177.  * @param ok The "ok" return value
  178.  * @param decline The "decline" return value
  179.  * @return ok, decline or an error.
  180.  * @note If IMPLEMENTing a hook that is not linked into the Apache core,
  181.  * (e.g. within a dso) see APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL.
  182.  */
  183. #define AP_IMPLEMENT_HOOK_RUN_ALL(ret,name,args_decl,args_use,ok,decline) \
  184.     APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ap,AP,ret,name,args_decl, \
  185.                                             args_use,ok,decline)
  186.  
  187. /**
  188.  * Implement a hook that runs until a function returns something other than 
  189.  * decline. If all functions return decline, the hook runner returns decline. 
  190.  * The implementation is called ap_run_<i>name</i>.
  191.  *
  192.  * @param ret The return type of the hook (and the hook runner)
  193.  * @param name The name of the hook
  194.  * @param args_decl The declaration of the arguments for the hook, for example
  195.  * "(int x,void *y)"
  196.  * @param args_use The arguments for the hook as used in a call, for example
  197.  * "(x,y)"
  198.  * @param decline The "decline" return value
  199.  * @return decline or an error.
  200.  * @note If IMPLEMENTing a hook that is not linked into the Apache core
  201.  * (e.g. within a dso) see APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST.
  202.  */
  203. #define AP_IMPLEMENT_HOOK_RUN_FIRST(ret,name,args_decl,args_use,decline) \
  204.     APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(ap,AP,ret,name,args_decl, \
  205.                                               args_use,decline)
  206.  
  207. /* Note that the other optional hook implementations are straightforward but
  208.  * have not yet been needed
  209.  */
  210.  
  211. /**
  212.  * Implement an optional hook. This is exactly the same as a standard hook
  213.  * implementation, except the hook is optional.
  214.  * @see AP_IMPLEMENT_HOOK_RUN_ALL
  215.  */
  216. #define AP_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(ret,name,args_decl,args_use,ok, \
  217.                        decline) \
  218.     APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(ap,AP,ret,name,args_decl, \
  219.                                             args_use,ok,decline)
  220.  
  221. /**
  222.  * Hook an optional hook. Unlike static hooks, this uses a macro instead of a
  223.  * function.
  224.  */
  225. #define AP_OPTIONAL_HOOK(name,fn,pre,succ,order) \
  226.         APR_OPTIONAL_HOOK(ap,name,fn,pre,succ,order)
  227.  
  228. #include "os.h"
  229. #if !defined(WIN32) && !defined(NETWARE)
  230. #include "ap_config_auto.h"
  231. #include "ap_config_layout.h"
  232. #endif
  233. #if defined(NETWARE)
  234. #define AP_NONBLOCK_WHEN_MULTI_LISTEN 1
  235. #endif
  236.  
  237. /* TODO - We need to put OS detection back to make all the following work */
  238.  
  239. #if defined(SUNOS4) || defined(IRIX) || defined(NEXT) || defined(AUX3) \
  240.     || defined (UW) || defined(LYNXOS) || defined(TPF)
  241. /* These systems don't do well with any lingering close code; I don't know
  242.  * why -- manoj */
  243. #define NO_LINGCLOSE
  244. #endif
  245.  
  246. /* If APR has OTHER_CHILD logic, use reliable piped logs. */
  247. #if APR_HAS_OTHER_CHILD
  248. #define AP_HAVE_RELIABLE_PIPED_LOGS TRUE
  249. #endif
  250.  
  251. #if APR_CHARSET_EBCDIC && !defined(APACHE_XLATE)
  252. #define APACHE_XLATE
  253. #endif
  254.  
  255. #endif /* AP_CONFIG_H */
  256.