root/cherokee/trunk/cherokee/config_node.h

Revision 1878, 3.5 kB (checked in by alo, 4 months ago)

--

Line 
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2
3 /* Cherokee
4  *
5  * Authors:
6  *      Alvaro Lopez Ortega <alvaro@alobbs.com>
7  *
8  * Copyright (C) 2001-2008 Alvaro Lopez Ortega
9  *
10  * This program is free software; you can redistribute it and/or
11  * modify it under the terms of version 2 of the GNU General Public
12  * License as published by the Free Software Foundation.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22  * USA
23  */
24
25 #if !defined (CHEROKEE_INSIDE_CHEROKEE_H) && !defined (CHEROKEE_COMPILATION)
26 # error "Only <cherokee/cherokee.h> can be included directly, this file may disappear or change contents."
27 #endif
28
29 #ifndef CHEROKEE_CONFIG_NODE_H
30 #define CHEROKEE_CONFIG_NODE_H
31
32 #include <cherokee/common.h>
33 #include <cherokee/list.h>
34 #include <cherokee/buffer.h>
35
36 CHEROKEE_BEGIN_DECLS
37
38 typedef struct {
39            cherokee_list_t    entry;
40            cherokee_list_t    child;
41
42            cherokee_buffer_t  key;
43            cherokee_buffer_t  val;
44 } cherokee_config_node_t;
45
46 #define CONFIG_NODE(c) ((cherokee_config_node_t *)(c))
47
48 #define cherokee_config_node_foreach(i,config) \
49         list_for_each (i, &config->child)
50
51 typedef ret_t (* cherokee_config_node_while_func_t) (cherokee_config_node_t *, void *);
52 typedef ret_t (* cherokee_config_node_list_func_t)  (char *, void *);
53
54 ret_t cherokee_config_node_new       (cherokee_config_node_t **conf);
55 ret_t cherokee_config_node_free      (cherokee_config_node_t  *conf);
56 ret_t cherokee_config_node_init      (cherokee_config_node_t  *conf);
57 ret_t cherokee_config_node_mrproper  (cherokee_config_node_t  *conf);
58
59 ret_t cherokee_config_node_add       (cherokee_config_node_t *conf, const char *key, cherokee_buffer_t *val);
60 ret_t cherokee_config_node_add_buf   (cherokee_config_node_t *conf, cherokee_buffer_t *key, cherokee_buffer_t *val);
61
62 ret_t cherokee_config_node_get       (cherokee_config_node_t *conf, const char *key, cherokee_config_node_t **entry);
63 ret_t cherokee_config_node_get_buf   (cherokee_config_node_t *conf, cherokee_buffer_t *key, cherokee_config_node_t **entry);
64
65 ret_t cherokee_config_node_while     (cherokee_config_node_t *conf, cherokee_config_node_while_func_t func, void *data);
66
67 /* Convenience functions: value retrieving
68  */
69 ret_t cherokee_config_node_read       (cherokee_config_node_t *conf, const char *key, cherokee_buffer_t **buf);
70 ret_t cherokee_config_node_copy       (cherokee_config_node_t *conf, const char *key, cherokee_buffer_t  *buf);
71
72 ret_t cherokee_config_node_read_path  (cherokee_config_node_t *conf, const char *key, cherokee_buffer_t **buf);
73 ret_t cherokee_config_node_read_int   (cherokee_config_node_t *conf, const char *key, int *num);
74 ret_t cherokee_config_node_read_long  (cherokee_config_node_t *conf, const char *key, long *num);
75 ret_t cherokee_config_node_read_bool  (cherokee_config_node_t *conf, const char *key, cherokee_boolean_t *val);
76 ret_t cherokee_config_node_read_list  (cherokee_config_node_t *conf, const char *key,
77                                        cherokee_config_node_list_func_t func, void *param);
78
79 ret_t cherokee_config_node_convert_list (cherokee_config_node_t *conf, const char *key, cherokee_list_t *list);
80
81 CHEROKEE_END_DECLS
82
83 #endif /* CHEROKEE_CONFIG_NODE_H */
Note: See TracBrowser for help on using the browser.