xref: /unit/src/nxt_conf.h (revision 116)
129Svbart@nginx.com 
229Svbart@nginx.com /*
329Svbart@nginx.com  * Copyright (C) Igor Sysoev
429Svbart@nginx.com  * Copyright (C) Valentin V. Bartenev
529Svbart@nginx.com  * Copyright (C) NGINX, Inc.
629Svbart@nginx.com  */
729Svbart@nginx.com 
829Svbart@nginx.com #ifndef _NXT_CONF_INCLUDED_
929Svbart@nginx.com #define _NXT_CONF_INCLUDED_
1029Svbart@nginx.com 
1129Svbart@nginx.com 
12*116Svbart@nginx.com #define NXT_CONF_NULL     0x01
13*116Svbart@nginx.com #define NXT_CONF_BOOLEAN  0x02
14*116Svbart@nginx.com #define NXT_CONF_INTEGER  0x04
15*116Svbart@nginx.com #define NXT_CONF_NUMBER   0x08
16*116Svbart@nginx.com #define NXT_CONF_STRING   0x10
17*116Svbart@nginx.com #define NXT_CONF_ARRAY    0x20
18*116Svbart@nginx.com #define NXT_CONF_OBJECT   0x40
19*116Svbart@nginx.com 
20*116Svbart@nginx.com 
21106Svbart@nginx.com typedef struct nxt_conf_value_s  nxt_conf_value_t;
22106Svbart@nginx.com typedef struct nxt_conf_op_s     nxt_conf_op_t;
2329Svbart@nginx.com 
2429Svbart@nginx.com 
2597Svbart@nginx.com typedef enum {
26106Svbart@nginx.com     NXT_CONF_MAP_INT8,
27106Svbart@nginx.com     NXT_CONF_MAP_INT32,
28106Svbart@nginx.com     NXT_CONF_MAP_INT64,
29106Svbart@nginx.com     NXT_CONF_MAP_INT,
30106Svbart@nginx.com     NXT_CONF_MAP_SIZE,
31106Svbart@nginx.com     NXT_CONF_MAP_OFF,
32111Sigor@sysoev.ru     NXT_CONF_MAP_MSEC,
33106Svbart@nginx.com     NXT_CONF_MAP_DOUBLE,
34106Svbart@nginx.com     NXT_CONF_MAP_STR,
35106Svbart@nginx.com     NXT_CONF_MAP_PTR,
36106Svbart@nginx.com } nxt_conf_map_type_t;
3797Svbart@nginx.com 
3897Svbart@nginx.com 
3945Svbart@nginx.com typedef struct {
40106Svbart@nginx.com     nxt_str_t            name;
41106Svbart@nginx.com     nxt_conf_map_type_t  type;
42106Svbart@nginx.com     size_t               offset;
43106Svbart@nginx.com } nxt_conf_map_t;
4497Svbart@nginx.com 
4597Svbart@nginx.com 
4697Svbart@nginx.com typedef struct {
47106Svbart@nginx.com     uint32_t             level;
48106Svbart@nginx.com     uint8_t              more_space;  /* 1 bit. */
4945Svbart@nginx.com } nxt_conf_json_pretty_t;
5045Svbart@nginx.com 
5145Svbart@nginx.com 
52*116Svbart@nginx.com nxt_uint_t nxt_conf_type(nxt_conf_value_t *value);
53*116Svbart@nginx.com 
54106Svbart@nginx.com nxt_conf_value_t *nxt_conf_get_path(nxt_conf_value_t *value, nxt_str_t *path);
55106Svbart@nginx.com nxt_conf_value_t *nxt_conf_get_object_member(nxt_conf_value_t *value,
56106Svbart@nginx.com     nxt_str_t *name, uint32_t *index);
57106Svbart@nginx.com nxt_conf_value_t *nxt_conf_next_object_member(nxt_conf_value_t *value,
58106Svbart@nginx.com     nxt_str_t *name, uint32_t *next);
5951Svbart@nginx.com 
60106Svbart@nginx.com nxt_int_t nxt_conf_map_object(nxt_conf_value_t *value, nxt_conf_map_t *map,
61106Svbart@nginx.com     void *data);
6297Svbart@nginx.com 
63106Svbart@nginx.com nxt_int_t nxt_conf_op_compile(nxt_mp_t *mp, nxt_conf_op_t **ops,
64106Svbart@nginx.com     nxt_conf_value_t *root, nxt_str_t *path, nxt_conf_value_t *value);
65106Svbart@nginx.com nxt_conf_value_t *nxt_conf_clone(nxt_mp_t *mp, nxt_conf_op_t *op,
66106Svbart@nginx.com     nxt_conf_value_t *value);
6751Svbart@nginx.com 
68106Svbart@nginx.com nxt_conf_value_t *nxt_conf_json_parse(nxt_mp_t *mp, u_char *start, u_char *end);
6951Svbart@nginx.com 
70106Svbart@nginx.com #define nxt_conf_json_parse_str(mp, str)                                      \
7191Svbart@nginx.com     nxt_conf_json_parse(mp, (str)->start, (str)->start + (str)->length)
7291Svbart@nginx.com 
73106Svbart@nginx.com size_t nxt_conf_json_length(nxt_conf_value_t *value,
7492Svbart@nginx.com     nxt_conf_json_pretty_t *pretty);
75106Svbart@nginx.com u_char *nxt_conf_json_print(u_char *p, nxt_conf_value_t *value,
7645Svbart@nginx.com     nxt_conf_json_pretty_t *pretty);
7729Svbart@nginx.com 
78*116Svbart@nginx.com nxt_int_t nxt_conf_validate(nxt_conf_value_t *value);
79*116Svbart@nginx.com 
8029Svbart@nginx.com 
8129Svbart@nginx.com #endif /* _NXT_CONF_INCLUDED_ */
82