Loading src/Io/IoNg.h +9 −0 Original line number Diff line number Diff line Loading @@ -211,6 +211,15 @@ public: what.write(name2, ioNgSerializer_); } template<typename T> void write(const T& what, String name2, IoNgSerializer::WriteMode mode, typename EnableIf<!IsRootUnDelegated<T>::True, int*>::Type = 0) { what.write(name2, ioNgSerializer_, mode); } template<typename T> void overwrite(const T& what, String name2, Loading src/Io/IoNgSerializer.h +19 −5 Original line number Diff line number Diff line Loading @@ -282,12 +282,12 @@ public: typename EnableIf<Loki::TypeTraits<typename Real<T>::Type>::isArith, int*>::Type = 0) { overwriteNotSupported(allowOverwrite); SizeType n = what.size(); if (allowOverwrite != ALLOW_OVERWRITE) createGroup(name2); write(name2 + "/Size", n); write(name2 + "/Size", n, allowOverwrite); for (SizeType i = 0; i < n; ++i) write(name2 + "/" + typeToString(i), what[i]); write(name2 + "/" + typeToString(i), what[i], allowOverwrite); } template<typename T1, typename T2> Loading @@ -309,7 +309,6 @@ public: template<typename T> void write(String name2, const std::vector<T>& what, WriteMode = NO_OVERWRITE, typename EnableIf<!Loki::TypeTraits<typename Real<T>::Type>::isArith && !IsPairLike<T>::True && !IsEnumClass<T>::value, int*>::Type = 0) { Loading @@ -320,6 +319,21 @@ public: what[i].write(name2 + "/" + typeToString(i), *this); } template<typename T> void write(String name2, const std::vector<T>& what, WriteMode allowOverwrite, typename EnableIf<!Loki::TypeTraits<typename Real<T>::Type>::isArith && !IsPairLike<T>::True && !IsEnumClass<T>::value, int*>::Type = 0) { SizeType n = what.size(); if (allowOverwrite != ALLOW_OVERWRITE) createGroup(name2); write(name2 + "/Size", n, allowOverwrite); for (SizeType i = 0; i < n; ++i) what[i].write(name2 + "/" + typeToString(i), *this, allowOverwrite); } template<typename T> void write(String name2, const std::vector<T>& what, Loading src/Matrix.h +6 −1 Original line number Diff line number Diff line Loading @@ -149,8 +149,13 @@ public: ioSerializer.read(data_, label + "/data_"); } void write(String label, IoSerializer& ioSerializer) const void write(String label, IoSerializer& ioSerializer, IoSerializer::WriteMode wM = IoSerializer::NO_OVERWRITE) const { if (wM == IoSerializer::ALLOW_OVERWRITE) return overwrite(label, ioSerializer); ioSerializer.createGroup(label); ioSerializer.write(label + "/nrow_", nrow_); ioSerializer.write(label + "/ncol_", ncol_); Loading Loading
src/Io/IoNg.h +9 −0 Original line number Diff line number Diff line Loading @@ -211,6 +211,15 @@ public: what.write(name2, ioNgSerializer_); } template<typename T> void write(const T& what, String name2, IoNgSerializer::WriteMode mode, typename EnableIf<!IsRootUnDelegated<T>::True, int*>::Type = 0) { what.write(name2, ioNgSerializer_, mode); } template<typename T> void overwrite(const T& what, String name2, Loading
src/Io/IoNgSerializer.h +19 −5 Original line number Diff line number Diff line Loading @@ -282,12 +282,12 @@ public: typename EnableIf<Loki::TypeTraits<typename Real<T>::Type>::isArith, int*>::Type = 0) { overwriteNotSupported(allowOverwrite); SizeType n = what.size(); if (allowOverwrite != ALLOW_OVERWRITE) createGroup(name2); write(name2 + "/Size", n); write(name2 + "/Size", n, allowOverwrite); for (SizeType i = 0; i < n; ++i) write(name2 + "/" + typeToString(i), what[i]); write(name2 + "/" + typeToString(i), what[i], allowOverwrite); } template<typename T1, typename T2> Loading @@ -309,7 +309,6 @@ public: template<typename T> void write(String name2, const std::vector<T>& what, WriteMode = NO_OVERWRITE, typename EnableIf<!Loki::TypeTraits<typename Real<T>::Type>::isArith && !IsPairLike<T>::True && !IsEnumClass<T>::value, int*>::Type = 0) { Loading @@ -320,6 +319,21 @@ public: what[i].write(name2 + "/" + typeToString(i), *this); } template<typename T> void write(String name2, const std::vector<T>& what, WriteMode allowOverwrite, typename EnableIf<!Loki::TypeTraits<typename Real<T>::Type>::isArith && !IsPairLike<T>::True && !IsEnumClass<T>::value, int*>::Type = 0) { SizeType n = what.size(); if (allowOverwrite != ALLOW_OVERWRITE) createGroup(name2); write(name2 + "/Size", n, allowOverwrite); for (SizeType i = 0; i < n; ++i) what[i].write(name2 + "/" + typeToString(i), *this, allowOverwrite); } template<typename T> void write(String name2, const std::vector<T>& what, Loading
src/Matrix.h +6 −1 Original line number Diff line number Diff line Loading @@ -149,8 +149,13 @@ public: ioSerializer.read(data_, label + "/data_"); } void write(String label, IoSerializer& ioSerializer) const void write(String label, IoSerializer& ioSerializer, IoSerializer::WriteMode wM = IoSerializer::NO_OVERWRITE) const { if (wM == IoSerializer::ALLOW_OVERWRITE) return overwrite(label, ioSerializer); ioSerializer.createGroup(label); ioSerializer.write(label + "/nrow_", nrow_); ioSerializer.write(label + "/ncol_", ncol_); Loading