Annotation of win32/apache22/srclib/apr/include/apr_general.h, revision 1.1

1.1     ! moko        1: /* Licensed to the Apache Software Foundation (ASF) under one or more
        !             2:  * contributor license agreements.  See the NOTICE file distributed with
        !             3:  * this work for additional information regarding copyright ownership.
        !             4:  * The ASF licenses this file to You under the Apache License, Version 2.0
        !             5:  * (the "License"); you may not use this file except in compliance with
        !             6:  * the License.  You may obtain a copy of the License at
        !             7:  *
        !             8:  *     http://www.apache.org/licenses/LICENSE-2.0
        !             9:  *
        !            10:  * Unless required by applicable law or agreed to in writing, software
        !            11:  * distributed under the License is distributed on an "AS IS" BASIS,
        !            12:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        !            13:  * See the License for the specific language governing permissions and
        !            14:  * limitations under the License.
        !            15:  */
        !            16: 
        !            17: #ifndef APR_GENERAL_H
        !            18: #define APR_GENERAL_H
        !            19: 
        !            20: /**
        !            21:  * @file apr_general.h
        !            22:  * This is collection of oddballs that didn't fit anywhere else,
        !            23:  * and might move to more appropriate headers with the release
        !            24:  * of APR 1.0.
        !            25:  * @brief APR Miscellaneous library routines
        !            26:  */
        !            27: 
        !            28: #include "apr.h"
        !            29: #include "apr_pools.h"
        !            30: #include "apr_errno.h"
        !            31: 
        !            32: #if APR_HAVE_SIGNAL_H
        !            33: #include <signal.h>
        !            34: #endif
        !            35: 
        !            36: #ifdef __cplusplus
        !            37: extern "C" {
        !            38: #endif /* __cplusplus */
        !            39: 
        !            40: /**
        !            41:  * @defgroup apr_general Miscellaneous library routines
        !            42:  * @ingroup APR 
        !            43:  * This is collection of oddballs that didn't fit anywhere else,
        !            44:  * and might move to more appropriate headers with the release
        !            45:  * of APR 1.0.
        !            46:  * @{
        !            47:  */
        !            48: 
        !            49: /** FALSE */
        !            50: #ifndef FALSE
        !            51: #define FALSE 0
        !            52: #endif
        !            53: /** TRUE */
        !            54: #ifndef TRUE
        !            55: #define TRUE (!FALSE)
        !            56: #endif
        !            57: 
        !            58: /** a space */
        !            59: #define APR_ASCII_BLANK  '\040'
        !            60: /** a carrige return */
        !            61: #define APR_ASCII_CR     '\015'
        !            62: /** a line feed */
        !            63: #define APR_ASCII_LF     '\012'
        !            64: /** a tab */
        !            65: #define APR_ASCII_TAB    '\011'
        !            66: 
        !            67: /** signal numbers typedef */
        !            68: typedef int               apr_signum_t;
        !            69: 
        !            70: /**
        !            71:  * Finding offsets of elements within structures.
        !            72:  * Taken from the X code... they've sweated portability of this stuff
        !            73:  * so we don't have to.  Sigh...
        !            74:  * @param p_type pointer type name
        !            75:  * @param field  data field within the structure pointed to
        !            76:  * @return offset
        !            77:  */
        !            78: 
        !            79: #if defined(CRAY) || (defined(__arm) && !(defined(LINUX) || defined(__FreeBSD__)))
        !            80: #ifdef __STDC__
        !            81: #define APR_OFFSET(p_type,field) _Offsetof(p_type,field)
        !            82: #else
        !            83: #ifdef CRAY2
        !            84: #define APR_OFFSET(p_type,field) \
        !            85:         (sizeof(int)*((unsigned int)&(((p_type)NULL)->field)))
        !            86: 
        !            87: #else /* !CRAY2 */
        !            88: 
        !            89: #define APR_OFFSET(p_type,field) ((unsigned int)&(((p_type)NULL)->field))
        !            90: 
        !            91: #endif /* !CRAY2 */
        !            92: #endif /* __STDC__ */
        !            93: #else /* ! (CRAY || __arm) */
        !            94: 
        !            95: #define APR_OFFSET(p_type,field) \
        !            96:         ((long) (((char *) (&(((p_type)NULL)->field))) - ((char *) NULL)))
        !            97: 
        !            98: #endif /* !CRAY */
        !            99: 
        !           100: /**
        !           101:  * Finding offsets of elements within structures.
        !           102:  * @param s_type structure type name
        !           103:  * @param field  data field within the structure
        !           104:  * @return offset
        !           105:  */
        !           106: #if defined(offsetof) && !defined(__cplusplus)
        !           107: #define APR_OFFSETOF(s_type,field) offsetof(s_type,field)
        !           108: #else
        !           109: #define APR_OFFSETOF(s_type,field) APR_OFFSET(s_type*,field)
        !           110: #endif
        !           111: 
        !           112: #ifndef DOXYGEN
        !           113: 
        !           114: /* A couple of prototypes for functions in case some platform doesn't 
        !           115:  * have it
        !           116:  */
        !           117: #if (!APR_HAVE_STRCASECMP) && (APR_HAVE_STRICMP) 
        !           118: #define strcasecmp(s1, s2) stricmp(s1, s2)
        !           119: #elif (!APR_HAVE_STRCASECMP)
        !           120: int strcasecmp(const char *a, const char *b);
        !           121: #endif
        !           122: 
        !           123: #if (!APR_HAVE_STRNCASECMP) && (APR_HAVE_STRNICMP)
        !           124: #define strncasecmp(s1, s2, n) strnicmp(s1, s2, n)
        !           125: #elif (!APR_HAVE_STRNCASECMP)
        !           126: int strncasecmp(const char *a, const char *b, size_t n);
        !           127: #endif
        !           128: 
        !           129: #endif
        !           130: 
        !           131: /**
        !           132:  * Alignment macros
        !           133:  */
        !           134: 
        !           135: /* APR_ALIGN() is only to be used to align on a power of 2 boundary */
        !           136: #define APR_ALIGN(size, boundary) \
        !           137:     (((size) + ((boundary) - 1)) & ~((boundary) - 1))
        !           138: 
        !           139: /** Default alignment */
        !           140: #define APR_ALIGN_DEFAULT(size) APR_ALIGN(size, 8)
        !           141: 
        !           142: 
        !           143: /**
        !           144:  * String and memory functions
        !           145:  */
        !           146: 
        !           147: /* APR_STRINGIFY is defined here, and also in apr_release.h, so wrap it */
        !           148: #ifndef APR_STRINGIFY
        !           149: /** Properly quote a value as a string in the C preprocessor */
        !           150: #define APR_STRINGIFY(n) APR_STRINGIFY_HELPER(n)
        !           151: /** Helper macro for APR_STRINGIFY */
        !           152: #define APR_STRINGIFY_HELPER(n) #n
        !           153: #endif
        !           154: 
        !           155: #if (!APR_HAVE_MEMMOVE)
        !           156: #define memmove(a,b,c) bcopy(b,a,c)
        !           157: #endif
        !           158: 
        !           159: #if (!APR_HAVE_MEMCHR)
        !           160: void *memchr(const void *s, int c, size_t n);
        !           161: #endif
        !           162: 
        !           163: /** @} */
        !           164: 
        !           165: /**
        !           166:  * @defgroup apr_library Library initialization and termination
        !           167:  * @{
        !           168:  */
        !           169: 
        !           170: /**
        !           171:  * Setup any APR internal data structures.  This MUST be the first function 
        !           172:  * called for any APR library. It is safe to call apr_initialize several
        !           173:  * times as long as apr_terminate is called the same number of times.
        !           174:  * @remark See apr_app_initialize if this is an application, rather than
        !           175:  * a library consumer of apr.
        !           176:  */
        !           177: APR_DECLARE(apr_status_t) apr_initialize(void);
        !           178: 
        !           179: /**
        !           180:  * Set up an application with normalized argc, argv (and optionally env) in
        !           181:  * order to deal with platform-specific oddities, such as Win32 services,
        !           182:  * code pages and signals.  This must be the first function called for any
        !           183:  * APR program.
        !           184:  * @param argc Pointer to the argc that may be corrected
        !           185:  * @param argv Pointer to the argv that may be corrected
        !           186:  * @param env Pointer to the env that may be corrected, may be NULL
        !           187:  * @remark See apr_initialize if this is a library consumer of apr.
        !           188:  * Otherwise, this call is identical to apr_initialize, and must be closed
        !           189:  * with a call to apr_terminate at the end of program execution.
        !           190:  */
        !           191: APR_DECLARE(apr_status_t) apr_app_initialize(int *argc, 
        !           192:                                              char const * const * *argv, 
        !           193:                                              char const * const * *env);
        !           194: 
        !           195: /**
        !           196:  * Tear down any APR internal data structures which aren't torn down 
        !           197:  * automatically. apr_terminate must be called once for every call to
        !           198:  * apr_initialize() or apr_app_initialize().
        !           199:  * @remark An APR program must call this function at termination once it 
        !           200:  *         has stopped using APR services.  The APR developers suggest using
        !           201:  *         atexit to ensure this is called.  When using APR from a language
        !           202:  *         other than C that has problems with the calling convention, use
        !           203:  *         apr_terminate2() instead.
        !           204:  */
        !           205: APR_DECLARE_NONSTD(void) apr_terminate(void);
        !           206: 
        !           207: /**
        !           208:  * Tear down any APR internal data structures which aren't torn down 
        !           209:  * automatically, same as apr_terminate
        !           210:  * @remark An APR program must call either the apr_terminate or apr_terminate2 
        !           211:  *         function once it it has finished using APR services.  The APR 
        !           212:  *         developers suggest using atexit(apr_terminate) to ensure this is done.
        !           213:  *         apr_terminate2 exists to allow non-c language apps to tear down apr, 
        !           214:  *         while apr_terminate is recommended from c language applications.
        !           215:  */
        !           216: APR_DECLARE(void) apr_terminate2(void);
        !           217: 
        !           218: /** @} */
        !           219: 
        !           220: /**
        !           221:  * @defgroup apr_random Random Functions
        !           222:  * @{
        !           223:  */
        !           224: 
        !           225: #if APR_HAS_RANDOM || defined(DOXYGEN)
        !           226: 
        !           227: /* TODO: I'm not sure this is the best place to put this prototype...*/
        !           228: /**
        !           229:  * Generate random bytes.
        !           230:  * @param buf Buffer to fill with random bytes
        !           231:  * @param length Length of buffer in bytes
        !           232:  */
        !           233: APR_DECLARE(apr_status_t) apr_generate_random_bytes(unsigned char * buf, 
        !           234:                                                     apr_size_t length);
        !           235: 
        !           236: #endif
        !           237: /** @} */
        !           238: 
        !           239: #ifdef __cplusplus
        !           240: }
        !           241: #endif
        !           242: 
        !           243: #endif  /* ! APR_GENERAL_H */

E-mail: