All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pimpathon.array.scala Maven / Gradle / Ivy

The newest version!
package pimpathon

import _root_.java.io.{InputStream, OutputStream}
import _root_.java.math.BigInteger

import pimpathon.any._
import pimpathon.string._


object array {
  implicit def arrayPimps[A](array: Array[A]): ArrayPimps[A] = new ArrayPimps[A](array)
  implicit def byteArrayPimps(array: Array[Byte]): ByteArrayPimps = new ByteArrayPimps(array)

  class ArrayPimps[A](array: Array[A]) {
    def copyTo(srcPos: Int, dest: Array[A], destPos: Int, length: Int): Array[A] =
      dest.tap(_ ⇒ System.arraycopy(array, srcPos, dest, destPos, length))
  }

  class ByteArrayPimps(array: Array[Byte]) {
    def toHex(length: Int): String = toHex.prefixPadTo(length, '0')
    def toHex: String = new BigInteger(1, array).toString(16)

    def copyUpToN(n: Long, is: InputStream, os: OutputStream): Int =
      readUpToN(n, is).tapUnless(_ == -1)(os.write(array, 0, _))

    def readUpToN(n: Long, is: InputStream): Int =
      if (n == 0) -1 else is.read(array, 0, math.min(n, array.length).toInt)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy