VLC
2.1.0-git
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
vlc_configuration.h
Go to the documentation of this file.
1
/*****************************************************************************
2
* vlc_configuration.h : configuration management module
3
* This file describes the programming interface for the configuration module.
4
* It includes functions allowing to declare, get or set configuration options.
5
*****************************************************************************
6
* Copyright (C) 1999-2006 VLC authors and VideoLAN
7
* $Id: fe0aba5ca8b9d5bb60afd0ac9027d023b1862f2f $
8
*
9
* Authors: Gildas Bazin <gbazin@videolan.org>
10
*
11
* This program is free software; you can redistribute it and/or modify it
12
* under the terms of the GNU Lesser General Public License as published by
13
* the Free Software Foundation; either version 2.1 of the License, or
14
* (at your option) any later version.
15
*
16
* This program is distributed in the hope that it will be useful,
17
* but WITHOUT ANY WARRANTY; without even the implied warranty of
18
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
* GNU Lesser General Public License for more details.
20
*
21
* You should have received a copy of the GNU Lesser General Public License
22
* along with this program; if not, write to the Free Software Foundation,
23
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
24
*****************************************************************************/
25
26
#ifndef VLC_CONFIGURATION_H
27
#define VLC_CONFIGURATION_H 1
28
29
/**
30
* \file
31
* This file describes the programming interface for the configuration module.
32
* It includes functions allowing to declare, get or set configuration options.
33
*/
34
35
#include <sys/types.h>
/* for ssize_t */
36
37
# ifdef __cplusplus
38
extern
"C"
{
39
# endif
40
41
struct
config_category_t
42
{
43
int
i_id
;
44
const
char
*
psz_name
;
45
const
char
*
psz_help
;
46
};
47
48
typedef
union
49
{
50
char
*psz;
51
int64_t i;
52
float
f;
53
}
module_value_t
;
54
55
typedef
int (*
vlc_string_list_cb
)(
vlc_object_t
*,
const
char
*,
56
char
***,
char
***);
57
typedef
int (*
vlc_integer_list_cb
)(vlc_object_t *,
const
char
*,
58
int64_t **,
char
***);
59
60
struct
module_config_t
61
{
62
uint8_t
i_type
;
/* Configuration type */
63
char
i_short
;
/* Optional short option name */
64
unsigned
b_advanced
:1;
/* Advanced option */
65
unsigned
b_internal
:1;
/* Hidden from prefs and help */
66
unsigned
b_unsaveable
:1;
/* Not stored in configuration */
67
unsigned
b_safe
:1;
/* Safe in web plugins and playlists */
68
unsigned
b_removed
:1;
/* Deprecated */
69
70
char
*
psz_type
;
/* Configuration subtype */
71
char
*
psz_name
;
/* Option name */
72
char
*
psz_text
;
/* Short comment on the configuration option */
73
char
*
psz_longtext
;
/* Long comment on the configuration option */
74
75
module_value_t
value
;
/* Option value */
76
module_value_t
orig
;
77
module_value_t
min
;
78
module_value_t
max
;
79
80
/* Values list */
81
uint16_t
list_count
;
/* Options list size */
82
union
83
{
84
char
**
psz
;
/* List of possible values for the option */
85
int
*
i
;
86
vlc_string_list_cb
psz_cb
;
87
vlc_integer_list_cb
i_cb
;
88
}
list
;
89
char
**
list_text
;
/* Friendly names for list values */
90
};
91
92
/*****************************************************************************
93
* Prototypes - these methods are used to get, set or manipulate configuration
94
* data.
95
*****************************************************************************/
96
VLC_API
int
config_GetType
(vlc_object_t *,
const
char
*)
VLC_USED
;
97
VLC_API
int64_t
config_GetInt
(vlc_object_t *, const
char
*)
VLC_USED
;
98
VLC_API
void
config_PutInt
(vlc_object_t *, const
char
*, int64_t);
99
VLC_API
float
config_GetFloat
(vlc_object_t *, const
char
*) VLC_USED;
100
VLC_API
void
config_PutFloat
(vlc_object_t *, const
char
*,
float
);
101
VLC_API
char
*
config_GetPsz
(vlc_object_t *, const
char
*) VLC_USED
VLC_MALLOC
;
102
VLC_API
void
config_PutPsz
(vlc_object_t *, const
char
*, const
char
*);
103
VLC_API
ssize_t
config_GetIntChoices
(vlc_object_t *, const
char
*,
104
int64_t **,
char
***) VLC_USED;
105
VLC_API
ssize_t
config_GetPszChoices
(vlc_object_t *, const
char
*,
106
char
***,
char
***) VLC_USED;
107
108
VLC_API
int
config_SaveConfigFile
( vlc_object_t * );
109
#define config_SaveConfigFile(a) config_SaveConfigFile(VLC_OBJECT(a))
110
111
VLC_API
void
config_ResetAll
( vlc_object_t * );
112
#define config_ResetAll(a) config_ResetAll(VLC_OBJECT(a))
113
114
VLC_API
module_config_t
*
config_FindConfig
( vlc_object_t *,
const
char
* ) VLC_USED;
115
VLC_API
char
*
config_GetDataDir
(
void
) VLC_USED VLC_MALLOC;
116
VLC_API
char
*
config_GetLibDir
(
void
) VLC_USED;
117
118
typedef enum
vlc_userdir
119
{
120
VLC_HOME_DIR
,
/* User's home */
121
VLC_CONFIG_DIR
,
/* VLC-specific configuration directory */
122
VLC_DATA_DIR
,
/* VLC-specific data directory */
123
VLC_CACHE_DIR
,
/* VLC-specific user cached data directory */
124
/* Generic directories (same as XDG) */
125
VLC_DESKTOP_DIR
=0x80,
126
VLC_DOWNLOAD_DIR
,
127
VLC_TEMPLATES_DIR
,
128
VLC_PUBLICSHARE_DIR
,
129
VLC_DOCUMENTS_DIR
,
130
VLC_MUSIC_DIR
,
131
VLC_PICTURES_DIR
,
132
VLC_VIDEOS_DIR
,
133
}
vlc_userdir_t
;
134
135
VLC_API
char
*
config_GetUserDir
(
vlc_userdir_t
) VLC_USED VLC_MALLOC;
136
137
VLC_API
void
config_AddIntf
( vlc_object_t *, const
char
* );
138
VLC_API
void
config_RemoveIntf
( vlc_object_t *, const
char
* );
139
VLC_API
bool
config_ExistIntf
( vlc_object_t *, const
char
* ) VLC_USED;
140
141
#define config_GetType(a,b) config_GetType(VLC_OBJECT(a),b)
142
#define config_GetInt(a,b) config_GetInt(VLC_OBJECT(a),b)
143
#define config_PutInt(a,b,c) config_PutInt(VLC_OBJECT(a),b,c)
144
#define config_GetFloat(a,b) config_GetFloat(VLC_OBJECT(a),b)
145
#define config_PutFloat(a,b,c) config_PutFloat(VLC_OBJECT(a),b,c)
146
#define config_GetPsz(a,b) config_GetPsz(VLC_OBJECT(a),b)
147
#define config_PutPsz(a,b,c) config_PutPsz(VLC_OBJECT(a),b,c)
148
149
#define config_AddIntf(a,b) config_AddIntf(VLC_OBJECT(a),b)
150
#define config_RemoveIntf(a,b) config_RemoveIntf(VLC_OBJECT(a),b)
151
#define config_ExistIntf(a,b) config_ExistIntf(VLC_OBJECT(a),b)
152
153
/****************************************************************************
154
* config_chain_t:
155
****************************************************************************/
156
struct
config_chain_t
157
{
158
config_chain_t
*
p_next
;
/**< Pointer on the next config_chain_t element */
159
160
char
*
psz_name
;
/**< Option name */
161
char
*
psz_value
;
/**< Option value */
162
};
163
164
/**
165
* This function will
166
* - create all options in the array ppsz_options (var_Create).
167
* - parse the given linked list of config_chain_t and set the value (var_Set).
168
*
169
* The option names will be created by adding the psz_prefix prefix.
170
*/
171
VLC_API
void
config_ChainParse
( vlc_object_t *,
const
char
*psz_prefix,
const
char
*
const
*ppsz_options,
config_chain_t
* );
172
#define config_ChainParse( a, b, c, d ) config_ChainParse( VLC_OBJECT(a), b, c, d )
173
174
/**
175
* This function will parse a configuration string (psz_opts) and
176
* - set all options for this module in a chained list (*pp_cfg)
177
* - returns a pointer on the next module if any.
178
*
179
* The string format is
180
* module{option=*,option=*}
181
*
182
* The options values are unescaped using config_StringUnescape.
183
*/
184
VLC_API
const
char
*
config_ChainParseOptions
(
config_chain_t
**pp_cfg,
const
char
*ppsz_opts );
185
186
/**
187
* This function will parse a configuration string (psz_string) and
188
* - set the module name (*ppsz_name)
189
* - set all options for this module in a chained list (*pp_cfg)
190
* - returns a pointer on the next module if any.
191
*
192
* The string format is
193
* module{option=*,option=*}[:modulenext{option=*,...}]
194
*
195
* The options values are unescaped using config_StringUnescape.
196
*/
197
VLC_API
char
*
config_ChainCreate
(
char
**ppsz_name,
config_chain_t
**pp_cfg,
const
char
*psz_string ) VLC_USED
VLC_MALLOC
;
198
199
/**
200
* This function will release a linked list of config_chain_t
201
* (Including the head)
202
*/
203
VLC_API
void
config_ChainDestroy
(
config_chain_t
* );
204
205
/**
206
* This function will duplicate a linked list of config_chain_t
207
*/
208
VLC_API
config_chain_t
*
config_ChainDuplicate
(
const
config_chain_t
* ) VLC_USED VLC_MALLOC;
209
210
/**
211
* This function will unescape a string in place and will return a pointer on
212
* the given string.
213
* No memory is allocated by it (unlike config_StringEscape).
214
* If NULL is given as parameter nothing will be done (NULL will be returned).
215
*
216
* The following sequences will be unescaped (only one time):
217
* \\ \' and \"
218
*/
219
VLC_API
char
*
config_StringUnescape
(
char
*psz_string );
220
221
/**
222
* This function will escape a string that can be unescaped by
223
* config_StringUnescape.
224
* The returned value is allocated by it. You have to free it once you
225
* do not need it anymore (unlike config_StringUnescape).
226
* If NULL is given as parameter nothing will be done (NULL will be returned).
227
*
228
* The escaped characters are ' " and \
229
*/
230
VLC_API
char
*
config_StringEscape
( const
char
*psz_string ) VLC_USED VLC_MALLOC;
231
232
# ifdef __cplusplus
233
}
234
# endif
235
236
#endif
/* _VLC_CONFIGURATION_H */
Generated by
1.8.1.2