diff options
author | Max Kellermann <max@duempel.org> | 2014-01-24 16:31:52 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-01-24 16:43:57 +0100 |
commit | 7c52a1c04bccac68f4220c8bf3d3a59c16ed58db (patch) | |
tree | 6c1f8b99225343974584817b3278958599e2e12a /src/filter/FilterPlugin.cxx | |
parent | 9d34fc394ce30a28ec0e43f2ad7172b8de8b3be6 (diff) | |
download | mpd-7c52a1c04bccac68f4220c8bf3d3a59c16ed58db.tar.gz mpd-7c52a1c04bccac68f4220c8bf3d3a59c16ed58db.tar.xz mpd-7c52a1c04bccac68f4220c8bf3d3a59c16ed58db.zip |
Filter*: move to filter/
Diffstat (limited to 'src/filter/FilterPlugin.cxx')
-rw-r--r-- | src/filter/FilterPlugin.cxx | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/filter/FilterPlugin.cxx b/src/filter/FilterPlugin.cxx new file mode 100644 index 000000000..98314f771 --- /dev/null +++ b/src/filter/FilterPlugin.cxx @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2003-2014 The Music Player Daemon Project + * http://www.musicpd.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "config.h" +#include "FilterPlugin.hxx" +#include "FilterRegistry.hxx" +#include "config/ConfigData.hxx" +#include "config/ConfigError.hxx" +#include "util/Error.hxx" + +#include <assert.h> + +Filter * +filter_new(const struct filter_plugin *plugin, + const config_param ¶m, Error &error) +{ + assert(plugin != nullptr); + assert(!error.IsDefined()); + + return plugin->init(param, error); +} + +Filter * +filter_configured_new(const config_param ¶m, Error &error) +{ + assert(!error.IsDefined()); + + const char *plugin_name = param.GetBlockValue("plugin"); + if (plugin_name == nullptr) { + error.Set(config_domain, "No filter plugin specified"); + return nullptr; + } + + const filter_plugin *plugin = filter_plugin_by_name(plugin_name); + if (plugin == nullptr) { + error.Format(config_domain, + "No such filter plugin: %s", plugin_name); + return nullptr; + } + + return filter_new(plugin, param, error); +} |