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

com.malliina.storage.package.scala Maven / Gradle / Ivy

There is a newer version: 3.7.3
Show newest version
package com.malliina

/**
  * Adapted from concurrent.duration._
  *
  * Enables: 5.megs, 6.gigs etc.
  */
package object storage {
  private val k = 1024L

  /**
    * @param amount integer amount of some storage unit
    */
  implicit final class StorageInt(val amount: Int) extends StorageConversions {
    protected def asBytes(multiplier: Long): Long = multiplier * amount
  }

  implicit final class StorageLong(val amount: Long) extends StorageConversions {
    protected def asBytes(multiplier: Long): Long = multiplier * amount
  }

  implicit final class StorageDouble(val amount: Double) extends StorageConversions {
    protected def asBytes(multiplier: Long): Long = (multiplier * amount).toLong
  }

  trait StorageConversions {
    protected def asStorageSize(multiplier: Long): StorageSize = new StorageSize(
      asBytes(multiplier)
    )
    protected def asBytes(multiplier: Long): Long

    def bytes = asStorageSize(1)
    def kilos = asStorageSize(k)
    def megs = asStorageSize(k * k)
    def gigs = asStorageSize(k * k * k)
    def teras = asStorageSize(k * k * k * k)
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy