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) ...@@ -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[]; ...@@ -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) ...@@ -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);
......
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