18#include <OMExceptions.H>
33 return registery.at(extension)->clone(filename);
36 virtual const char*
name()
const = 0;
38 void open(
const std::ios_base::openmode mode=std::ios_base::in) {
39 fs.open(fname,(binary()) ? mode|std::ios_base::binary : mode);
41 throw OpenMEEG::OpenError(name());
48 open(std::ios_base::in);
56 virtual void save(
const Mesh& mesh,std::ostream& os)
const = 0;
59 open(std::ios_base::out);
73 for (
const auto& vertex : mesh.
vertices())
78 return vmap.at(&(triangle.
vertex(ind)));
83 std::map<const Vertex*,unsigned> vmap;
87 virtual bool binary()
const {
return false; }
93 MeshIO(
const std::string& filename,
const char* name): fname(filename) { registery.insert({ name,
this }); }
Geometry contains the electrophysiological model Vertices, meshes and domains are stored in this geom...
unsigned operator()(const Triangle &triangle, const unsigned ind) const
VertexIndices(const Mesh &mesh)
void open(const std::ios_base::openmode mode=std::ios_base::in)
std::map< std::string, MeshIO * > Registery
static MeshIO * create(const std::string &filename)
static Registery registery
virtual void load_points(Geometry &geom)=0
virtual const char * name() const =0
virtual bool binary() const
virtual void load_triangles(Mesh &m)=0
virtual MeshIO * clone(const std::string &filename) const =0
virtual void save(const Mesh &mesh)
MeshIO(const std::string &filename, const char *name)
virtual void load(Mesh &m)
void reference_vertices(Mesh &mesh) const
virtual void save(const Mesh &mesh, std::ostream &os) const =0
Geometry & geometry() const
void update(const bool topology_changed)
Recompute triangles normals, area, and vertex triangles.
VerticesRefs & vertices()
Vertex & vertex(const unsigned &vindex)
std::string tolower(const std::string &s)
std::map< unsigned, unsigned > IndexMap
std::string getFilenameExtension(const std::string &name)