From e584c4caea6ae73ea65a6ae035834bff0b979cef Mon Sep 17 00:00:00 2001 From: Max Kahnt <max.kahnt@fu-berlin.de> Date: Mon, 25 Sep 2017 14:09:03 +0200 Subject: [PATCH] Add readBinary (import from dune-solvers). --- dune/matrix-vector/genericvectortools.hh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/dune/matrix-vector/genericvectortools.hh b/dune/matrix-vector/genericvectortools.hh index 493c6c6..4b753e5 100644 --- a/dune/matrix-vector/genericvectortools.hh +++ b/dune/matrix-vector/genericvectortools.hh @@ -26,6 +26,12 @@ void writeBinary(std::ostream& s, const Vector& v) { Helper<Vector>::writeBinary(s, v); } +//! Read vector from given stream +template <class Vector> +void readBinary(std::istream& s, Vector& v) { + Helper<Vector>::readBinary(s, v); +} + //! Truncate vector by given bit set template <class Vector, class BitVector> void truncate(Vector& v, const BitVector& tr) { @@ -38,6 +44,10 @@ struct Helper { Hybrid::forEach(v, [&s](auto&& vi) { Generic::writeBinary(s, vi); }); } + static void readBinary(std::istream& s, Vector& v) { + Hybrid::forEach(v, [&s](auto&& vi) { Generic::readBinary(s, vi); }); + } + template <class BitVector> static void truncate(Vector& v, const BitVector& tr) { sparseRangeFor(v, [&tr](auto&& vi, auto&& i) { @@ -55,6 +65,11 @@ struct Helper<FieldVector<Field, n>> { s.write(reinterpret_cast<const char*>(&vi), sizeof(Field)); } + static void readBinary(std::ostream& s, Vector& v) { + for (auto&& vi : v) + s.write(reinterpret_cast<char*>(&vi), sizeof(Field)); + } + template<class BitVector> static void truncate(Vector& v, const BitVector& tr) { for (auto it = v.begin(), end = v.end(); it != end; ++it) -- GitLab