input_registry: add _for_each() macros
This commit is contained in:
parent
5b21742095
commit
e60141b4dd
@ -93,8 +93,7 @@ input_stream_global_init(GError **error_r)
|
|||||||
|
|
||||||
void input_stream_global_finish(void)
|
void input_stream_global_finish(void)
|
||||||
{
|
{
|
||||||
for (unsigned i = 0; input_plugins[i] != NULL; ++i)
|
input_plugins_for_each_enabled(plugin)
|
||||||
if (input_plugins_enabled[i] &&
|
if (plugin->finish != NULL)
|
||||||
input_plugins[i]->finish != NULL)
|
plugin->finish();
|
||||||
input_plugins[i]->finish();
|
|
||||||
}
|
}
|
||||||
|
@ -32,4 +32,14 @@ extern const struct input_plugin *const input_plugins[];
|
|||||||
|
|
||||||
extern bool input_plugins_enabled[];
|
extern bool input_plugins_enabled[];
|
||||||
|
|
||||||
|
#define input_plugins_for_each(plugin) \
|
||||||
|
for (const struct input_plugin *plugin, \
|
||||||
|
*const*input_plugin_iterator = &input_plugins[0]; \
|
||||||
|
(plugin = *input_plugin_iterator) != NULL; \
|
||||||
|
++input_plugin_iterator)
|
||||||
|
|
||||||
|
#define input_plugins_for_each_enabled(plugin) \
|
||||||
|
input_plugins_for_each(plugin) \
|
||||||
|
if (input_plugins_enabled[input_plugin_iterator - input_plugins])
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -39,13 +39,9 @@ input_stream_open(const char *url, GError **error_r)
|
|||||||
|
|
||||||
assert(error_r == NULL || *error_r == NULL);
|
assert(error_r == NULL || *error_r == NULL);
|
||||||
|
|
||||||
for (unsigned i = 0; input_plugins[i] != NULL; ++i) {
|
input_plugins_for_each_enabled(plugin) {
|
||||||
const struct input_plugin *plugin = input_plugins[i];
|
|
||||||
struct input_stream *is;
|
struct input_stream *is;
|
||||||
|
|
||||||
if (!input_plugins_enabled[i])
|
|
||||||
continue;
|
|
||||||
|
|
||||||
is = plugin->open(url, &error);
|
is = plugin->open(url, &error);
|
||||||
if (is != NULL) {
|
if (is != NULL) {
|
||||||
assert(is->plugin != NULL);
|
assert(is->plugin != NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user