From e547ca0de80b067014ff41b4d407b0efc6a3518b Mon Sep 17 00:00:00 2001 From: Derek Williams Date: Sun, 22 May 2011 15:16:38 -0600 Subject: [PATCH] ByteString improvements --- .../src/main/scala/akka/util/ByteString.scala | 28 ++++--------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/akka-actor/src/main/scala/akka/util/ByteString.scala b/akka-actor/src/main/scala/akka/util/ByteString.scala index a9b80fb807..2a6aa84d9d 100644 --- a/akka-actor/src/main/scala/akka/util/ByteString.scala +++ b/akka-actor/src/main/scala/akka/util/ByteString.scala @@ -32,25 +32,7 @@ object ByteString { val empty: ByteString = new ByteString(Array.empty[Byte]) - def newBuilder = new Builder[Byte, ByteString] { - private val arrayBuilder = new ArrayBuilder.ofByte - - override def sizeHint(size: Int): Unit = arrayBuilder.sizeHint(size) - - def +=(elem: Byte): this.type = { - arrayBuilder += elem - this - } - - override def ++=(xs: TraversableOnce[Byte]): this.type = { - arrayBuilder ++= xs - this - } - - def clear(): Unit = arrayBuilder.clear - - def result: ByteString = apply(arrayBuilder.result) - } + def newBuilder: Builder[Byte, ByteString] = new ArrayBuilder.ofByte mapResult apply implicit def canBuildFrom = new CanBuildFrom[TraversableOnce[Byte], Byte, ByteString] { def apply(from: TraversableOnce[Byte]) = newBuilder @@ -61,18 +43,20 @@ object ByteString { final class ByteString private (private val bytes: Array[Byte]) extends IndexedSeq[Byte] with IndexedSeqOptimized[Byte, ByteString] { - override def newBuilder = ByteString.newBuilder - - //def seq = this + override protected[this] def newBuilder = ByteString.newBuilder def apply(idx: Int): Byte = bytes(idx) def length: Int = bytes.length + override def clone: ByteString = ByteString(bytes) + def toArray: Array[Byte] = bytes.clone def asByteBuffer: ByteBuffer = ByteBuffer.wrap(bytes).asReadOnlyBuffer def toByteBuffer: ByteBuffer = ByteBuffer.wrap(bytes.clone) + def mapI(f: Byte ⇒ Int): ByteString = map(f andThen (_.toByte)) + }