00001
00002
00003
00004
00005 #if !defined(_INCLUDED_SUL_VALUES_H_HEADER__)
00006 #define _INCLUDED_SUL_VALUES_H_HEADER__
00007
00015 typedef enum sul_value_type_e
00016 {
00017 SUL_VT_UNKNOWN = 0,
00018 SUL_VT_EMPTY,
00019 SUL_VT_INTEGER,
00020 SUL_VT_REAL,
00021 SUL_VT_STRING,
00022 SUL_VT_BOOLEAN,
00023 SUL_VT_UINTEGER
00024 } sul_value_type_e;
00025
00030 extern const char *sul_value_type_strings[];
00031
00038 typedef struct sul_vtree_t sul_vtree_t;
00039
00044 typedef struct sul_value_t sul_value_t;
00045 typedef struct sul_value_t sul_vnode_t;
00046
00053 SUL_DECLARE(sul_value_t *)
00054 sul_value_np_get(sul_value_t *tmp);
00055
00061 SUL_DECLARE(sul_value_t *)
00062 sul_value_ep_get(sul_value_t *tmp);
00063
00070 SUL_DECLARE(sul_value_t *)
00071 sul_value_pp_get(sul_value_t *tmp);
00072
00079 SUL_DECLARE(sul_value_t *)
00080 sul_value_cp_get(sul_value_t *tmp);
00081
00087 SUL_DECLARE(sul_value_type_e )
00088 sul_value_type_get(sul_value_t *tmp);
00089
00095 #define sul_value_is_string(tmp) (sul_value_type_get(tmp) == SDV_VT_STRING)
00096
00102 #define sul_value_is_array(tmp) (sul_value_type_get(tmp) == SUL_VT_EMPTY && sul_value_cp_get(tmp) != NULL)
00103
00109 SUL_DECLARE(const char *)
00110 sul_value_key_get(sul_value_t *tmp);
00111
00117 SUL_DECLARE(const char *)
00118 sul_value_path_get(sul_value_t *tmp);
00119
00125 SUL_DECLARE(const char *)
00126 sul_value_string_get(sul_value_t *tmp);
00127
00133 SUL_DECLARE(apr_int32_t)
00134 sul_value_integer_get(sul_value_t *tmp);
00135
00141 SUL_DECLARE(void)
00142 sul_value_integer_set(sul_value_t *tmp, apr_int32_t value);
00143
00149 SUL_DECLARE(apr_uint32_t)
00150 sul_value_uinteger_get(sul_value_t *tmp);
00151
00157 SUL_DECLARE(void)
00158 sul_value_uinteger_set(sul_value_t *tmp, apr_uint32_t value);
00159
00165 SUL_DECLARE(double)
00166 sul_value_real_get(sul_value_t *tmp);
00167
00173 SUL_DECLARE(sul_boolean_t)
00174 sul_value_boolean_get(sul_value_t *tmp);
00175
00183 SUL_DECLARE(sul_error_t *)
00184 sul_vtree_create(sul_vtree_t **tree, apr_pool_t *pool);
00185
00191 SUL_DECLARE(sul_vnode_t *)
00192 sul_vtree_top_get(sul_vtree_t *tree);
00193
00201 SUL_DECLARE(sul_vnode_t *)
00202 sul_vnode_allocate(sul_vtree_t *tree, const char *key,
00203 sul_value_type_e type, apr_pool_t *pool);
00204
00211 SUL_DECLARE(sul_error_t *)
00212 sul_vtree_create_path(sul_vtree_t *tree, sul_vnode_t **node,
00213 sul_vnode_t **lnode, const char *path,
00214 apr_pool_t *pool);
00215
00222 SUL_DECLARE(void)
00223 sul_value_initialize(sul_value_t *sval, const char *key, sul_value_type_e type,
00224 apr_pool_t *pool);
00225
00232 SUL_DECLARE(sul_error_t *)
00233 sul_value_create_blank(sul_value_t **sval, const char *key,
00234 sul_value_type_e type, apr_pool_t *pool);
00235
00242 SUL_DECLARE(sul_error_t *)
00243 sul_value_create_integer(sul_value_t **sval, const char *key,
00244 apr_int32_t value, apr_pool_t *pool);
00245
00252 SUL_DECLARE(sul_error_t *)
00253 sul_value_create_uinteger(sul_value_t **sval, const char *key,
00254 apr_uint32_t value, apr_pool_t *pool);
00255
00262 SUL_DECLARE(sul_error_t *)
00263 sul_value_create_real(sul_value_t **sval, const char *key,
00264 apr_int32_t value, apr_pool_t *pool);
00265
00272 SUL_DECLARE(sul_error_t *)
00273 sul_value_create_string(sul_value_t **sval, const char *key,
00274 const char *value, apr_pool_t *pool);
00275
00282 SUL_DECLARE(sul_error_t *)
00283 sul_value_create_boolean(sul_value_t **sval, const char *key,
00284 sul_boolean_t value, apr_pool_t *pool);
00285
00292 SUL_DECLARE(sul_error_t *)
00293 sul_value_children_find(sul_value_t *sval, sul_value_t **found,
00294 const char *key);
00295
00302 SUL_DECLARE(sul_error_t *)
00303 sul_value_lookup(sul_value_t *sval, sul_value_t **found, const char *path,
00304 apr_pool_t *pool);
00305
00312 SUL_DECLARE(sul_value_t *)
00313 sul_value_append(sul_value_t *sval, sul_value_t *oval);
00314
00321 SUL_DECLARE(sul_value_t *)
00322 sul_value_children_append(sul_value_t *sval, sul_value_t *oval);
00323
00330 SUL_DECLARE(sul_error_t *)
00331 sul_value_printf(sul_value_t *sval, apr_size_t indention,
00332 sul_stringbuf_t *stream, apr_pool_t *pool);
00333
00340 SUL_DECLARE(sul_error_t *)
00341 sul_value_picklev(sul_value_t **rval, sul_value_t *sval, apr_pool_t *pool,
00342 const char *spec, va_list var_args);
00343
00350 SUL_DECLARE(sul_error_t *)
00351 sul_value_pickle(sul_value_t **rval, sul_value_t *sval, apr_pool_t *pool,
00352 const char *spec, ...);
00353
00360 SUL_DECLARE(sul_error_t *)
00361 sul_value_parse_cfg_single(sul_value_t *par, sul_value_t **rval,
00362 sul_cfg_block_t *cfg, apr_pool_t *pool);
00363
00370 SUL_DECLARE(sul_error_t *)
00371 sul_value_parse_cfg_multiple(sul_value_t *par, sul_value_t **rval,
00372 sul_cfg_block_t *cfg, apr_pool_t *pool);
00373
00380 SUL_DECLARE(sul_error_t *)
00381 sul_value_verify_type(sul_value_t *sval, sul_value_type_e type);
00382
00389 SUL_DECLARE(sul_error_t *)
00390 sul_value_lookup_boolean(sul_value_t *sval, const char *path,
00391 sul_boolean_t *value, apr_pool_t *pool,
00392 sul_boolean_t errs);
00393
00400 SUL_DECLARE(sul_error_t *)
00401 sul_value_lookup_string(sul_value_t *sval, const char *path,
00402 const char **value, apr_pool_t *pool,
00403 sul_boolean_t errs);
00404
00411 SUL_DECLARE(sul_error_t *)
00412 sul_value_lookup_integer(sul_value_t *sval, const char *path,
00413 apr_int32_t *value, apr_pool_t *pool,
00414 sul_boolean_t errs);
00415
00422 SUL_DECLARE(sul_error_t *)
00423 sul_value_lookup_real(sul_value_t *sval, const char *path,
00424 double *value, apr_pool_t *pool,
00425 sul_boolean_t errs);
00426
00427
00434 SUL_DECLARE(sul_error_t *)
00435 sul_value_duplicate(sul_value_t *sval, sul_value_t **rval,
00436 apr_pool_t *pool);
00437
00444 typedef struct sul_viter_t
00445 {
00446 sul_value_t *ptr;
00447 struct sul_viter_t *np;
00448 struct sul_viter_t *ep;
00449 } sul_viter_t;
00450
00451 #define sul_viter_np(tmp) ((tmp)->np)
00452 #define sul_viter_ep(tmp) ((tmp)->ep)
00453 #define sul_viter_value(tmp) ((tmp)->ptr)
00454
00461 SUL_DECLARE(sul_error_t *)
00462 sul_value_viter_find(sul_value_t *sval, sul_viter_t **iter, const char *path,
00463 apr_pool_t *pool);
00464
00465 #endif