From fd09111c47965b9af68879d3613e76695f8e7f0b Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Thu, 1 Nov 2012 16:35:42 +0100 Subject: make I/O specific to paths (to enable saving of resources across multiple files) --- src/main/scala/scalam/io/Loadable.scala | 4 ++-- src/main/scala/scalam/io/Saveable.scala | 6 ++++-- src/main/scala/scalam/io/package.scala | 4 +--- src/main/scala/scalam/package.scala | 4 ++-- src/main/scala/scalam/plotting/DataSet.scala | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/main/scala/scalam/io/Loadable.scala b/src/main/scala/scalam/io/Loadable.scala index 703c1fa..aac0e39 100644 --- a/src/main/scala/scalam/io/Loadable.scala +++ b/src/main/scala/scalam/io/Loadable.scala @@ -1,7 +1,7 @@ package scalam.io -import scalax.io.Input +import scalax.file.Path trait Loadable[A] { - def load(in: Input): A + def load(in: Path): A } \ No newline at end of file diff --git a/src/main/scala/scalam/io/Saveable.scala b/src/main/scala/scalam/io/Saveable.scala index bf33d94..4a45b16 100644 --- a/src/main/scala/scalam/io/Saveable.scala +++ b/src/main/scala/scalam/io/Saveable.scala @@ -1,7 +1,9 @@ package scalam.io -import scalax.io.Output +import scalax.file.Path trait Saveable { - def save(out: Output) + + def save(out: Path): Unit + } \ No newline at end of file diff --git a/src/main/scala/scalam/io/package.scala b/src/main/scala/scalam/io/package.scala index 4f1ef09..9022d62 100644 --- a/src/main/scala/scalam/io/package.scala +++ b/src/main/scala/scalam/io/package.scala @@ -11,9 +11,7 @@ package object io { } def save[A <% Saveable](objectToSave: A, path: Path) = { - path.createFile(createParents = true, failIfExists = false) - for (processor <- path.outputProcessor; out = processor.asOutput) - objectToSave.save(out) + objectToSave.save(path) } } \ No newline at end of file diff --git a/src/main/scala/scalam/package.scala b/src/main/scala/scalam/package.scala index 0e57acc..c10a270 100644 --- a/src/main/scala/scalam/package.scala +++ b/src/main/scala/scalam/package.scala @@ -29,7 +29,7 @@ package object scalam extends LowPriorityImplicits { } def denseMatrixIsLoadable[A: ClassManifest](converter: String => A): Loadable[DenseMatrix[A]] = new Loadable[DenseMatrix[A]] { - def load(in: scalax.io.Input) = { + def load(in: scalax.file.Path) = { val lines: Array[String] = in.lines().dropWhile(_.isEmpty).toArray val separator = "\\s|," val elements: Array[Array[String]] = lines.map(_.split(separator)) @@ -48,7 +48,7 @@ package object scalam extends LowPriorityImplicits { implicit def booleanDenseIsLoadable = denseMatrixIsLoadable[Boolean](_.toBoolean) implicit def denseMatrixIsSaveable = (m: DenseMatrix[_]) => new Saveable { - def save(out: scalax.io.Output) = { + def save(out: scalax.file.Path) = { for (i <- 0 until m.rows) m(i, ::).valuesIterator.mkString("", " ", "\n") } } diff --git a/src/main/scala/scalam/plotting/DataSet.scala b/src/main/scala/scalam/plotting/DataSet.scala index 052ad8c..a886700 100644 --- a/src/main/scala/scalam/plotting/DataSet.scala +++ b/src/main/scala/scalam/plotting/DataSet.scala @@ -22,11 +22,11 @@ object DataSet { def apply(points: Seq[(Double, Double)], label: String) = new DataSet(points, label, Identifier.makeValid(label)) implicit val dataSetIsSaveable = (ds: DataSet) => new Saveable { - def save(out: scalax.io.Output) = for ((x, y) <- ds.points) yield out.write(x + " " + y + "\n") + def save(out: scalax.file.Path) = for ((x, y) <- ds.points) yield out.write(x + " " + y + "\n") } implicit def dataSetIsLoadable = new Loadable[DataSet] { - def load(in: scalax.io.Input) = new DataSet(Seq(), "", "") + def load(in: scalax.file.Path) = new DataSet(Seq(), "", "") } } -- cgit v1.2.3