xine-lib  1.2.10
configfile.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2000-2019 the xine project
3  *
4  * This file is part of xine, a free video player.
5  *
6  * xine is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * xine is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19  *
20  * config file management
21  */
22 
23 #ifndef HAVE_CONFIGFILE_H
24 #define HAVE_CONFIGFILE_H
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 #include <pthread.h>
31 
32 #include <xine.h>
33 
34 #define CONFIG_FILE_VERSION 2
35 
40 #define XINE_CONFIG_SECURITY 30
41 
42 
43 typedef struct cfg_entry_s cfg_entry_t;
45 
46 struct cfg_entry_s {
49 
50  char *key;
51  int type;
52 
54  int exp_level;
55 
58 
60  char *str_value;
61  char *str_default;
62 
64  int num_value;
66 
68  int range_min;
69  int range_max; /* also used for enum */
70 
72  char **enum_values;
73 
75  char *description;
76  char *help;
77 
81 };
82 
84 
85  /*
86  * register config values
87  *
88  * these functions return the current value of the
89  * registered item, i.e. the default value if it was
90  * not found in the config file or the current value
91  * from the config file otherwise
92  *
93  * NOTE on callbacks:
94  * - callback shall be safe to run from _any_ thread.
95  * There will be no 2 calls at the same time, though.
96  * - callback shall be safe to call at any time between
97  * entering register_foo (), and leaving unregister_foo ().
98  * - There can be multiple callbacks for the same key.
99  * They will run in no fixed order.
100  * - if cb_data is a real pointer, make sure it points to
101  * valid thread shared memory (malloc'ed or static).
102  * Plain stack variables will not work, and may cause
103  * strange malfunction.
104  */
105 
106  char* (*register_string) (config_values_t *self,
107  const char *key,
108  const char *def_value,
109  const char *description,
110  const char *help,
111  int exp_level,
112  xine_config_cb_t changed_cb,
113  void *cb_data);
114 
115  char* (*register_filename) (config_values_t *self,
116  const char *key,
117  const char *def_value,
118  int req_type,
119  const char *description,
120  const char *help,
121  int exp_level,
122  xine_config_cb_t changed_cb,
123  void *cb_data);
124 
126  const char *key,
127  int def_value,
128  int min, int max,
129  const char *description,
130  const char *help,
131  int exp_level,
132  xine_config_cb_t changed_cb,
133  void *cb_data);
134 
136  const char *key,
137  int def_value,
138  char **values,
139  const char *description,
140  const char *help,
141  int exp_level,
142  xine_config_cb_t changed_cb,
143  void *cb_data);
144 
146  const char *key,
147  int def_value,
148  const char *description,
149  const char *help,
150  int exp_level,
151  xine_config_cb_t changed_cb,
152  void *cb_data);
153 
155  const char *key,
156  int def_value,
157  const char *description,
158  const char *help,
159  int exp_level,
160  xine_config_cb_t changed_cb,
161  void *cb_data);
162 
164  void (*register_entry) (config_values_t *self, cfg_entry_t* entry);
165 
167  void (*update_num) (config_values_t *self, const char *key, int value);
168 
170  void (*update_string) (config_values_t *self, const char *key, const char *value);
171 
173  int (*parse_enum) (const char *str, const char **values);
174 
182  cfg_entry_t* (*lookup_entry) (config_values_t *self, const char *key);
183 
191  void (*unregister_callback) (config_values_t *self, const char *key);
192 
196  void (*dispose) (config_values_t *self);
197 
202 
207 
212  char* (*get_serialized_entry) (config_values_t *self, const char *key);
213 
219  char* (*register_serialized_entry) (config_values_t *self, const char *value);
220 
225 
231 
235  pthread_mutex_t config_lock;
236 
241 
250  const char *key, xine_config_cb_t changed_cb, void *cb_data, size_t cb_data_size);
251 
256 };
257 
263 
269 int _x_config_change_opt(config_values_t *config, const char *opt);
270 
272 void _x_config_unregister_cb_class_d (config_values_t *config, void *callback_data) XINE_PROTECTED;
274 
275 #ifdef __cplusplus
276 }
277 #endif
278 
279 #endif
280 
xine_s
Definition: xine_internal.h:80
cfg_entry_s::callback
xine_config_cb_t callback
Definition: configfile.h:79
config_values_s::set_new_entry_callback
void(* set_new_entry_callback)(config_values_t *self, xine_config_cb_t new_entry_cb, void *cb_data)
Definition: configfile.h:201
config_values_s::current_version
int current_version
Definition: configfile.h:240
config_values_s::parse_enum
int(* parse_enum)(const char *str, const char **values)
Definition: configfile.h:173
key
char key[16]
Definition: xine_speex_decoder.c:94
config_values_s::first
cfg_entry_t * first
Definition: configfile.h:224
config_values_s::new_entry_cb
xine_config_cb_t new_entry_cb
Definition: configfile.h:229
config_values_s::register_entry
void(* register_entry)(config_values_t *self, cfg_entry_t *entry)
Definition: configfile.h:164
config_values_s::register_enum
int(* register_enum)(config_values_t *self, const char *key, int def_value, char **values, const char *description, const char *help, int exp_level, xine_config_cb_t changed_cb, void *cb_data)
Definition: configfile.h:135
config_values_s::unset_new_entry_callback
void(* unset_new_entry_callback)(config_values_t *self)
Definition: configfile.h:206
cfg_entry_s::str_value
char * str_value
Definition: configfile.h:60
_x_config_init
config_values_t * _x_config_init(void)
allocate and init a new xine config object
Definition: configfile.c:2037
cfg_entry_s::str_default
char * str_default
Definition: configfile.h:61
config_values_s::new_entry_cbdata
void * new_entry_cbdata
Definition: configfile.h:230
config_values_s::last
cfg_entry_t * last
Definition: configfile.h:224
cfg_entry_s::key
char * key
Definition: configfile.h:50
config_values_s::cur
cfg_entry_t * cur
Definition: configfile.h:224
config_values_s::register_num
int(* register_num)(config_values_t *self, const char *key, int def_value, const char *description, const char *help, int exp_level, xine_config_cb_t changed_cb, void *cb_data)
Definition: configfile.h:145
xine_config_cb_t
void(* xine_config_cb_t)(void *user_data, xine_cfg_entry_t *entry)
Definition: xine.h:1630
cfg_entry_s::num_value
int num_value
Definition: configfile.h:64
cfg_entry_s::description
char * description
Definition: configfile.h:75
cfg_entry_s::exp_level
int exp_level
Definition: configfile.h:54
cfg_entry_s::config
config_values_t * config
Definition: configfile.h:48
config_values_s
Definition: configfile.h:83
cfg_entry_s::range_max
int range_max
Definition: configfile.h:69
cfg_entry_s::enum_values
char ** enum_values
Definition: configfile.h:72
config_values_s::register_range
int(* register_range)(config_values_t *self, const char *key, int def_value, int min, int max, const char *description, const char *help, int exp_level, xine_config_cb_t changed_cb, void *cb_data)
Definition: configfile.h:125
cfg_entry_s::range_min
int range_min
Definition: configfile.h:68
cfg_entry_s::next
cfg_entry_t * next
Definition: configfile.h:47
config_values_s::xine
xine_t * xine
Definition: configfile.h:255
config_values_s::config_lock
pthread_mutex_t config_lock
Definition: configfile.h:235
cfg_entry_s::type
int type
Definition: configfile.h:51
config_values_s::update_num
void(* update_num)(config_values_t *self, const char *key, int value)
Definition: configfile.h:167
config_values_s::unregister_callback
void(* unregister_callback)(config_values_t *self, const char *key)
Definition: configfile.h:191
_x_config_change_opt
int _x_config_change_opt(config_values_t *config, const char *opt)
interpret stream_setup part of mrls for config value changes
Definition: configfile.c:2087
config_values_s::unregister_callbacks
int(* unregister_callbacks)(config_values_t *self, const char *key, xine_config_cb_t changed_cb, void *cb_data, size_t cb_data_size)
Definition: configfile.h:249
_x_config_unregister_cb_class_p
void _x_config_unregister_cb_class_p(config_values_t *config, xine_config_cb_t callback)
Definition: configfile.c:1758
cfg_entry_s::num_default
int num_default
Definition: configfile.h:65
cfg_entry_s::unknown_value
char * unknown_value
Definition: configfile.h:57
XINE_PROTECTED
#define XINE_PROTECTED
Definition: attributes.h:73
cfg_entry_s::help
char * help
Definition: configfile.h:76
config_values_s::update_string
void(* update_string)(config_values_t *self, const char *key, const char *value)
Definition: configfile.h:170
cfg_entry_s
Definition: configfile.h:46
config_values_s::dispose
void(* dispose)(config_values_t *self)
Definition: configfile.h:196
_x_config_unregister_cb_class_d
void _x_config_unregister_cb_class_d(config_values_t *config, void *callback_data)
Definition: configfile.c:1748
cfg_entry_s::callback_data
void * callback_data
Definition: configfile.h:80
xine.h
config_values_s::register_bool
int(* register_bool)(config_values_t *self, const char *key, int def_value, const char *description, const char *help, int exp_level, xine_config_cb_t changed_cb, void *cb_data)
Definition: configfile.h:154