Main Page | Modules | Data Structures | File List | Data Fields | Globals | Related Pages

apr_tables.h

Go to the documentation of this file.
00001 /* ==================================================================== 00002 * The Apache Software License, Version 1.1 00003 * 00004 * Copyright (c) 2000-2003 The Apache Software Foundation. All rights 00005 * reserved. 00006 * 00007 * Redistribution and use in source and binary forms, with or without 00008 * modification, are permitted provided that the following conditions 00009 * are met: 00010 * 00011 * 1. Redistributions of source code must retain the above copyright 00012 * notice, this list of conditions and the following disclaimer. 00013 * 00014 * 2. Redistributions in binary form must reproduce the above copyright 00015 * notice, this list of conditions and the following disclaimer in 00016 * the documentation and/or other materials provided with the 00017 * distribution. 00018 * 00019 * 3. The end-user documentation included with the redistribution, 00020 * if any, must include the following acknowledgment: 00021 * "This product includes software developed by the 00022 * Apache Software Foundation (http://www.apache.org/)." 00023 * Alternately, this acknowledgment may appear in the software itself, 00024 * if and wherever such third-party acknowledgments normally appear. 00025 * 00026 * 4. The names "Apache" and "Apache Software Foundation" must 00027 * not be used to endorse or promote products derived from this 00028 * software without prior written permission. For written 00029 * permission, please contact apache@apache.org. 00030 * 00031 * 5. Products derived from this software may not be called "Apache", 00032 * nor may "Apache" appear in their name, without prior written 00033 * permission of the Apache Software Foundation. 00034 * 00035 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 00036 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00037 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00038 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 00039 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00040 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 00041 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 00042 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 00043 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00044 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 00045 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00046 * SUCH DAMAGE. 00047 * ==================================================================== 00048 * 00049 * This software consists of voluntary contributions made by many 00050 * individuals on behalf of the Apache Software Foundation. For more 00051 * information on the Apache Software Foundation, please see 00052 * <http://www.apache.org/>. 00053 */ 00054 00055 #ifndef APR_TABLES_H 00056 #define APR_TABLES_H 00057 00063 #include "apr.h" 00064 #include "apr_pools.h" 00065 00066 #if APR_HAVE_STDARG_H 00067 #include <stdarg.h> /* for va_list */ 00068 #endif 00069 00070 #ifdef __cplusplus 00071 extern "C" { 00072 #endif /* __cplusplus */ 00073 00084 typedef struct apr_table_t apr_table_t; 00085 00087 typedef struct apr_array_header_t apr_array_header_t; 00088 00090 struct apr_array_header_t { 00092 apr_pool_t *pool; 00094 int elt_size; 00096 int nelts; 00098 int nalloc; 00100 char *elts; 00101 }; 00102 00106 typedef struct apr_table_entry_t apr_table_entry_t; 00107 00109 struct apr_table_entry_t { 00111 char *key; /* maybe NULL in future; 00112 * check when iterating thru table_elts 00113 */ 00115 char *val; 00116 00118 apr_uint32_t key_checksum; 00119 }; 00120 00126 APR_DECLARE(const apr_array_header_t *) apr_table_elts(const apr_table_t *t); 00127 00133 APR_DECLARE(int) apr_is_empty_table(const apr_table_t *t); 00134 00140 APR_DECLARE(int) apr_is_empty_array(const apr_array_header_t *a); 00141 00149 APR_DECLARE(apr_array_header_t *) apr_array_make(apr_pool_t *p, 00150 int nelts, int elt_size); 00151 00159 APR_DECLARE(void *) apr_array_push(apr_array_header_t *arr); 00160 00167 APR_DECLARE(void *) apr_array_pop(apr_array_header_t *arr); 00168 00175 APR_DECLARE(void) apr_array_cat(apr_array_header_t *dst, 00176 const apr_array_header_t *src); 00177 00187 APR_DECLARE(apr_array_header_t *) apr_array_copy(apr_pool_t *p, 00188 const apr_array_header_t *arr); 00197 APR_DECLARE(apr_array_header_t *) apr_array_copy_hdr(apr_pool_t *p, 00198 const apr_array_header_t *arr); 00199 00207 APR_DECLARE(apr_array_header_t *) apr_array_append(apr_pool_t *p, 00208 const apr_array_header_t *first, 00209 const apr_array_header_t *second); 00210 00222 APR_DECLARE(char *) apr_array_pstrcat(apr_pool_t *p, 00223 const apr_array_header_t *arr, 00224 const char sep); 00225 00233 APR_DECLARE(apr_table_t *) apr_table_make(apr_pool_t *p, int nelts); 00234 00241 APR_DECLARE(apr_table_t *) apr_table_copy(apr_pool_t *p, 00242 const apr_table_t *t); 00243 00248 APR_DECLARE(void) apr_table_clear(apr_table_t *t); 00249 00257 APR_DECLARE(const char *) apr_table_get(const apr_table_t *t, const char *key); 00258 00268 APR_DECLARE(void) apr_table_set(apr_table_t *t, const char *key, 00269 const char *val); 00270 00281 APR_DECLARE(void) apr_table_setn(apr_table_t *t, const char *key, 00282 const char *val); 00283 00289 APR_DECLARE(void) apr_table_unset(apr_table_t *t, const char *key); 00290 00299 APR_DECLARE(void) apr_table_merge(apr_table_t *t, const char *key, 00300 const char *val); 00301 00310 APR_DECLARE(void) apr_table_mergen(apr_table_t *t, const char *key, 00311 const char *val); 00312 00322 APR_DECLARE(void) apr_table_add(apr_table_t *t, const char *key, 00323 const char *val); 00324 00335 APR_DECLARE(void) apr_table_addn(apr_table_t *t, const char *key, 00336 const char *val); 00337 00345 APR_DECLARE(apr_table_t *) apr_table_overlay(apr_pool_t *p, 00346 const apr_table_t *overlay, 00347 const apr_table_t *base); 00348 00359 typedef int (apr_table_do_callback_fn_t)(void *rec, const char *key, 00360 const char *value); 00361 00378 APR_DECLARE_NONSTD(int) apr_table_do(apr_table_do_callback_fn_t *comp, 00379 void *rec, const apr_table_t *t, ...); 00380 00397 APR_DECLARE(int) apr_table_vdo(apr_table_do_callback_fn_t *comp, 00398 void *rec, const apr_table_t *t, va_list vp); 00399 00401 #define APR_OVERLAP_TABLES_SET (0) 00403 #define APR_OVERLAP_TABLES_MERGE (1) 00441 APR_DECLARE(void) apr_table_overlap(apr_table_t *a, const apr_table_t *b, 00442 unsigned flags); 00443 00452 APR_DECLARE(void) apr_table_compress(apr_table_t *t, unsigned flags); 00453 00456 #ifdef __cplusplus 00457 } 00458 #endif 00459 00460 #endif /* ! APR_TABLES_H */

Generated on Wed Sep 1 05:16:36 2004 for Apache Portable Runtime by doxygen 1.3.8