27 return registery.at(extension)->clone(filename);
28 }
catch(std::out_of_range&) {
29 throw UnknownFileSuffix(extension);
33 virtual const char*
name()
const = 0;
36 load_meshes(geometry);
37 load_domains(geometry);
52 save_data(geometry,matrix);
70 typedef std::map<std::string,GeometryIO*>
Registery;
74 GeometryIO(
const std::string& filename,
const char* name): fname(filename) { registery.insert({ name,
this }); }
static GeometryIO * create(const std::string &filename)
virtual void load_meshes(Geometry &geometry)=0
virtual void write() const =0
virtual void save_data(const Geometry &geometry, const Matrix &matrix) const =0
GeometryIO(const std::string &filename, const char *name)
std::map< std::string, GeometryIO * > Registery
virtual const char * name() const =0
virtual void save_geom(const Geometry &geometry)=0
void load(Geometry &geometry)
virtual GeometryIO * clone(const std::string &filename) const =0
virtual ~GeometryIO()=default
void load(Geometry &geometry, Matrix &matrix)
void save(const Geometry &geometry, const Matrix &matrix)
virtual void load_domains(Geometry &)
void save(const Geometry &geometry)
virtual Matrix load_data() const =0
static Registery registery
Geometry contains the electrophysiological model Vertices, meshes and domains are stored in this geom...
Matrix class Matrix class.
std::string tolower(const std::string &s)
std::string getFilenameExtension(const std::string &name)