f87189d31692d8780cbf6db598f367a002fcd327
[asterisk/asterisk.git] / include / asterisk / config_pvt.h
1 #ifndef _ASTERISK_CONFIG_PVT_H
2 #define _ASTERISK_CONFIG_PVT_H
3 #if defined(__cplusplus) || defined(c_plusplus)
4 extern "C" {
5 #endif
6
7 #define CONFIG_KEYWORD_STRLEN 128
8 #define CONFIG_KEYWORD_ARRAYLEN 512
9 #include <asterisk/config.h>
10
11 #define MAX_INCLUDE_LEVEL 10
12
13 struct ast_category {
14         char name[80];
15         struct ast_variable *root;
16         struct ast_category *next;
17 #ifdef PRESERVE_COMMENTS
18         struct ast_comment *precomments;
19         struct ast_comment *sameline;
20 #endif  
21 };
22
23 struct ast_config {
24         /* Maybe this structure isn't necessary but we'll keep it
25            for now */
26         struct ast_category *root;
27         struct ast_category *prev;
28 #ifdef PRESERVE_COMMENTS
29         struct ast_comment *trailingcomments;
30 #endif  
31 };
32
33 #ifdef PRESERVE_COMMENTS
34 struct ast_comment_struct
35 {
36         struct ast_comment *root;
37         struct ast_comment *prev;
38 };
39 #endif
40
41 struct ast_category;
42
43 struct ast_config_reg {
44         char name[CONFIG_KEYWORD_STRLEN];
45         struct ast_config *(*func)(char *, struct ast_config *,struct ast_category **,struct ast_variable **,int
46 #ifdef PRESERVE_COMMENTS
47 ,struct ast_comment_struct *
48 #endif
49 );
50         char keywords[CONFIG_KEYWORD_STRLEN][CONFIG_KEYWORD_ARRAYLEN];
51         int keycount;
52         struct ast_config_reg *next;
53 };
54
55
56
57 int ast_config_register(struct ast_config_reg *new);
58 int ast_config_deregister(struct ast_config_reg *del);
59 void ast_cust_config_on(void);
60 void ast_cust_config_off(void);
61 int ast_cust_config_active(void);
62 struct ast_config_reg *get_config_registrations(void);
63 struct ast_config_reg *get_ast_cust_config(char *name);
64 struct ast_config_reg *get_ast_cust_config_keyword(char *name);
65 void ast_config_destroy_all(void);
66
67
68 int ast_category_delete(struct ast_config *cfg, char *category);
69 int ast_variable_delete(struct ast_config *cfg, char *category, char *variable, char *value);
70 int ast_save(char *filename, struct ast_config *cfg, char *generator);
71
72 struct ast_config *ast_new_config(void);
73 struct ast_category *ast_new_category(char *name);
74 struct ast_variable *ast_new_variable(char *name,char *value);
75 int ast_cust_config_register(struct ast_config_reg *new);
76 int ast_cust_config_deregister(struct ast_config_reg *new);
77 int register_config_cli(void);
78 int read_ast_cust_config(void);
79
80
81
82
83 #if defined(__cplusplus) || defined(c_plusplus)
84 }
85 #endif
86
87
88 #endif