Mercurial > mplayer.hg
annotate m_option.h @ 34929:c410ef9752a0
Initialize a few more AVFrame fields to avoid FFmpeg errors.
However this really needs to be done via FFmpeg somehow to avoid
issues each time new fields are added, either by exposing
ff_init_buffer_info as public API or by calling get_buffer etc.
through wrappers that take care of the initialization.
author | reimar |
---|---|
date | Sat, 14 Jul 2012 11:37:22 +0000 |
parents | 1495455e6d22 |
children | 97446d4850cc |
rev | line source |
---|---|
30429
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
1 /* |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
2 * This file is part of MPlayer. |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
3 * |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
4 * MPlayer is free software; you can redistribute it and/or modify |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
6 * the Free Software Foundation; either version 2 of the License, or |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
7 * (at your option) any later version. |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
8 * |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
9 * MPlayer is distributed in the hope that it will be useful, |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
12 * GNU General Public License for more details. |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
13 * |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
14 * You should have received a copy of the GNU General Public License along |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
17 */ |
c1a3f1bbba26
Add license header to all top-level files missing them.
diego
parents:
29263
diff
changeset
|
18 |
26029 | 19 #ifndef MPLAYER_M_OPTION_H |
20 #define MPLAYER_M_OPTION_H | |
8164 | 21 |
26131
83c95bd31aab
Add necessary #includes to pass 'make checkheaders'.
diego
parents:
26029
diff
changeset
|
22 #include <string.h> |
83c95bd31aab
Add necessary #includes to pass 'make checkheaders'.
diego
parents:
26029
diff
changeset
|
23 |
34200
87a1b3a11b33
Fix a bunch of Doxygen syntax errors that caused warnings.
diego
parents:
34169
diff
changeset
|
24 /// \defgroup options Options |
18283 | 25 /// m_option allows to parse, print and copy data of various types. |
18258 | 26 /// It is the base of the \ref OptionsStruct, \ref Config and |
27 /// \ref Properties APIs. | |
28 ///@{ | |
29 | |
33882 | 30 /// \file |
18258 | 31 |
32 /// \ingroup OptionTypes | |
8164 | 33 typedef struct m_option_type m_option_type_t; |
34 typedef struct m_option m_option_t; | |
9793 | 35 struct m_struct_st; |
8164 | 36 |
18258 | 37 /// \defgroup OptionTypes Options types |
38 /// \ingroup Options | |
39 ///@{ | |
40 | |
8164 | 41 ///////////////////////////// Options types declarations //////////////////////////// |
42 | |
43 // Simple types | |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
44 extern const m_option_type_t m_option_type_flag; |
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
45 extern const m_option_type_t m_option_type_int; |
28759
af274aef6b81
Add a 64 bit integer type to the suboption parser.
reimar
parents:
26408
diff
changeset
|
46 extern const m_option_type_t m_option_type_int64; |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
47 extern const m_option_type_t m_option_type_float; |
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
48 extern const m_option_type_t m_option_type_double; |
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
49 extern const m_option_type_t m_option_type_string; |
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
50 extern const m_option_type_t m_option_type_string_list; |
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
51 extern const m_option_type_t m_option_type_position; |
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
52 extern const m_option_type_t m_option_type_time; |
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
53 extern const m_option_type_t m_option_type_time_size; |
8164 | 54 |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
55 extern const m_option_type_t m_option_type_print; |
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
56 extern const m_option_type_t m_option_type_print_indirect; |
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
57 extern const m_option_type_t m_option_type_print_func; |
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
58 extern const m_option_type_t m_option_type_subconfig; |
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
59 extern const m_option_type_t m_option_type_imgfmt; |
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
60 extern const m_option_type_t m_option_type_afmt; |
8164 | 61 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
62 // Func-based types |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
63 extern const m_option_type_t m_option_type_func_full; |
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
64 extern const m_option_type_t m_option_type_func_param; |
34169 | 65 extern const m_option_type_t m_option_type_func_param_immediate; |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
66 extern const m_option_type_t m_option_type_func; |
8164 | 67 |
18258 | 68 /// Callback used to reset func options. |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
69 typedef void (*m_opt_default_func_t)(const m_option_t *, const char*); |
18258 | 70 |
71 /// Callback used by m_option_type_func_full options. | |
30695
a26f6577d338
Make more option-parsing related function arguments const.
reimar
parents:
30429
diff
changeset
|
72 typedef int (*m_opt_func_full_t)(const m_option_t *, const char *, const char *); |
18258 | 73 |
74 /// Callback used by m_option_type_func_param options. | |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
75 typedef int (*m_opt_func_param_t)(const m_option_t *, const char *); |
18258 | 76 |
77 /// Callback used by m_option_type_func options. | |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
78 typedef int (*m_opt_func_t)(const m_option_t *); |
18258 | 79 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
80 // Backwards compatibility |
8164 | 81 typedef m_opt_default_func_t cfg_default_func_t; |
82 typedef m_opt_func_full_t cfg_func_arg_param_t; | |
83 typedef m_opt_func_param_t cfg_func_param_t; | |
84 typedef m_opt_func_t cfg_func_t; | |
85 | |
19973
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19053
diff
changeset
|
86 #define END_AT_NONE 0 |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19053
diff
changeset
|
87 #define END_AT_TIME 1 |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19053
diff
changeset
|
88 #define END_AT_SIZE 2 |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19053
diff
changeset
|
89 typedef struct { |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19053
diff
changeset
|
90 double pos; |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19053
diff
changeset
|
91 int type; |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19053
diff
changeset
|
92 } m_time_size_t; |
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19053
diff
changeset
|
93 |
18258 | 94 /// Extra definition needed for \ref m_option_type_obj_settings_list options. |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
95 typedef struct { |
18258 | 96 /// Pointer to an array of pointer to some object type description struct. |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
97 void** list; |
18258 | 98 /// Offset of the object type name (char*) in the description struct. |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
99 void* name_off; |
18258 | 100 /// Offset of the object type info string (char*) in the description struct. |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
101 void* info_off; |
18258 | 102 /// \brief Offset of the object type parameter description (\ref m_struct_st) |
103 /// in the description struct. | |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
104 void* desc_off; |
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
105 } m_obj_list_t; |
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
106 |
18258 | 107 /// The data type used by \ref m_option_type_obj_settings_list. |
108 typedef struct m_obj_settings { | |
109 /// Type of the object. | |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
110 char* name; |
18258 | 111 /// NULL terminated array of parameter/value pairs. |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
112 char** attribs; |
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
113 } m_obj_settings_t; |
18258 | 114 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
115 /// A parser to set up a list of objects. |
18283 | 116 /** It creates a NULL terminated array \ref m_obj_settings. The option priv |
18258 | 117 * field (\ref m_option::priv) must point to a \ref m_obj_list_t describing |
118 * the available object types. | |
119 */ | |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
120 extern const m_option_type_t m_option_type_obj_settings_list; |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
121 |
18258 | 122 /// Extra definition needed for \ref m_option_type_obj_presets options. |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
123 typedef struct { |
18258 | 124 /// Description of the struct holding the presets. |
9791
c5b63e88253d
Fix some 10L typo in header (m_struct_s instead of m_struct_st).
albeu
parents:
9593
diff
changeset
|
125 struct m_struct_st* in_desc; |
18258 | 126 /// Description of the struct that should be set by the presets. |
9791
c5b63e88253d
Fix some 10L typo in header (m_struct_s instead of m_struct_st).
albeu
parents:
9593
diff
changeset
|
127 struct m_struct_st* out_desc; |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
128 /// Pointer to an array of structs defining the various presets. |
18258 | 129 void* presets; |
130 /// Offset of the preset's name inside the in_struct. | |
131 void* name_off; | |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
132 } m_obj_presets_t; |
18258 | 133 |
134 /// Set several fields in a struct at once. | |
18283 | 135 /** For this two struct descriptions are used. One for the struct holding the |
18258 | 136 * preset and one for the struct beeing set. Every field present in both |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
137 * structs will be copied from the preset struct to the destination one. |
18258 | 138 * The option priv field (\ref m_option::priv) must point to a correctly |
139 * filled \ref m_obj_presets_t. | |
140 */ | |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
141 extern const m_option_type_t m_option_type_obj_presets; |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
142 |
18258 | 143 /// Parse an URL into a struct. |
144 /** The option priv field (\ref m_option::priv) must point to a | |
145 * \ref m_struct_st describing which fields of the URL must be used. | |
146 */ | |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
147 extern const m_option_type_t m_option_type_custom_url; |
9791
c5b63e88253d
Fix some 10L typo in header (m_struct_s instead of m_struct_st).
albeu
parents:
9593
diff
changeset
|
148 |
18258 | 149 /// Extra definition needed for \ref m_option_type_obj_params options. |
9791
c5b63e88253d
Fix some 10L typo in header (m_struct_s instead of m_struct_st).
albeu
parents:
9593
diff
changeset
|
150 typedef struct { |
18283 | 151 /// Field descriptions. |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
152 const struct m_struct_st* desc; |
18258 | 153 /// Field separator to use. |
154 char separator; | |
9791
c5b63e88253d
Fix some 10L typo in header (m_struct_s instead of m_struct_st).
albeu
parents:
9593
diff
changeset
|
155 } m_obj_params_t; |
18258 | 156 |
157 /// Parse a set of parameters. | |
158 /** Parameters are separated by the given separator and each one | |
18283 | 159 * successively sets a field from the struct. The option priv field |
18258 | 160 * (\ref m_option::priv) must point to a \ref m_obj_params_t. |
161 */ | |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
162 extern const m_option_type_t m_option_type_obj_params; |
9791
c5b63e88253d
Fix some 10L typo in header (m_struct_s instead of m_struct_st).
albeu
parents:
9593
diff
changeset
|
163 |
c5b63e88253d
Fix some 10L typo in header (m_struct_s instead of m_struct_st).
albeu
parents:
9593
diff
changeset
|
164 typedef struct { |
c5b63e88253d
Fix some 10L typo in header (m_struct_s instead of m_struct_st).
albeu
parents:
9593
diff
changeset
|
165 int start; |
c5b63e88253d
Fix some 10L typo in header (m_struct_s instead of m_struct_st).
albeu
parents:
9593
diff
changeset
|
166 int end; |
c5b63e88253d
Fix some 10L typo in header (m_struct_s instead of m_struct_st).
albeu
parents:
9593
diff
changeset
|
167 } m_span_t; |
18258 | 168 /// Ready made settings to parse a \ref m_span_t with a start-end syntax. |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
169 extern const m_obj_params_t m_span_params_def; |
9791
c5b63e88253d
Fix some 10L typo in header (m_struct_s instead of m_struct_st).
albeu
parents:
9593
diff
changeset
|
170 |
c5b63e88253d
Fix some 10L typo in header (m_struct_s instead of m_struct_st).
albeu
parents:
9593
diff
changeset
|
171 |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
172 // FIXME: backward compatibility |
8164 | 173 #define CONF_TYPE_FLAG (&m_option_type_flag) |
174 #define CONF_TYPE_INT (&m_option_type_int) | |
28759
af274aef6b81
Add a 64 bit integer type to the suboption parser.
reimar
parents:
26408
diff
changeset
|
175 #define CONF_TYPE_INT64 (&m_option_type_int64) |
8164 | 176 #define CONF_TYPE_FLOAT (&m_option_type_float) |
11947 | 177 #define CONF_TYPE_DOUBLE (&m_option_type_double) |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
178 #define CONF_TYPE_STRING (&m_option_type_string) |
8164 | 179 #define CONF_TYPE_FUNC (&m_option_type_func) |
180 #define CONF_TYPE_FUNC_PARAM (&m_option_type_func_param) | |
34169 | 181 #define CONF_TYPE_FUNC_PARAM_IMMEDIATE (&m_option_type_func_param_immediate) |
8164 | 182 #define CONF_TYPE_PRINT (&m_option_type_print) |
8736 | 183 #define CONF_TYPE_PRINT_INDIRECT (&m_option_type_print_indirect) |
17470
21123e349463
New option type to print help text with a function.
albeu
parents:
17456
diff
changeset
|
184 #define CONF_TYPE_PRINT_FUNC (&m_option_type_print_func) |
8164 | 185 #define CONF_TYPE_FUNC_FULL (&m_option_type_func_full) |
186 #define CONF_TYPE_SUBCONFIG (&m_option_type_subconfig) | |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
187 #define CONF_TYPE_STRING_LIST (&m_option_type_string_list) |
8164 | 188 #define CONF_TYPE_POSITION (&m_option_type_position) |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
189 #define CONF_TYPE_IMGFMT (&m_option_type_imgfmt) |
14246 | 190 #define CONF_TYPE_AFMT (&m_option_type_afmt) |
8164 | 191 #define CONF_TYPE_SPAN (&m_option_type_span) |
9593
e9a2af584986
Add the new -vf option wich is the same as vop in reverse order.
albeu
parents:
8736
diff
changeset
|
192 #define CONF_TYPE_OBJ_SETTINGS_LIST (&m_option_type_obj_settings_list) |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
193 #define CONF_TYPE_OBJ_PRESETS (&m_option_type_obj_presets) |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
194 #define CONF_TYPE_CUSTOM_URL (&m_option_type_custom_url) |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
195 #define CONF_TYPE_OBJ_PARAMS (&m_option_type_obj_params) |
22312 | 196 #define CONF_TYPE_TIME (&m_option_type_time) |
19973
02a18c52a42a
after a long time, finally i could add -endpos option to mplayer executable.
ptt
parents:
19053
diff
changeset
|
197 #define CONF_TYPE_TIME_SIZE (&m_option_type_time_size) |
8164 | 198 |
199 ///////////////////////////////////////////////////////////////////////////////////////////// | |
200 | |
18258 | 201 /// Option type description |
8164 | 202 struct m_option_type { |
30695
a26f6577d338
Make more option-parsing related function arguments const.
reimar
parents:
30429
diff
changeset
|
203 const char* name; |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
204 /// Syntax description, etc |
30695
a26f6577d338
Make more option-parsing related function arguments const.
reimar
parents:
30429
diff
changeset
|
205 const char* comments; |
18258 | 206 /// Size needed for the data. |
207 unsigned int size; | |
208 /// See \ref OptionTypeFlags. | |
8164 | 209 unsigned int flags; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28759
diff
changeset
|
210 |
18258 | 211 /// Parse the data from a string. |
212 /** It is the only required function, all others can be NULL. | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28759
diff
changeset
|
213 * |
18258 | 214 * \param opt The option that is parsed. |
215 * \param name The full option name. | |
216 * \param param The parameter to parse. | |
18283 | 217 * \param dst Pointer to the memory where the data should be written. |
18258 | 218 * If NULL the parameter validity should still be checked. |
219 * \param src Source of the option, see \ref OptionParserModes. | |
18283 | 220 * \return On error a negative value is returned, on success the number of arguments |
18258 | 221 * consumed. For details see \ref OptionParserReturn. |
222 */ | |
30695
a26f6577d338
Make more option-parsing related function arguments const.
reimar
parents:
30429
diff
changeset
|
223 int (*parse)(const m_option_t* opt,const char *name, const char *param, void* dst, int src); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28759
diff
changeset
|
224 |
18258 | 225 /// Print back a value in string form. |
226 /** \param opt The option to print. | |
227 * \param val Pointer to the memory holding the data to be printed. | |
228 * \return An allocated string containing the text value or (void*)-1 | |
229 * on error. | |
230 */ | |
25229
4f611a555224
Option print functions may not and do not modify value
reimar
parents:
24966
diff
changeset
|
231 char* (*print)(const m_option_t* opt, const void* val); |
8164 | 232 |
18258 | 233 /** \name |
234 * These functions are called to save/set/restore the status of the | |
18283 | 235 * variables. The difference between the 3 only matters for types like |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
236 * \ref m_option_type_func where 'setting' needs to do more than just |
18258 | 237 * copying some data. |
238 */ | |
239 //@{ | |
240 | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
241 /// Update a save slot (dst) from the current value in the program (src). |
18258 | 242 /** \param opt The option to copy. |
243 * \param dst Pointer to the destination memory. | |
244 * \param src Pointer to the source memory. | |
245 */ | |
30695
a26f6577d338
Make more option-parsing related function arguments const.
reimar
parents:
30429
diff
changeset
|
246 void (*save)(const m_option_t* opt,void* dst, const void* src); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28759
diff
changeset
|
247 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
248 /// Set the value in the program (dst) from a save slot. |
18258 | 249 /** \param opt The option to copy. |
250 * \param dst Pointer to the destination memory. | |
251 * \param src Pointer to the source memory. | |
252 */ | |
30695
a26f6577d338
Make more option-parsing related function arguments const.
reimar
parents:
30429
diff
changeset
|
253 void (*set)(const m_option_t* opt,void* dst, const void* src); |
18258 | 254 |
255 /// Copy the data between two save slots. If NULL and size is > 0 a memcpy will be used. | |
256 /** \param opt The option to copy. | |
257 * \param dst Pointer to the destination memory. | |
258 * \param src Pointer to the source memory. | |
259 */ | |
30695
a26f6577d338
Make more option-parsing related function arguments const.
reimar
parents:
30429
diff
changeset
|
260 void (*copy)(const m_option_t* opt,void* dst, const void* src); |
18258 | 261 //@} |
262 | |
263 /// Free the data allocated for a save slot. | |
264 /** This is only needed for dynamic types like strings. | |
265 * \param dst Pointer to the data, usually a pointer that should be freed and | |
266 * set to NULL. | |
267 */ | |
8164 | 268 void (*free)(void* dst); |
269 }; | |
270 | |
18258 | 271 ///@} |
272 | |
273 /// Option description | |
274 /** \ingroup Options | |
275 */ | |
8164 | 276 struct m_option { |
18258 | 277 /// Option name. |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
278 const char *name; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28759
diff
changeset
|
279 |
18258 | 280 /// Reserved for higher level APIs, it shouldn't be used by parsers. |
281 /** The suboption parser and func types do use it. They should instead | |
18283 | 282 * use the priv field but this was inherited from older versions of the |
18258 | 283 * config code. |
284 */ | |
30954 | 285 void *p; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28759
diff
changeset
|
286 |
18258 | 287 /// Option type. |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
288 const m_option_type_t* type; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28759
diff
changeset
|
289 |
18258 | 290 /// See \ref OptionFlags. |
8164 | 291 unsigned int flags; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28759
diff
changeset
|
292 |
18283 | 293 /// \brief Mostly useful for numeric types, the \ref M_OPT_MIN flags must |
18258 | 294 /// also be set. |
295 double min; | |
296 | |
18283 | 297 /// \brief Mostly useful for numeric types, the \ref M_OPT_MAX flags must |
18258 | 298 /// also be set. |
299 double max; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28759
diff
changeset
|
300 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
301 /// Type dependent data (for all kinds of extended settings). |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
302 /** This used to be a function pointer to hold a 'reverse to defaults' func. |
18258 | 303 * Now it can be used to pass any type of extra args needed by the parser. |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
304 * Passing a 'default func' is still valid for all func based option types. |
18258 | 305 */ |
306 void* priv; | |
8164 | 307 }; |
308 | |
309 | |
34149 | 310 /// \defgroup PrivFlags Private data |
311 /// @{ | |
312 /// Don't exit after printing a CONF_TYPE_PRINT option. | |
313 #define PRIV_NO_EXIT (void *)-1 | |
314 ///@} | |
315 | |
18258 | 316 /// \defgroup OptionFlags Option flags |
317 ///@{ | |
8164 | 318 |
18283 | 319 /// The option has a minimum set in \ref m_option::min. |
8164 | 320 #define M_OPT_MIN (1<<0) |
18258 | 321 |
18283 | 322 /// The option has a maximum set in \ref m_option::max. |
8164 | 323 #define M_OPT_MAX (1<<1) |
18258 | 324 |
18283 | 325 /// The option has a minimum and maximum in \ref m_option::min and \ref m_option::max. |
8164 | 326 #define M_OPT_RANGE (M_OPT_MIN|M_OPT_MAX) |
18258 | 327 |
328 /// The option is forbidden in config files. | |
8164 | 329 #define M_OPT_NOCFG (1<<2) |
18258 | 330 |
18283 | 331 /// The option is forbidden on the command line. |
8164 | 332 #define M_OPT_NOCMD (1<<3) |
18258 | 333 |
334 /// The option is global in the \ref Config. | |
335 /** It won't be saved on push and the command line parser will set it when | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
336 * it's parsed (i.e. it won't be set later) |
18258 | 337 * e.g options : -v, -quiet |
338 */ | |
8164 | 339 #define M_OPT_GLOBAL (1<<4) |
18258 | 340 |
341 /// The \ref Config won't save this option on push. | |
18283 | 342 /** It won't be saved on push but the command line parser will add it with |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
343 * its entry (i.e. it may be set later) |
18258 | 344 * e.g options : -include |
345 */ | |
8164 | 346 #define M_OPT_NOSAVE (1<<5) |
18258 | 347 |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
348 /// \brief The \ref Config will emulate the old behavior by pushing the |
18258 | 349 /// option only if it was set by the user. |
8164 | 350 #define M_OPT_OLD (1<<6) |
351 | |
26408
7a36d5941fd8
Replace the trivial command line preparser with a more robust version
albeu
parents:
26131
diff
changeset
|
352 /// The option should be set during command line pre-parsing |
7a36d5941fd8
Replace the trivial command line preparser with a more robust version
albeu
parents:
26131
diff
changeset
|
353 #define M_OPT_PRE_PARSE (1<<7) |
7a36d5941fd8
Replace the trivial command line preparser with a more robust version
albeu
parents:
26131
diff
changeset
|
354 |
18258 | 355 /// \defgroup OldOptionFlags Backward compatibility |
356 /// | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
357 /// These are kept for compatibility with older code. |
18258 | 358 /// @{ |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
359 #define CONF_MIN M_OPT_MIN |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
360 #define CONF_MAX M_OPT_MAX |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
361 #define CONF_RANGE M_OPT_RANGE |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
362 #define CONF_NOCFG M_OPT_NOCFG |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
363 #define CONF_NOCMD M_OPT_NOCMD |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
364 #define CONF_GLOBAL M_OPT_GLOBAL |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
365 #define CONF_NOSAVE M_OPT_NOSAVE |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
366 #define CONF_OLD M_OPT_OLD |
26408
7a36d5941fd8
Replace the trivial command line preparser with a more robust version
albeu
parents:
26131
diff
changeset
|
367 #define CONF_PRE_PARSE M_OPT_PRE_PARSE |
18258 | 368 ///@} |
8164 | 369 |
18258 | 370 ///@} |
8164 | 371 |
18258 | 372 /// \defgroup OptionTypeFlags Option type flags |
373 /// \ingroup OptionTypes | |
374 /// | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
375 /// These flags are used to describe special parser capabilities or behavior. |
18258 | 376 /// |
377 ///@{ | |
378 | |
379 /// Suboption parser flag. | |
380 /** When this flag is set, m_option::p should point to another m_option | |
381 * array. Only the parse function will be called. If dst is set, it should | |
382 * create/update an array of char* containg opt/val pairs. The options in | |
383 * the child array will then be set automatically by the \ref Config. | |
18283 | 384 * Also note that suboptions may be directly accessed by using |
18258 | 385 * -option:subopt blah. |
386 */ | |
8164 | 387 #define M_OPT_TYPE_HAS_CHILD (1<<0) |
18258 | 388 |
389 /// Wildcard matching flag. | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
390 /** If set the option type has a use for option names ending with a * |
18283 | 391 * (used for -aa*), this only affects the option name matching. |
18258 | 392 */ |
8164 | 393 #define M_OPT_TYPE_ALLOW_WILDCARD (1<<1) |
18258 | 394 |
395 /// Dynamic data type. | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
396 /** This flag indicates that the data is dynamically allocated (m_option::p |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
397 * points to a pointer). It enables a little hack in the \ref Config wich |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
398 * replaces the initial value of such variables with a dynamic copy in case |
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
399 * the initial value is statically allocated (pretty common with strings). |
18258 | 400 */ |
8164 | 401 #define M_OPT_TYPE_DYNAMIC (1<<2) |
18258 | 402 |
403 /// Indirect option type. | |
404 /** If this is set the parse function doesn't directly return | |
405 * the wanted thing. Options use this if for some reasons they have to wait | |
406 * until the set call to be able to correctly set the target var. | |
407 * So for those types new values must first be parsed, then set to the target | |
408 * var. If this flag isn't set then new values can be parsed directly to the | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
409 * target var. It's used by the callback-based options as the callback call |
18258 | 410 * may append later on. |
411 */ | |
8164 | 412 #define M_OPT_TYPE_INDIRECT (1<<3) |
413 | |
18258 | 414 ///@} |
8164 | 415 |
416 ///////////////////////////// Parser flags //////////////////////////////////////// | |
417 | |
18258 | 418 /// \defgroup OptionParserModes Option parser modes |
419 /// \ingroup Options | |
420 /// | |
18316
b3be7df634b0
spelling/grammar/wording fixes in doxygen and non-doxygen comments
diego
parents:
18283
diff
changeset
|
421 /// Some parsers behave differently depending on the mode passed in the src |
18258 | 422 /// parameter of m_option_type::parse. For example the flag type doesn't take |
423 /// an argument when parsing from the command line. | |
424 ///@{ | |
425 | |
426 /// Set when parsing from a config file. | |
8164 | 427 #define M_CONFIG_FILE 0 |
18258 | 428 /// Set when parsing command line arguments. |
8164 | 429 #define M_COMMAND_LINE 1 |
26408
7a36d5941fd8
Replace the trivial command line preparser with a more robust version
albeu
parents:
26131
diff
changeset
|
430 /// Set when pre-parsing the command line |
7a36d5941fd8
Replace the trivial command line preparser with a more robust version
albeu
parents:
26131
diff
changeset
|
431 #define M_COMMAND_LINE_PRE_PARSE 2 |
8164 | 432 |
18258 | 433 ///@} |
434 | |
435 /// \defgroup OptionParserReturn Option parser return code | |
436 /// \ingroup Options | |
437 /// | |
18283 | 438 /// On success parsers return the number of arguments consumed: 0 or 1. |
18258 | 439 /// |
18283 | 440 /// To indicate that MPlayer should exit without playing anything, |
18258 | 441 /// parsers return M_OPT_EXIT minus the number of parameters they |
442 /// consumed: \ref M_OPT_EXIT or \ref M_OPT_EXIT-1. | |
443 /// | |
18283 | 444 /// On error one of the following (negative) error codes is returned: |
18258 | 445 ///@{ |
446 | |
18283 | 447 /// For use by higher level APIs when the option name is invalid. |
10595
522afd56703c
100l to albeu for his english grammar, and 10l to me becouse I noticed that lately (my backward compatibilty macro uses M_OPT_UNKNOWN)
alex
parents:
10594
diff
changeset
|
448 #define M_OPT_UNKNOWN -1 |
18258 | 449 |
450 /// Returned when a parameter is needed but wasn't provided. | |
8164 | 451 #define M_OPT_MISSING_PARAM -2 |
18258 | 452 |
453 /// Returned when the given parameter couldn't be parsed. | |
8164 | 454 #define M_OPT_INVALID -3 |
18258 | 455 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28759
diff
changeset
|
456 /// \brief Returned if the value is "out of range". The exact meaning may |
18258 | 457 /// vary from type to type. |
8164 | 458 #define M_OPT_OUT_OF_RANGE -4 |
18258 | 459 |
460 /// Returned if the parser failed for any other reason than a bad parameter. | |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
461 #define M_OPT_PARSER_ERR -5 |
18258 | 462 |
463 /// Returned when MPlayer should exit. Used by various help stuff. | |
464 /** M_OPT_EXIT must be the lowest number on this list. | |
465 */ | |
9791
c5b63e88253d
Fix some 10L typo in header (m_struct_s instead of m_struct_st).
albeu
parents:
9593
diff
changeset
|
466 #define M_OPT_EXIT -6 |
8164 | 467 |
18258 | 468 /// \defgroup OldOptionParserReturn Backward compatibility |
469 /// | |
18283 | 470 /// These are kept for compatibility with older code. |
18258 | 471 /// |
472 ///@{ | |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
473 #define ERR_NOT_AN_OPTION M_OPT_UNKNOWN |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
474 #define ERR_MISSING_PARAM M_OPT_MISSING_PARAM |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
475 #define ERR_OUT_OF_RANGE M_OPT_OUT_OF_RANGE |
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
476 #define ERR_FUNC_ERR M_OPT_PARSER_ERR |
18258 | 477 ///@} |
10594
57bdcdb061d7
Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents:
10590
diff
changeset
|
478 |
18258 | 479 ///@} |
480 | |
481 /// Find the option matching the given name in the list. | |
482 /** \ingroup Options | |
18283 | 483 * This function takes the possible wildcards into account (see |
18258 | 484 * \ref M_OPT_TYPE_ALLOW_WILDCARD). |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28759
diff
changeset
|
485 * |
18258 | 486 * \param list Pointer to an array of \ref m_option. |
487 * \param name Name of the option. | |
488 * \return The matching option or NULL. | |
489 */ | |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
490 const m_option_t* m_option_list_find(const m_option_t* list,const char* name); |
8164 | 491 |
18258 | 492 /// Helper to parse options, see \ref m_option_type::parse. |
34492
1495455e6d22
Move static keyword to the beginning of function declarations.
diego
parents:
34200
diff
changeset
|
493 static inline int |
30695
a26f6577d338
Make more option-parsing related function arguments const.
reimar
parents:
30429
diff
changeset
|
494 m_option_parse(const m_option_t* opt,const char *name, const char *param, void* dst, int src) { |
8164 | 495 return opt->type->parse(opt,name,param,dst,src); |
496 } | |
497 | |
18258 | 498 /// Helper to print options, see \ref m_option_type::print. |
34492
1495455e6d22
Move static keyword to the beginning of function declarations.
diego
parents:
34200
diff
changeset
|
499 static inline char* |
25229
4f611a555224
Option print functions may not and do not modify value
reimar
parents:
24966
diff
changeset
|
500 m_option_print(const m_option_t* opt, const void* val_ptr) { |
8164 | 501 if(opt->type->print) |
502 return opt->type->print(opt,val_ptr); | |
503 else | |
8168 | 504 return (char*)-1; |
8164 | 505 } |
506 | |
18258 | 507 /// Helper around \ref m_option_type::save. |
34492
1495455e6d22
Move static keyword to the beginning of function declarations.
diego
parents:
34200
diff
changeset
|
508 static inline void |
30695
a26f6577d338
Make more option-parsing related function arguments const.
reimar
parents:
30429
diff
changeset
|
509 m_option_save(const m_option_t* opt,void* dst, const void* src) { |
8164 | 510 if(opt->type->save) |
511 opt->type->save(opt,dst,src); | |
512 } | |
513 | |
18258 | 514 /// Helper around \ref m_option_type::set. |
34492
1495455e6d22
Move static keyword to the beginning of function declarations.
diego
parents:
34200
diff
changeset
|
515 static inline void |
30695
a26f6577d338
Make more option-parsing related function arguments const.
reimar
parents:
30429
diff
changeset
|
516 m_option_set(const m_option_t* opt,void* dst, const void* src) { |
8164 | 517 if(opt->type->set) |
518 opt->type->set(opt,dst,src); | |
519 } | |
520 | |
18258 | 521 /// Helper around \ref m_option_type::copy. |
8164 | 522 inline static void |
30695
a26f6577d338
Make more option-parsing related function arguments const.
reimar
parents:
30429
diff
changeset
|
523 m_option_copy(const m_option_t* opt,void* dst, const void* src) { |
8164 | 524 if(opt->type->copy) |
17456
b8ce59172e6a
100L m_option_copy should use the copy callback and not the set one.
albeu
parents:
16345
diff
changeset
|
525 opt->type->copy(opt,dst,src); |
8164 | 526 else if(opt->type->size > 0) |
527 memcpy(dst,src,opt->type->size); | |
528 } | |
529 | |
18258 | 530 /// Helper around \ref m_option_type::free. |
34492
1495455e6d22
Move static keyword to the beginning of function declarations.
diego
parents:
34200
diff
changeset
|
531 static inline void |
24966
cc170348a763
correct const usage in the option handling code so that tables can be
rfelker
parents:
23689
diff
changeset
|
532 m_option_free(const m_option_t* opt,void* dst) { |
8164 | 533 if(opt->type->free) |
534 opt->type->free(dst); | |
535 } | |
536 | |
18258 | 537 /*@}*/ |
538 | |
32428
92b92a78ca2a
Make the parse_timestring public, with a slightly extended API.
cigaes
parents:
30954
diff
changeset
|
539 /** |
92b92a78ca2a
Make the parse_timestring public, with a slightly extended API.
cigaes
parents:
30954
diff
changeset
|
540 * Parse a string as a timestamp. |
92b92a78ca2a
Make the parse_timestring public, with a slightly extended API.
cigaes
parents:
30954
diff
changeset
|
541 * |
92b92a78ca2a
Make the parse_timestring public, with a slightly extended API.
cigaes
parents:
30954
diff
changeset
|
542 * @param[in] str the string to parse. |
92b92a78ca2a
Make the parse_timestring public, with a slightly extended API.
cigaes
parents:
30954
diff
changeset
|
543 * @param[out] time parsed time. |
92b92a78ca2a
Make the parse_timestring public, with a slightly extended API.
cigaes
parents:
30954
diff
changeset
|
544 * @param[in] endchar return an error of the next character after the |
92b92a78ca2a
Make the parse_timestring public, with a slightly extended API.
cigaes
parents:
30954
diff
changeset
|
545 * timestamp is neither nul nor endchar. |
92b92a78ca2a
Make the parse_timestring public, with a slightly extended API.
cigaes
parents:
30954
diff
changeset
|
546 * @return Number of chars in the timestamp. |
92b92a78ca2a
Make the parse_timestring public, with a slightly extended API.
cigaes
parents:
30954
diff
changeset
|
547 */ |
92b92a78ca2a
Make the parse_timestring public, with a slightly extended API.
cigaes
parents:
30954
diff
changeset
|
548 int parse_timestring(const char *str, double *time, char endchar); |
92b92a78ca2a
Make the parse_timestring public, with a slightly extended API.
cigaes
parents:
30954
diff
changeset
|
549 |
26029 | 550 #endif /* MPLAYER_M_OPTION_H */ |