aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scalam/io/package.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/scalam/io/package.scala')
-rw-r--r--src/main/scala/scalam/io/package.scala18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/main/scala/scalam/io/package.scala b/src/main/scala/scalam/io/package.scala
index a5217de..4f1ef09 100644
--- a/src/main/scala/scalam/io/package.scala
+++ b/src/main/scala/scalam/io/package.scala
@@ -4,20 +4,16 @@ import scalax.file.Path
import breeze.linalg._
package object io {
-
- def load(path: Path, separator: String = "\\s"): DenseMatrix[Double] = {
- val lines = path.lines().dropWhile(_.isEmpty).toArray
- val elements: Array[Array[String]] = lines map (_.split(separator))
- require(elements.forall(_.length == elements(0).length), "Cannot load non-rectangular matrix. Check your data file.")
-
- val rows: Array[Array[Double]] = elements.map(_.map(_.toDouble))
- DenseMatrix(rows: _*)
+
+ def load[A: Loadable](path: Path): A = {
+ val loadable = implicitly[Loadable[A]]
+ loadable.load(path)
}
-
- def save(path: Path, m: DenseMatrix[Double]): Unit = {
+
+ def save[A <% Saveable](objectToSave: A, path: Path) = {
path.createFile(createParents = true, failIfExists = false)
for (processor <- path.outputProcessor; out = processor.asOutput)
- for (i <- 0 until m.rows) m(i, ::).valuesIterator.mkString(""," ","\n")
+ objectToSave.save(out)
}
} \ No newline at end of file