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)
|
||||
{
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user