Move away from the concrete mesh types; instead use functions.
Created by: vibraphone
Since MeshIOType now holds (or will soon) a pair of strings instead of integer IDs, we should eliminate remus::meshtypes::MeshTypeBase in favor of just using strings. The canonical mesh type names (e.g., "Mesh3D", "PiecewiseLinearComplex") would be exposed as functions:
namespace remus {
namespace meshtypes {
/// 3-dimensional mesh objects in MOAB format
std::string Mesh3D() { return "Mesh3D"; }
/// A piecewise linear complex
std::string PiecewiseLinearComplex() { return "PiecewiseLinearComplex"; }
// ...
}
}
to make it easier to ensure that strings match throughout applications. Then the MeshRegistrar class would be invoked inside the MeshIOType constructor to maintain a list of all mesh types in use locally.