xine-lib: xine-lib-1.2.12/include/xine/configfile.h Source File

xine-lib 1.2.12

configfile.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2000-2020 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
27extern "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;
44 typedef struct config_values_s config_values_t;
45
46 struct cfg_entry_s {
47 cfg_entry_t *next;
48 config_values_t *config;
49
50 char *key;
51 int type;
52
54 int exp_level;
55
57 char *unknown_value;
58
60 char *str_value;
61 char *str_default;
62
64 int num_value;
65 int num_default;
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
79 xine_config_cb_t callback;
80 void *callback_data;
81};
82
83 struct config_values_s {
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
125 int (*register_range) (config_values_t *self,
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
135 int (*register_enum) (config_values_t *self,
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
145 int (*register_num) (config_values_t *self,
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
154 int (*register_bool) (config_values_t *self,
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
201 void (*set_new_entry_callback) (config_values_t *self, xine_config_cb_t new_entry_cb, void *cb_data);
202
206 void (*unset_new_entry_callback) (config_values_t *self);
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
224 cfg_entry_t *first, *last, *cur;
225
229 xine_config_cb_t new_entry_cb;
230 void *new_entry_cbdata;
231
235 pthread_mutex_t config_lock;
236
240 int current_version;
241
249 int (*unregister_callbacks) (config_values_t *self,
250 const char *key, xine_config_cb_t changed_cb, void *cb_data, size_t cb_data_size);
251
255 xine_t *xine;
256
262 char * (*lookup_string)(config_values_t *, const char *key);
263 void (*free_string)(config_values_t *, char **);
264
266 int (*lookup_num)(config_values_t *, const char *key, int def_value);
267};
268
273 config_values_t *_x_config_init (void);
274
280int _x_config_change_opt(config_values_t *config, const char *opt);
281
283void _x_config_unregister_cb_class_d (config_values_t *config, void *callback_data) XINE_PROTECTED;
284void _x_config_unregister_cb_class_p (config_values_t *config, xine_config_cb_t callback) XINE_PROTECTED;
285
286#ifdef __cplusplus
287}
288#endif
289
290#endif
291
_x_config_unregister_cb_class_d
void _x_config_unregister_cb_class_d(config_values_t *config, void *callback_data)
Definition: configfile.c:1960
_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:2326
_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:1970
_x_config_init
config_values_t * _x_config_init(void)
allocate and init a new xine config object
Definition: configfile.c:2270
XINE_PROTECTED
#define XINE_PROTECTED
Definition: attributes.h:75
cfg_entry_s
Definition: configfile.h:46
cfg_entry_s::num_default
int num_default
Definition: configfile.h:65
cfg_entry_s::help
char * help
Definition: configfile.h:76
cfg_entry_s::next
cfg_entry_t * next
Definition: configfile.h:47
cfg_entry_s::range_min
int range_min
Definition: configfile.h:68
cfg_entry_s::description
char * description
Definition: configfile.h:75
cfg_entry_s::enum_values
char ** enum_values
Definition: configfile.h:72
cfg_entry_s::str_default
char * str_default
Definition: configfile.h:61
cfg_entry_s::config
config_values_t * config
Definition: configfile.h:48
cfg_entry_s::callback
xine_config_cb_t callback
Definition: configfile.h:79
cfg_entry_s::range_max
int range_max
Definition: configfile.h:69
cfg_entry_s::type
int type
Definition: configfile.h:51
cfg_entry_s::key
char * key
Definition: configfile.h:50
cfg_entry_s::callback_data
void * callback_data
Definition: configfile.h:80
cfg_entry_s::num_value
int num_value
Definition: configfile.h:64
cfg_entry_s::exp_level
int exp_level
Definition: configfile.h:54
cfg_entry_s::unknown_value
char * unknown_value
Definition: configfile.h:57
cfg_entry_s::str_value
char * str_value
Definition: configfile.h:60
config_values_s
Definition: configfile.h:83
config_values_s::new_entry_cbdata
void * new_entry_cbdata
Definition: configfile.h:230
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::update_num
void(* update_num)(config_values_t *self, const char *key, int value)
Definition: configfile.h:167
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
config_values_s::cur
cfg_entry_t * cur
Definition: configfile.h:224
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
config_values_s::unset_new_entry_callback
void(* unset_new_entry_callback)(config_values_t *self)
Definition: configfile.h:206
config_values_s::lookup_num
int(* lookup_num)(config_values_t *, const char *key, int def_value)
Definition: configfile.h:266
config_values_s::register_entry
void(* register_entry)(config_values_t *self, cfg_entry_t *entry)
Definition: configfile.h:164
config_values_s::dispose
void(* dispose)(config_values_t *self)
Definition: configfile.h:196
config_values_s::unregister_callback
void(* unregister_callback)(config_values_t *self, const char *key)
Definition: configfile.h:191
config_values_s::update_string
void(* update_string)(config_values_t *self, const char *key, const char *value)
Definition: configfile.h:170
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::first
cfg_entry_t * first
Definition: configfile.h:224
config_values_s::free_string
void(* free_string)(config_values_t *, char **)
Definition: configfile.h:263
config_values_s::xine
xine_t * xine
Definition: configfile.h:255
config_values_s::parse_enum
int(* parse_enum)(const char *str, const char **values)
Definition: configfile.h:173
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
config_values_s::current_version
int current_version
Definition: configfile.h:240
config_values_s::new_entry_cb
xine_config_cb_t new_entry_cb
Definition: configfile.h:229
config_values_s::config_lock
pthread_mutex_t config_lock
Definition: configfile.h:235
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
config_values_s::last
cfg_entry_t * last
Definition: configfile.h:224
xine_s
Definition: xine_internal.h:80
xine.h
xine_config_cb_t
void(* xine_config_cb_t)(void *user_data, xine_cfg_entry_t *entry)
Definition: xine.h:1636
key
char key[16]
Definition: xine_speex_decoder.c:94