//////////
/** Default ctor. Initializes to 1 x 1-dimensional zero-matrix. */
-matrix::matrix() : inherited(&matrix::tinfo_static), row(1), col(1), m(1, _ex0)
+matrix::matrix() : row(1), col(1), m(1, _ex0)
{
setflag(status_flags::not_shareable);
}
*
* @param r number of rows
* @param c number of cols */
-matrix::matrix(unsigned r, unsigned c)
- : inherited(&matrix::tinfo_static), row(r), col(c), m(r*c, _ex0)
+matrix::matrix(unsigned r, unsigned c) : row(r), col(c), m(r*c, _ex0)
{
setflag(status_flags::not_shareable);
}
/** Ctor from representation, for internal use only. */
matrix::matrix(unsigned r, unsigned c, const exvector & m2)
- : inherited(&matrix::tinfo_static), row(r), col(c), m(m2)
+ : row(r), col(c), m(m2)
{
setflag(status_flags::not_shareable);
}
* If the list has more elements than the matrix, the excessive elements are
* thrown away. */
matrix::matrix(unsigned r, unsigned c, const lst & l)
- : inherited(&matrix::tinfo_static), row(r), col(c), m(r*c, _ex0)
+ : row(r), col(c), m(r*c, _ex0)
{
setflag(status_flags::not_shareable);
// archiving
//////////
-matrix::matrix(const archive_node &n, lst &sym_lst) : inherited(n, sym_lst)
+void matrix::read_archive(const archive_node &n, lst &sym_lst)
{
- setflag(status_flags::not_shareable);
+ inherited::read_archive(n, sym_lst);
if (!(n.find_unsigned("row", row)) || !(n.find_unsigned("col", col)))
throw (std::runtime_error("unknown matrix dimensions in archive"));
m.reserve(row * col);
+ // XXX: default ctor inserts a zero element, we need to erase it here.
+ m.pop_back();
archive_node::archive_node_cit first = n.find_first("m");
archive_node::archive_node_cit last = n.find_last("m");
++last;
- for (archive_node::archive_node_cit i=first; i<last; ++i) {
+ for (archive_node::archive_node_cit i=first; i != last; ++i) {
ex e;
n.find_ex_by_loc(i, e, sym_lst);
m.push_back(e);
}
}
+GINAC_BIND_UNARCHIVER(matrix);
void matrix::archive(archive_node &n) const
{
}
}
-DEFAULT_UNARCHIVE(matrix)
-
//////////
// functions overriding virtual functions from base classes
//////////