Commit e60141b4 authored by Max Kellermann's avatar Max Kellermann

input_registry: add _for_each() macros

parent 5b217420
......@@ -93,8 +93,7 @@ input_stream_global_init(GError **error_r)
void input_stream_global_finish(void)
{
for (unsigned i = 0; input_plugins[i] != NULL; ++i)
if (input_plugins_enabled[i] &&
input_plugins[i]->finish != NULL)
input_plugins[i]->finish();
input_plugins_for_each_enabled(plugin)
if (plugin->finish != NULL)
plugin->finish();
}
......@@ -32,4 +32,14 @@ extern const struct input_plugin *const input_plugins[];
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
......@@ -39,13 +39,9 @@ input_stream_open(const char *url, GError **error_r)
assert(error_r == NULL || *error_r == NULL);
for (unsigned i = 0; input_plugins[i] != NULL; ++i) {
const struct input_plugin *plugin = input_plugins[i];
input_plugins_for_each_enabled(plugin) {
struct input_stream *is;
if (!input_plugins_enabled[i])
continue;
is = plugin->open(url, &error);
if (is != NULL) {
assert(is->plugin != NULL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment