GmshReader: more flexible and robust io-arg-style interface for reading data
This allows the user to not pass the data vectors he/she is not interested in.
To ignore a vector, pass std::ignore
.
In addition, in place of the boundary segment data a bool
value may be
passed, stating whether or not to insert boundary segments. false
is
equivalent to std::ignore
and no boundary segments are inserted. When a
vector to fill is given, boundary segments are always inserted (otherwise the
user would be unable to correctly index that vector).
In summary, given
GridFactory<Grid> factory;
std::vector<int> boundaryData, elementData;
using Reader = GmshReader<Grid>;
bool verbose = ...;
bool insertBoundarySegments = ...;
the following uses are now possible:
Reader::read(factory, "file.msh", boundaryData, elementData, verbose);
Reader::read(factory, "file.msh", boundaryData, std::ignore, verbose);
Reader::read(factory, "file.msh", std::ignore, elementData, verbose);
Reader::read(factory, "file.msh", std::ignore, std::ignore, verbose);
Reader::read(factory, "file.msh", insertBoundarySegments, elementData, verbose);
Reader::read(factory, "file.msh", insertBoundarySegments, std::ignore, verbose);
In each of those, the verbose
argument is optional.
Addresses: flyspray/FS#1698 (closed)
WIP:
-
Wait until 2020-03-01 for comments.
Edited by Jö Fahlke