diff options
Diffstat (limited to 'src/main/scala/scalam/collection/WrappedDenseVector.scala')
-rw-r--r-- | src/main/scala/scalam/collection/WrappedDenseVector.scala | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/main/scala/scalam/collection/WrappedDenseVector.scala b/src/main/scala/scalam/collection/WrappedDenseVector.scala new file mode 100644 index 0000000..43638c6 --- /dev/null +++ b/src/main/scala/scalam/collection/WrappedDenseVector.scala @@ -0,0 +1,25 @@ +package scalam.collection + +import scala.collection.mutable.IndexedSeqOptimized +import breeze.linalg.DenseVector +import scala.collection.mutable.Builder +import scala.collection.generic.CanBuildFrom +import scala.collection.generic.SeqFactory +import scala.collection.generic.GenericCompanion +import scala.collection.mutable.IndexedSeqLike + +class WrappedDenseVector[Elem: ClassManifest](val self: DenseVector[Elem]) extends IndexedSeq[Elem] with IndexedSeqLike[Elem, WrappedDenseVector[Elem]] { + override def update(index: Int, value: Elem) = self.update(index, value) + override def apply(index: Int) = self.apply(index) + override def length = self.length + override protected[this] def newBuilder: Builder[Elem, WrappedDenseVector[Elem]] = (new DenseVectorBuilder[Elem]) mapResult (new WrappedDenseVector(_)) +} + +object WrappedDenseVector { + def newBuilder[Elem: ClassManifest] = (new DenseVectorBuilder[Elem]) mapResult (new WrappedDenseVector(_)) + + implicit def canBuildFrom[T: ClassManifest] = new CanBuildFrom[WrappedDenseVector[_], T, WrappedDenseVector[T]] { + def apply(from: WrappedDenseVector[_]): Builder[T, WrappedDenseVector[T]] = newBuilder + def apply: Builder[T, WrappedDenseVector[T]] = newBuilder + } +}
\ No newline at end of file |