Annotation of parser3/src/lib/sdbm/apr-include/apr_pools.h, revision 1.4

1.2       paf         1: /* ====================================================================
                      2:  * The Apache Software License, Version 1.1
                      3:  *
                      4:  * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
                      5:  * reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  *
                     11:  * 1. Redistributions of source code must retain the above copyright
                     12:  *    notice, this list of conditions and the following disclaimer.
                     13:  *
                     14:  * 2. Redistributions in binary form must reproduce the above copyright
                     15:  *    notice, this list of conditions and the following disclaimer in
                     16:  *    the documentation and/or other materials provided with the
                     17:  *    distribution.
                     18:  *
                     19:  * 3. The end-user documentation included with the redistribution,
                     20:  *    if any, must include the following acknowledgment:
                     21:  *       "This product includes software developed by the
                     22:  *        Apache Software Foundation (http://www.apache.org/)."
                     23:  *    Alternately, this acknowledgment may appear in the software itself,
                     24:  *    if and wherever such third-party acknowledgments normally appear.
                     25:  *
                     26:  * 4. The names "Apache" and "Apache Software Foundation" must
                     27:  *    not be used to endorse or promote products derived from this
                     28:  *    software without prior written permission. For written
                     29:  *    permission, please contact apache@apache.org.
                     30:  *
                     31:  * 5. Products derived from this software may not be called "Apache",
                     32:  *    nor may "Apache" appear in their name, without prior written
                     33:  *    permission of the Apache Software Foundation.
                     34:  *
                     35:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
                     36:  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     37:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
                     38:  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
                     39:  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
                     40:  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
                     41:  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
                     42:  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
                     43:  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
                     44:  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
                     45:  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     46:  * SUCH DAMAGE.
                     47:  * ====================================================================
                     48:  *
                     49:  * This software consists of voluntary contributions made by many
                     50:  * individuals on behalf of the Apache Software Foundation.  For more
                     51:  * information on the Apache Software Foundation, please see
                     52:  * <http://www.apache.org/>.
                     53:  */
                     54: 
                     55: #ifndef APR_POOLS_H
                     56: #define APR_POOLS_H
                     57: 
1.4     ! paf        58: #include "apr_errno.h"
        !            59: 
1.2       paf        60: #ifdef __cplusplus
                     61: extern "C" {
                     62: #endif
                     63: 
                     64: /**
                     65:  * @file apr_pools.h
                     66:  * @brief APR memory allocation
                     67:  *
                     68:  * Resource allocation routines...
                     69:  *
                     70:  * designed so that we don't have to keep track of EVERYTHING so that
                     71:  * it can be explicitly freed later (a fundamentally unsound strategy ---
                     72:  * particularly in the presence of die()).
                     73:  *
                     74:  * Instead, we maintain pools, and allocate items (both memory and I/O
                     75:  * handlers) from the pools --- currently there are two, one for per
                     76:  * transaction info, and one for config info.  When a transaction is over,
                     77:  * we can delete everything in the per-transaction apr_pool_t without fear,
                     78:  * and without thinking too hard about it either.
                     79:  */
                     80: 
                     81: typedef void apr_pool_t;
                     82: 
                     83: /*
                     84:  * Cleanup
                     85:  */
                     86: 
                     87: /**
                     88:  * Register a function to be called when a pool is cleared or destroyed
                     89:  * @param p The pool register the cleanup with
                     90:  * @param data The data to pass to the cleanup function.
                     91:  * @param plain_cleanup The function to call when the pool is cleared
                     92:  *                      or destroyed
                     93:  * @param child_cleanup The function to call when a child process is being
                     94:  *                      shutdown - this function is called in the child, obviously!
                     95:  */
                     96: APR_DECLARE(void) apr_pool_cleanup_register(
                     97:     apr_pool_t *p,
                     98:     const void *data,
                     99:     apr_status_t (*plain_cleanup)(void *),
                    100:     apr_status_t (*child_cleanup)(void *));
                    101: /**
                    102:  * An empty cleanup function
                    103:  * @param data The data to cleanup
                    104:  */
                    105: APR_DECLARE_NONSTD(apr_status_t) apr_pool_cleanup_null(void *data);
                    106: 
                    107: /**
                    108:  * Run the specified cleanup function immediately and unregister it. Use
                    109:  * @a data instead of the data that was registered with the cleanup.
                    110:  * @param p The pool remove the cleanup from
                    111:  * @param data The data to remove from cleanup
                    112:  * @param cleanup The function to remove from cleanup
                    113:  */
                    114: APR_DECLARE(apr_status_t) apr_pool_cleanup_run(
                    115:     apr_pool_t *p,
                    116:     void *data,
                    117:     apr_status_t (*cleanup)(void *));
                    118: 
                    119: #ifdef __cplusplus
                    120: }
                    121: #endif
                    122: 
                    123: #endif /* !APR_POOLS_H */

E-mail: