input_registry: add _for_each() macros
This commit is contained in:
		@@ -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);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user