home/src/filter_registry.cc

31 lines
709 B
C++
Raw Normal View History

2011-11-08 15:27:21 +01:00
#include "filter_registry.hh"
#include "exception.hh"
namespace Kakoune
{
struct factory_not_found : public runtime_error
{
factory_not_found() : runtime_error("factory not found") {}
};
void FilterRegistry::register_factory(const std::string& name,
const FilterFactory& factory)
{
assert(m_factories.find(name) == m_factories.end());
m_factories[name] = factory;
}
FilterAndId FilterRegistry::get_filter(const std::string& name,
const FilterParameters& parameters)
{
auto it = m_factories.find(name);
if (it == m_factories.end())
throw factory_not_found();
return it->second(parameters);
}
}