25 #ifndef UNITEXPRESSIONWALKER_H 26 #define UNITEXPRESSIONWALKER_H 41 {
if (
check && x.
units!=
units)
throw std::runtime_error(
"Incommensurate units");}
43 {
if (
check && !
units.empty())
throw std::runtime_error(
"Should be dimensionless");}
55 for (
auto& i: x.
units)
56 units[i.first]+=i.second;
61 {
auto tmp=*
this;
return tmp*=x;}
64 for (
auto& i: x.
units)
65 units[i.first]-=i.second;
70 {
auto tmp=*
this;
return tmp/=x;}
UnitsExpressionWalker operator-=(const UnitsExpressionWalker &x)
bool operator==(const UnitsExpressionWalker &x) const
void checkDimensionless() const
UnitsExpressionWalker operator/(const UnitsExpressionWalker &x) const
UnitsExpressionWalker operator%(const UnitsExpressionWalker &x) const
UnitsExpressionWalker operator+(const UnitsExpressionWalker &x) const
Creation and access to the minskyTCL_obj object, which has code to record whenever Minsky's state cha...
represents the units (in sense of dimensional analysis) of a variable.
UnitsExpressionWalker operator*=(const UnitsExpressionWalker &x)
bool operator<=(const UnitsExpressionWalker &x) const
void checkSameDims(const UnitsExpressionWalker &x) const
UnitsExpressionWalker(double x)
UnitsExpressionWalker operator*(const UnitsExpressionWalker &x) const
UnitsExpressionWalker operator+=(const UnitsExpressionWalker &x)
bool operator>(const UnitsExpressionWalker &x) const
UnitsExpressionWalker operator/=(const UnitsExpressionWalker &x)
bool operator>=(const UnitsExpressionWalker &x) const
bool operator!=(const UnitsExpressionWalker &x) const
UnitsExpressionWalker operator &&(const UnitsExpressionWalker &x) const
UnitsExpressionWalker operator||(const UnitsExpressionWalker &x) const
bool operator<(const UnitsExpressionWalker &x) const
UnitsExpressionWalker(const std::string &units)
UnitsExpressionWalker operator^(const UnitsExpressionWalker &x) const
UnitsExpressionWalker operator-(const UnitsExpressionWalker &x) const