30 std::vector<std::string>{
"cube"},
31 [] {
return std::make_unique<CubeVolumetricFieldWriter>(); }));
33 std::vector<std::string>{
"xsf"},
34 [] {
return std::make_unique<XsfVolumetricFieldWriter>(); }));
40inline std::unique_ptr<VolumetricFieldWriter>
43 if (
const auto* factory = registry.find(format))
44 return factory->create();
45 throw std::runtime_error(
"Unknown volumetric format '" + format +
46 "'. Supported: " + registry.canonical_names(
", "));
A registry entry that builds one implementation of Product.
An ordered set of interchangeable implementations of Entry, found by name.
void add(std::unique_ptr< Entry > entry)
Add entry; throws std::logic_error when one of its names is already registered.
std::unique_ptr< VolumetricFieldWriter > create_volumetric_field_writer(const std::string &format)
Registry< NamedFactory< VolumetricFieldWriter > > & volumetric_field_writer_registry()
The registry create_volumetric_field_writer() builds writers from.