aboutsummaryrefslogtreecommitdiffstats
path: root/src/DecoderList.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-12-29 16:18:33 +0100
committerMax Kellermann <max@duempel.org>2013-12-29 16:59:57 +0100
commitdf4db509047766235063f98f0ddd61cbf221fea5 (patch)
tree15c755558141ec7e0d5945cd8506bf8345c3e2d6 /src/DecoderList.cxx
parentdecc4002a02d07c12b360929dc62b5ffcae37582 (diff)
downloadmpd-df4db509047766235063f98f0ddd61cbf221fea5.tar.gz
mpd-df4db509047766235063f98f0ddd61cbf221fea5.tar.xz
mpd-df4db509047766235063f98f0ddd61cbf221fea5.zip
DecoderList: add function decoder_plugins_supports_suffix()
Replaces decoder_plugin_from_suffix().
Diffstat (limited to 'src/DecoderList.cxx')
-rw-r--r--src/DecoderList.cxx45
1 files changed, 8 insertions, 37 deletions
diff --git a/src/DecoderList.cxx b/src/DecoderList.cxx
index dbad3dd57..b077da035 100644
--- a/src/DecoderList.cxx
+++ b/src/DecoderList.cxx
@@ -118,43 +118,6 @@ static constexpr unsigned num_decoder_plugins =
/** which plugins have been initialized successfully? */
bool decoder_plugins_enabled[num_decoder_plugins];
-static unsigned
-decoder_plugin_index(const struct DecoderPlugin *plugin)
-{
- unsigned i = 0;
-
- while (decoder_plugins[i] != plugin)
- ++i;
-
- return i;
-}
-
-static unsigned
-decoder_plugin_next_index(const struct DecoderPlugin *plugin)
-{
- return plugin == 0
- ? 0 /* start with first plugin */
- : decoder_plugin_index(plugin) + 1;
-}
-
-const struct DecoderPlugin *
-decoder_plugin_from_suffix(const char *suffix,
- const struct DecoderPlugin *plugin)
-{
- if (suffix == nullptr)
- return nullptr;
-
- for (unsigned i = decoder_plugin_next_index(plugin);
- decoder_plugins[i] != nullptr; ++i) {
- plugin = decoder_plugins[i];
- if (decoder_plugins_enabled[i] &&
- plugin->SupportsSuffix(suffix))
- return plugin;
- }
-
- return nullptr;
-}
-
const struct DecoderPlugin *
decoder_plugin_from_name(const char *name)
{
@@ -213,3 +176,11 @@ void decoder_plugin_deinit_all(void)
plugin.Finish();
});
}
+
+bool
+decoder_plugins_supports_suffix(const char *suffix)
+{
+ return decoder_plugins_try([suffix](const DecoderPlugin &plugin){
+ return plugin.SupportsSuffix(suffix);
+ });
+}