5template <
typename Writer>
24template <
typename Writer>
34 const std::vector<std::string>& extensions,
37 for (
const auto& ext : extensions) {
42 [[nodiscard]] std::unique_ptr<Writer>
create_writer(
const std::string& filepath)
const
44 auto ext = std::filesystem::path(filepath).extension().string();
45 if (!ext.empty() && ext[0] ==
'.') {
58 std::vector<std::string> exts;
67 std::unordered_map<std::string, WriterFactory<Writer>>
m_factories;
std::vector< std::string > get_registered_extensions() const
std::unordered_map< std::string, WriterFactory< Writer > > m_factories
static WriterRegistry & instance()
std::unique_ptr< Writer > create_writer(const std::string &filepath) const
void register_writer(const std::vector< std::string > &extensions, const WriterFactory< Writer > &factory)
Singleton registry dispatching single-shot writes by file extension.
std::function< std::unique_ptr< Writer >()> WriterFactory