21save(Archive& ar, Eigen::PlainObjectBase<Derived>
const& m)
23 typedef Eigen::PlainObjectBase<Derived> PlainType;
25 Eigen::Index rows = m.rows();
26 Eigen::Index cols = m.cols();
29 bool is_row_major = PlainType::IsRowMajor;
30 ar(CEREAL_NVP(is_row_major));
32 for (Eigen::Index i = 0; i < m.size(); i++)
38load(Archive& ar, Eigen::PlainObjectBase<Derived>& m)
40 typedef Eigen::PlainObjectBase<Derived> PlainType;
47 ar(CEREAL_NVP(is_row_major));
51 for (Eigen::Index i = 0; i < m.size(); i++)
55 if (is_row_major != PlainType::IsRowMajor) {
56#if EIGEN_VERSION_AT_LEAST(3, 4, 0)
59 m = m.transpose().eval();
68 Eigen::SparseMatrix<_Scalar, _Options, _StorageIndex>
const& m)
70 Eigen::Index innerSize = m.innerSize();
71 Eigen::Index outerSize = m.outerSize();
72 typedef typename Eigen::Triplet<_Scalar> Triplet;
73 std::vector<Triplet> triplets;
75 for (Eigen::Index i = 0; i < outerSize; ++i) {
76 for (
typename Eigen::SparseMatrix<_Scalar, _Options, _StorageIndex>::
77 InnerIterator it(m, i);
80 triplets.push_back(Triplet(it.row(), it.col(), it.value()));
90load(Archive& ar, Eigen::SparseMatrix<_Scalar, _Options, _StorageIndex>& m)
92 Eigen::Index innerSize;
93 Eigen::Index outerSize;
96 Eigen::Index rows = m.IsRowMajor ? outerSize : innerSize;
97 Eigen::Index cols = m.IsRowMajor ? innerSize : outerSize;
99 typedef typename Eigen::Triplet<_Scalar> Triplet;
100 std::vector<Triplet> triplets;
102 m.setFromTriplets(triplets.begin(), triplets.end());