SST 12.1.0
Structural Simulation Toolkit
SST::UnitAlgebra Class Reference

Performs Unit math in full precision. More...

#include <unitAlgebra.h>

Inheritance diagram for SST::UnitAlgebra:
SST::Core::Serialization::serializable SST::Core::Serialization::serializable_type< UnitAlgebra >

Public Member Functions

void init (const std::string &val)
 
 UnitAlgebra (const std::string &val)
 Create a new UnitAlgebra instance, and pre-populate with a parsed value. More...
 
 UnitAlgebra (const UnitAlgebra &)=default
 Copy constructor.
 
void print (std::ostream &stream)
 Print to an ostream the value.
 
void printWithBestSI (std::ostream &stream)
 Print to an ostream the value Formats the number using SI-prefixes.
 
std::string toString () const
 Return a string representation of this value.
 
std::string toStringBestSI () const
 Return a string representation of this value Formats the number using SI-prefixes.
 
UnitAlgebraoperator= (const std::string &v)
 
UnitAlgebraoperator*= (const UnitAlgebra &v)
 Multiply by an argument;.
 
template<typename T >
UnitAlgebraoperator*= (const T &v)
 Multiply by an argument;.
 
UnitAlgebraoperator/= (const UnitAlgebra &v)
 Divide by an argument;.
 
template<typename T >
UnitAlgebraoperator/= (const T &v)
 Divide by an argument;.
 
UnitAlgebraoperator+= (const UnitAlgebra &v)
 Add an argument;.
 
template<typename T >
UnitAlgebraoperator+= (const T &v)
 Multiply by an argument;.
 
UnitAlgebraoperator-= (const UnitAlgebra &v)
 Subtract an argument;.
 
template<typename T >
UnitAlgebraoperator-= (const T &v)
 Divide by an argument;.
 
bool operator> (const UnitAlgebra &v) const
 Compare if this object is greater than the argument.
 
bool operator>= (const UnitAlgebra &v) const
 Compare if this object is greater than, or equal to, the argument.
 
bool operator< (const UnitAlgebra &v) const
 Compare if this object is less than the argument.
 
bool operator<= (const UnitAlgebra &v) const
 Compare if this object is less than, or equal to, the argument.
 
bool operator== (const UnitAlgebra &v) const
 Compare if this object is equal to, the argument.
 
bool operator!= (const UnitAlgebra &v) const
 Compare if this object is not equal to, the argument.
 
UnitAlgebrainvert ()
 Apply a reciprocal operation to the object.
 
bool hasUnits (const std::string &u) const
 Returns true if the units in the parameter string are found in this object.
 
sst_big_num getValue () const
 Return the raw value.
 
int64_t getRoundedValue () const
 Return the rounded value as a 64bit integer.
 
double getDoubleValue () const
 
bool isValueZero () const
 
void serialize_order (SST::Core::Serialization::serializer &ser) override
 
- Public Member Functions inherited from SST::Core::Serialization::serializable
virtual const char * cls_name () const =0
 
virtual void serialize_order (serializer &ser)=0
 
virtual uint32_t cls_id () const =0
 
virtual std::string serialization_name () const =0
 

Additional Inherited Members

- Static Public Attributes inherited from SST::Core::Serialization::serializable
static constexpr uint32_t NullClsId = std::numeric_limits<uint32_t>::max()
 
- Protected Types inherited from SST::Core::Serialization::serializable
enum  cxn_flag_t { ConstructorFlag }
 
- Static Protected Member Functions inherited from SST::Core::Serialization::serializable
static void serializable_abort (uint32_t line, const char *file, const char *func, const char *obj)
 

Detailed Description

Performs Unit math in full precision.

Allows operations such as multiplying a frequency by 2.

Constructor & Destructor Documentation

◆ UnitAlgebra()

UnitAlgebra::UnitAlgebra ( const std::string &  val)

Create a new UnitAlgebra instance, and pre-populate with a parsed value.

Parameters
valValue to parse. It is of the following format:
val := NUMBER( )?UNITS
NUMBER := (-)?[0-9]+(.[0-9]+)?
UNITS := UNITGROUP(/UNITGROUP)
UNITGROUP := UNIT(-UNIT)*
UNIT := (SIPREFIX)?(BASEUNIT|COMPUNIT)
SIPREFIX := {a,f,p,n,u,m,[kKMGTPE]i?}
BASEUNIT := {s,B,b,events}
COMPUNIT := {Hz,hz,Bps,bps,event}

Member Function Documentation

◆ serialize_order()

void SST::UnitAlgebra::serialize_order ( SST::Core::Serialization::serializer ser)
inlineoverridevirtual

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