Packages

  • package root
    Definition Classes
    root
  • package squants

    The Scala API for Quantities, Units of Measure and Dimensional Analysis

    Squants

    The Scala API for Quantities, Units of Measure and Dimensional Analysis

    Overview

    Squants is a framework of data types and a domain specific language (DSL) for representing Quantities, their Units of Measure, and their Dimensional relationships. The API supports typesafe dimensional analysis, improved domain models and more. All types are immutable and thread-safe.

    Typedefs and implicits for common usages

    Definition Classes
    root
    Version

    0.1

    Since

    0.1

  • package electro

    Since

    0.1

  • package energy

    Since

    0.1

  • package information
  • package market

    Squants Market API

    Squants Market API

    Market Types are similar but not quite the same as other quantities in the library.

    The primary type, squants.market.Money, is derived from Quantity, and its Units of Measure are Currencies. However, because the conversion multipliers between units can not be predefined, many of the behaviors have been overridden and augmented to realize correct behavior.

    squants.market.Prices represent a Ratio between Money and some other Quantity. Prices can be created from ratios of Money and a Quantity

    val money: Money = USD(10)
    val length: Length = Meters(1)
    val price: Price[Length] = money / length

    Multiplying a Price * Quantity will yield Money amount that represents the cost of the quantity

    val cost: Money = price * Meters(3.8)

    and multiplying Price * Money will yield the corresponding Quantity amount

    val budget: Money = USD(250)
    val quote: Length = price * budget

    squants.market.CurrencyExchangeRates represent conversion rates between currencies. Use them to explicitly convert Money values in one currency to values in another.

    squants.market.MoneyContext provide the implicit context necessary to perform cross-currency operations on Money values with conversions automatically applied.

    Some binary math operations will work on Moneys of like Currency with no MoneyContext in scope. Attempts to perform these operations on Moneys of dissimilar currencies will throw an exception at runtime.

    Other operations, including direct conversions to other currencies, require a MoneyContext and will not compile without it. However, there is no compile time check to determine if the correct exchange rates will be available at runtime. Operation requiring conversion without the required rates available will throw a NoSuchExchangeRateException at runtime.

    The defaultMoneyContext uses the USD as the default and provides a list of ~20 common currencies, and NO exchange rates. If your application requires something different you should initialize your own implicit MoneyContext

    Since

    0.1

  • package mass

    Since

    0.1

  • package motion

    Since

    0.1

  • package photo

    Since

    0.1

  • package radio

    Since

    0.1

  • package space

    Since

    0.1

  • package thermal

    Since

    0.1

  • package time

    Since

    0.1

  • AbstractQuantityNumeric
  • BaseDimension
  • BinarySystem
  • Dimension
  • Dimensionless
  • DimensionlessConversions
  • DimensionlessUnit
  • DoubleVector
  • Dozen
  • Each
  • Gross
  • LikeRatio
  • MetricSystem
  • Percent
  • Platform
  • PrimaryUnit
  • Quantity
  • QuantityParseException
  • QuantityRange
  • QuantityVector
  • Ratio
  • SVector
  • Score
  • SiBaseUnit
  • SiUnit
  • SquantifiedBigDecimal
  • SquantifiedDouble
  • SquantifiedInt
  • SquantifiedLong
  • UnitConverter
  • UnitOfMeasure
p

squants

package squants

Squants

The Scala API for Quantities, Units of Measure and Dimensional Analysis

Overview

Squants is a framework of data types and a domain specific language (DSL) for representing Quantities, their Units of Measure, and their Dimensional relationships. The API supports typesafe dimensional analysis, improved domain models and more. All types are immutable and thread-safe.

Typedefs and implicits for common usages

Source
package.scala
Version

0.1

Since

0.1

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. squants
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Package Members

  1. package electro

    Since

    0.1

  2. package energy

    Since

    0.1

  3. package information
  4. package market

    Squants Market API

    Squants Market API

    Market Types are similar but not quite the same as other quantities in the library.

    The primary type, squants.market.Money, is derived from Quantity, and its Units of Measure are Currencies. However, because the conversion multipliers between units can not be predefined, many of the behaviors have been overridden and augmented to realize correct behavior.

    squants.market.Prices represent a Ratio between Money and some other Quantity. Prices can be created from ratios of Money and a Quantity

    val money: Money = USD(10)
    val length: Length = Meters(1)
    val price: Price[Length] = money / length

    Multiplying a Price * Quantity will yield Money amount that represents the cost of the quantity

    val cost: Money = price * Meters(3.8)

    and multiplying Price * Money will yield the corresponding Quantity amount

    val budget: Money = USD(250)
    val quote: Length = price * budget

    squants.market.CurrencyExchangeRates represent conversion rates between currencies. Use them to explicitly convert Money values in one currency to values in another.

    squants.market.MoneyContext provide the implicit context necessary to perform cross-currency operations on Money values with conversions automatically applied.

    Some binary math operations will work on Moneys of like Currency with no MoneyContext in scope. Attempts to perform these operations on Moneys of dissimilar currencies will throw an exception at runtime.

    Other operations, including direct conversions to other currencies, require a MoneyContext and will not compile without it. However, there is no compile time check to determine if the correct exchange rates will be available at runtime. Operation requiring conversion without the required rates available will throw a NoSuchExchangeRateException at runtime.

    The defaultMoneyContext uses the USD as the default and provides a list of ~20 common currencies, and NO exchange rates. If your application requires something different you should initialize your own implicit MoneyContext

    Since

    0.1

  5. package mass

    Since

    0.1

  6. package motion

    Since

    0.1

  7. package photo

    Since

    0.1

  8. package radio

    Since

    0.1

  9. package space

    Since

    0.1

  10. package thermal

    Since

    0.1

  11. package time

    Since

    0.1

Type Members

  1. abstract class AbstractQuantityNumeric[A <: Quantity[A]] extends Numeric[A]

    Base class for creating objects to manage quantities as Numeric.

    Base class for creating objects to manage quantities as Numeric.

    One limitation is the times operation which is not supported by every quantity type

    A

    Quantity type

  2. type Acceleration = squants.motion.Acceleration
  3. type Angle = squants.space.Angle
  4. type Area = squants.space.Area
  5. trait BaseDimension extends AnyRef

    SI Base Quantity

  6. type ChemicalAmount = squants.mass.ChemicalAmount
  7. type Density = squants.mass.Density
  8. trait Dimension[A <: Quantity[A]] extends AnyRef

    Represents a Dimension or Quantity Type

    Represents a Dimension or Quantity Type

    This trait should be mixed into the Companion Objects of specific Quantity Types.

    A

    Quantity Type

  9. final class Dimensionless extends Quantity[Dimensionless] with TimeIntegral[Frequency]

    Represents a quantity of some thing for which there is no dimension.

    Represents a quantity of some thing for which there is no dimension.

    This may be used to represent counts or other discrete amounts of everyday life, but may also represent ratios between like quantities where the units have cancelled out.

    Since

    0.1

  10. trait DimensionlessUnit extends UnitOfMeasure[Dimensionless] with UnitConverter

    Base trait for units of squants.Dimensionless

    Base trait for units of squants.Dimensionless

    The DimensionlessUnit is a useful paradox

  11. case class DoubleVector(coordinates: Double*) extends SVector[Double] with Product with Serializable

    Double (Real Number) Vector

    Double (Real Number) Vector

    coordinates

    Double*

    Since

    0.3.0

  12. type ElectricCurrent = squants.electro.ElectricCurrent
  13. type Energy = squants.energy.Energy
  14. type Force = squants.motion.Force
  15. type Jerk = squants.motion.Jerk
  16. type Length = squants.space.Length
  17. trait LikeRatio[A <: Quantity[A]] extends Ratio[A, A]
  18. type LuminousIntensity = squants.photo.LuminousIntensity
  19. type Mass = squants.mass.Mass
  20. type MassFlow = squants.motion.MassFlow
  21. type Momentum = squants.motion.Momentum
  22. type Money = squants.market.Money
  23. type Power = squants.energy.Power
  24. type PowerRamp = squants.energy.PowerRamp
  25. type Price[A <: Quantity[A]] = squants.market.Price[A]
  26. trait PrimaryUnit extends UnitConverter

    Identifies the Unit of Measure with a conversionFactor of 1.0.

    Identifies the Unit of Measure with a conversionFactor of 1.0.

    It is used as the intermediary unit during conversions

    Each Quantity should have one and only one ValueUnit

  27. abstract class Quantity[A <: Quantity[A]] extends Serializable with Ordered[A]

    A base class for measurable quantities, instances of which contain a value and a unit

    A base class for measurable quantities, instances of which contain a value and a unit

    Since

    0.1

  28. case class QuantityParseException(message: String, expression: String) extends Exception with Product with Serializable
  29. case class QuantityRange[A <: Quantity[A]](lower: A, upper: A) extends Product with Serializable

    Represents a Range starting at one Quantity value and going up to another

    Represents a Range starting at one Quantity value and going up to another

    A

    the Quantity Type

    lower

    Quantity representing the lower bound of the range

    upper

    Quantity representing the upper bound of the range

    Since

    0.1

  30. type QuantitySeries[A <: Quantity[A]] = IndexedSeq[QuantityRange[A]]
  31. case class QuantityVector[A <: Quantity[A]](coordinates: A*) extends SVector[A] with Product with Serializable

    Quantity Vector

    Quantity Vector

    A

    QuantityType

    coordinates

    Variable list of A

    Since

    0.3.0

  32. trait Ratio[A <: Quantity[A], B <: Quantity[B]] extends AnyRef

    Defines an interface and partial implementation for types that represent a ratio between any two quantities

    Defines an interface and partial implementation for types that represent a ratio between any two quantities

    A

    Quantity A

    B

    Quantity B

    Since

    0.1

  33. trait SVector[A] extends AnyRef

    Root trait for representing Vectors

    Root trait for representing Vectors

    A

    Type for the Vector's coordinate values

    Since

    0.3.0

  34. trait SiBaseUnit extends SiUnit

    A marker trait identifying SI Base Units

  35. trait SiUnit extends AnyRef

    A marker trait identifying SI Units

  36. type SolidAngle = squants.space.SolidAngle
  37. implicit class SquantifiedBigDecimal extends AnyRef

    Provides implicit conversions that allow BigDecimals to lead in * and / by Time operations

    Provides implicit conversions that allow BigDecimals to lead in * and / by Time operations

    BigDecimal(1.5) * Kilometers(10) should be(Kilometers(15))
  38. implicit class SquantifiedDouble extends AnyRef

    Provides implicit conversions that allow Doubles to lead in * and / by Time operations

    Provides implicit conversions that allow Doubles to lead in * and / by Time operations

    1.5 * Kilometers(10) should be(Kilometers(15))
  39. implicit class SquantifiedInt extends AnyRef

    Provides implicit conversions that allow Int to lead in * and / by Time operations

    Provides implicit conversions that allow Int to lead in * and / by Time operations

    5 * Kilometers(10) should be(Kilometers(15))
  40. implicit class SquantifiedLong extends AnyRef

    Provides implicit conversions that allow Longs to lead in * and / by Time operations

    Provides implicit conversions that allow Longs to lead in * and / by Time operations

    5 * Kilometers(10) should be(Kilometers(15))
  41. type Temperature = squants.thermal.Temperature
  42. type Time = squants.time.Time
  43. trait UnitConverter extends AnyRef

    A Unit of Measure that require a simple multiplier for converting to and from the underlying value's unit

  44. trait UnitOfMeasure[A <: Quantity[A]] extends Serializable

    A Unit of Measure is used to define the scale of a quantity measurement

    A Unit of Measure is used to define the scale of a quantity measurement

    Each Quantity Dimension must include at least one Unit of Measure, and one and only one Primary. Other units of measure are defined with conversionFactors relative to the Primary.

    A

    The type of Quantity being measured

    Since

    0.1

  45. type Velocity = squants.motion.Velocity
  46. type Volume = squants.space.Volume
  47. type VolumeFlow = squants.motion.VolumeFlow

Value Members

  1. val Amperes: squants.electro.Amperes.type
  2. val Candelas: squants.photo.Candelas.type
  3. val Kelvin: squants.thermal.Kelvin.type
  4. val Kilograms: squants.mass.Kilograms.type
  5. val Meters: squants.space.Meters.type
  6. val Moles: squants.mass.Moles.type
  7. val Radians: squants.space.Radians.type
  8. val Seconds: squants.time.Seconds.type
  9. val SquareRadians: SquaredRadians.type
  10. object BinarySystem

    Singleton defining Metric System multipliers

    Singleton defining Metric System multipliers

    Since

    0.1

  11. object Dimensionless extends Dimension[Dimensionless] with Serializable

    Factory singleton for squants.Dimensionless

  12. object DimensionlessConversions
  13. object Dozen extends DimensionlessUnit

    Represents a unit of dozen (12)

  14. object Each extends DimensionlessUnit with PrimaryUnit with SiUnit

    Represents a unit of singles

  15. object Gross extends DimensionlessUnit

    Represents a unit of gross (144)

  16. object MetricSystem

    Singleton defining Metric System multipliers

    Singleton defining Metric System multipliers

    Since

    0.1

  17. object Percent extends DimensionlessUnit

    Represents a number of hundredths (0.01)

  18. object Platform
  19. object SVector
  20. object Score extends DimensionlessUnit

    Represents a unit of scores (20)

Inherited from AnyRef

Inherited from Any

Ungrouped