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 threadsafe.
Typedefs and implicits for common usages
 Source
 package.scala
 Version
0.1
 Since
0.1
 Alphabetic
 By Inheritance
 squants
 AnyRef
 Any
 Hide All
 Show All
 Public
 All
Type Members

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
 type Acceleration = squants.motion.Acceleration
 type Angle = squants.space.Angle
 type Area = squants.space.Area

trait
BaseDimension extends AnyRef
SI Base Quantity
 type ChemicalAmount = squants.mass.ChemicalAmount
 type Density = squants.mass.Density

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

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

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

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
 type ElectricCurrent = squants.electro.ElectricCurrent
 type Energy = squants.energy.Energy
 type Force = squants.motion.Force
 type Jerk = squants.motion.Jerk
 type Length = squants.space.Length
 trait LikeRatio[A <: Quantity[A]] extends Ratio[A, A]
 type LuminousIntensity = squants.photo.LuminousIntensity
 type Mass = squants.mass.Mass
 type MassFlow = squants.motion.MassFlow
 type Momentum = squants.motion.Momentum
 type Money = squants.market.Money
 type Power = squants.energy.Power
 type PowerRamp = squants.energy.PowerRamp
 type Price[A <: Quantity[A]] = squants.market.Price[A]

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

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
 case class QuantityParseException(message: String, expression: String) extends Exception with Product with Serializable

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
 type QuantitySeries[A <: Quantity[A]] = IndexedSeq[QuantityRange[A]]

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

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

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

trait
SiBaseUnit extends SiUnit
A marker trait identifying SI Base Units

trait
SiUnit extends AnyRef
A marker trait identifying SI Units
 type SolidAngle = squants.space.SolidAngle

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))

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))

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))

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))
 type Temperature = squants.thermal.Temperature
 type Time = squants.time.Time

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

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
 type Velocity = squants.motion.Velocity
 type Volume = squants.space.Volume
 type VolumeFlow = squants.motion.VolumeFlow
Value Members
 val Amperes: squants.electro.Amperes.type
 val Candelas: squants.photo.Candelas.type
 val Kelvin: squants.thermal.Kelvin.type
 val Kilograms: squants.mass.Kilograms.type
 val Meters: squants.space.Meters.type
 val Moles: squants.mass.Moles.type
 val Radians: squants.space.Radians.type
 val Seconds: squants.time.Seconds.type
 val SquareRadians: SquaredRadians.type

object
BinarySystem
Singleton defining Metric System multipliers
Singleton defining Metric System multipliers
 Since
0.1

object
Dimensionless extends Dimension[Dimensionless] with Serializable
Factory singleton for squants.Dimensionless
 object DimensionlessConversions

object
Dozen extends DimensionlessUnit
Represents a unit of dozen (12)

object
Each extends DimensionlessUnit with PrimaryUnit with SiUnit
Represents a unit of singles

object
Gross extends DimensionlessUnit
Represents a unit of gross (144)

object
MetricSystem
Singleton defining Metric System multipliers
Singleton defining Metric System multipliers
 Since
0.1

object
Percent extends DimensionlessUnit
Represents a number of hundredths (0.01)
 object Platform
 object SVector

object
Score extends DimensionlessUnit
Represents a unit of scores (20)