Brick
Loading...
Searching...
No Matches
units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles > Class Template Reference

#include <units.h>

Description

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
class units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >

This class provides a physical unit conversion and dimensional analysis API. Quantities define a unit given the SI base dimensions. The dimensions are the exponents of each base, Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles. E.g. Velocity is length^1 * time^-1, length/time... Arithmetic and math functions can be used on Quantities like normal. Mass * Mass = Area.

Public Types

using mass = Mass
using length = Length
using time = Time
using current = Current
using angle = Angle
using temperature = Temperature
using luminosity = Luminosity
using moles = Moles
using Self = Quantity<Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles>

Public Member Functions

constexpr Quantity ()
 Default to value of 0.
constexpr Quantity (double value)
constexpr Quantity (double value)
constexpr Quantity (double value, Self unit)
constexpr operator double () const
constexpr Quantity (const Self &other)=default
constexpr double internal () const
constexpr double to (Self unit) const
constexpr Self & operator+= (Self other)
 Adds another quantity's value to this.
constexpr Self & operator+= (double other)
constexpr Self & operator-= (Self other)
 Subtracts another quantity's value from this.
constexpr Self & operator-= (double other)
constexpr Self & operator*= (double scalar)
 Multiplies this quantity by a scalar.
constexpr Self & operator/= (double divisor)
 Divides this quantity by a scalar.
constexpr Self & operator= (const double &rhs)

Static Public Attributes

static constexpr bool is_dimensionless = std::is_same_v<Self, Quantity<>>

Protected Attributes

double value

Constructor & Destructor Documentation

◆ Quantity() [1/4]

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::Quantity ( double value)
inlineexplicitconstexpr

Construct a new Quantity object using the SI base unit

Parameters
valueto initialize with

◆ Quantity() [2/4]

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::Quantity ( double value)
inlineconstexpr

Construct a new Quantity object

Parameters
valueto initialize with

◆ Quantity() [3/4]

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::Quantity ( double value,
Self unit )
inlineconstexpr

Construct a quantity from a numeric value expressed in a specific unit.

Parameters
valuenumeric value in the provided unit
unitunit in which value is expressed

◆ Quantity() [4/4]

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::Quantity ( const Self & other)
constexprdefault

Constructor copying from a quantity with the same dimensions

Parameters
otherthe quantity to copy

Member Function Documentation

◆ internal()

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
double units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::internal ( ) const
inlineconstexpr

Gets the internal raw value

Returns
constexpr internal value

◆ operator double()

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::operator double ( ) const
inlineconstexpr

Double cast overload, gets internal value.

Returns
internal value

◆ operator+=()

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
Self & units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::operator+= ( double other)
inlineconstexpr

Adds a double to this internal value Only allowed if this quantity is dimensionless

◆ operator-=()

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
Self & units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::operator-= ( double other)
inlineconstexpr

Subtracts a double from this internal value Only allowed if this quantity is dimensionless

◆ operator=()

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
Self & units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::operator= ( const double & rhs)
inlineconstexpr

Sets this quantity's value to another value Only allowed if the quantity is dimensionless

◆ to()

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
double units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::to ( Self unit) const
inlineconstexpr

Gets this quantity's numeric value expressed in a specific unit. e.g. double v_mps = v.to(mps);


The documentation for this class was generated from the following file: