#pragma once #include "IDictionary.h" namespace Poco { namespace Util { class AbstractConfiguration; } class Logger; } namespace DB { class Context; class DictionaryFactory : private boost::noncopyable { public: static DictionaryFactory & instance(); DictionaryPtr create(const std::string & name, const Poco::Util::AbstractConfiguration & config, const std::string & config_prefix, Context & context) const; using Creator = std::function; void registerLayout(const std::string & layout_type, Creator create_layout); private: using LayoutRegistry = std::unordered_map; LayoutRegistry registered_layouts; }; }