|
|
@ -0,0 +1,29 @@ |
|
|
|
#include "matrix.h"
|
|
|
|
|
|
|
|
#include "src/storage/SparseMatrix.h"
|
|
|
|
|
|
|
|
typedef storm::storage::SparseMatrix<double>::index_type entry_index; |
|
|
|
|
|
|
|
void define_sparse_matrix(py::module& m) { |
|
|
|
|
|
|
|
py::class_<storm::storage::MatrixEntry<entry_index, double>>(m, "SparseMatrixEntry", "Entry of sparse matrix") |
|
|
|
.def("__str__", [](storm::storage::MatrixEntry<entry_index, double> const& entry) { |
|
|
|
std::stringstream stream; |
|
|
|
stream << entry; |
|
|
|
return stream.str(); |
|
|
|
}) |
|
|
|
.def_property("val", &storm::storage::MatrixEntry<entry_index, double>::getValue, &storm::storage::MatrixEntry<entry_index, double>::setValue, "Value") |
|
|
|
.def_property_readonly("column", &storm::storage::MatrixEntry<entry_index, double>::getColumn, "Column") |
|
|
|
; |
|
|
|
|
|
|
|
py::class_<storm::storage::SparseMatrix<double>>(m, "SparseMatrix", "Sparse matrix") |
|
|
|
//.def("__str__", &storm::logic::Formula::toString)
|
|
|
|
.def("__iter__", [](storm::storage::SparseMatrix<double> const& matrix) { |
|
|
|
return py::make_iterator(matrix.begin(), matrix.end()); |
|
|
|
}, py::keep_alive<0, 1>() /* Essential: keep object alive while iterator exists */) |
|
|
|
.def("nr_rows", &storm::storage::SparseMatrix<double>::getRowCount, "Number of rows") |
|
|
|
.def("nr_columns", &storm::storage::SparseMatrix<double>::getColumnCount, "Number of columns") |
|
|
|
.def("nr_entries", &storm::storage::SparseMatrix<double>::getEntryCount, "Number of non-zero entries") |
|
|
|
; |
|
|
|
|
|
|
|
} |