Annotation of win32/apache22/srclib/apr-util/include/private/apr_dbm_private.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_DBM_PRIVATE_H
        !            18: #define APR_DBM_PRIVATE_H
        !            19: 
        !            20: #include "apr.h"
        !            21: #include "apr_errno.h"
        !            22: #include "apr_pools.h"
        !            23: #include "apr_dbm.h"
        !            24: #include "apr_file_io.h"
        !            25: 
        !            26: #include "apu.h"
        !            27: 
        !            28: /* ### for now, include the DBM selection; this will go away once we start
        !            29:    ### building and linking all of the DBMs at once. */
        !            30: #include "apu_select_dbm.h"
        !            31: 
        !            32: #ifdef __cplusplus
        !            33: extern "C" {
        !            34: #endif
        !            35: 
        !            36: /** @internal */
        !            37: 
        !            38: /**
        !            39:  * Most DBM libraries take a POSIX mode for creating files.  Don't trust
        !            40:  * the mode_t type, some platforms may not support it, int is safe.
        !            41:  */
        !            42: APU_DECLARE(int) apr_posix_perms2mode(apr_fileperms_t perm);
        !            43: 
        !            44: /**
        !            45:  * Structure to describe the operations of the DBM
        !            46:  */
        !            47: typedef struct {
        !            48:     /** The name of the DBM Type */
        !            49:     const char *name;
        !            50: 
        !            51:     /** Open the DBM */
        !            52:     apr_status_t (*open)(apr_dbm_t **pdb, const char *pathname,
        !            53:                          apr_int32_t mode, apr_fileperms_t perm,
        !            54:                          apr_pool_t *pool);
        !            55: 
        !            56:     /** Close the DBM */
        !            57:     void (*close)(apr_dbm_t *dbm);
        !            58: 
        !            59:     /** Fetch a dbm record value by key */
        !            60:     apr_status_t (*fetch)(apr_dbm_t *dbm, apr_datum_t key,
        !            61:                                    apr_datum_t * pvalue);
        !            62: 
        !            63:     /** Store a dbm record value by key */
        !            64:     apr_status_t (*store)(apr_dbm_t *dbm, apr_datum_t key, apr_datum_t value);
        !            65: 
        !            66:     /** Delete a dbm record value by key */
        !            67:     apr_status_t (*del)(apr_dbm_t *dbm, apr_datum_t key);
        !            68: 
        !            69:     /** Search for a key within the dbm */
        !            70:     int (*exists)(apr_dbm_t *dbm, apr_datum_t key);
        !            71: 
        !            72:     /** Retrieve the first record key from a dbm */
        !            73:     apr_status_t (*firstkey)(apr_dbm_t *dbm, apr_datum_t * pkey);
        !            74: 
        !            75:     /** Retrieve the next record key from a dbm */
        !            76:     apr_status_t (*nextkey)(apr_dbm_t *dbm, apr_datum_t * pkey);
        !            77: 
        !            78:     /** Proactively toss any memory associated with the apr_datum_t. */
        !            79:     void (*freedatum)(apr_dbm_t *dbm, apr_datum_t data);
        !            80: 
        !            81:     /** Get the names that the DBM will use for a given pathname. */
        !            82:     void (*getusednames)(apr_pool_t *pool,
        !            83:                          const char *pathname,
        !            84:                          const char **used1,
        !            85:                          const char **used2);
        !            86: 
        !            87: } apr_dbm_type_t;
        !            88: 
        !            89: 
        !            90: /**
        !            91:  * The actual DBM
        !            92:  */
        !            93: struct apr_dbm_t
        !            94: { 
        !            95:     /** Associated pool */
        !            96:     apr_pool_t *pool;
        !            97: 
        !            98:     /** pointer to DB Implementation Specific data */
        !            99:     void *file;
        !           100: 
        !           101:     /** Current integer error code */
        !           102:     int errcode;
        !           103:     /** Current string error code */
        !           104:     const char *errmsg;
        !           105: 
        !           106:     /** the type of DBM */
        !           107:     const apr_dbm_type_t *type;
        !           108: };
        !           109: 
        !           110: 
        !           111: /* Declare all of the DBM provider tables */
        !           112: APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_sdbm;
        !           113: APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_gdbm;
        !           114: APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_ndbm;
        !           115: APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_db;
        !           116: 
        !           117: #ifdef __cplusplus
        !           118: }
        !           119: #endif
        !           120: 
        !           121: #endif /* APR_DBM_PRIVATE_H */

E-mail: