Make Unit string output parsably and add Pascale and Newtons
This commit is contained in:
@@ -174,42 +174,59 @@ std::string Unit::getString(void) const
|
||||
Sig.AmountOfSubstance > 0 ||
|
||||
Sig.LuminoseIntensity > 0 ||
|
||||
Sig.Angle > 0 ){
|
||||
|
||||
bool mult = false;
|
||||
if(Sig.Length > 0){
|
||||
mult = true;
|
||||
ret << "mm";
|
||||
if(Sig.Length >1)
|
||||
ret << "^" << Sig.Length;
|
||||
}
|
||||
if(Sig.Mass > 0){
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "kg";
|
||||
if(Sig.Mass >1)
|
||||
ret << "^" << Sig.Mass;
|
||||
}
|
||||
if(Sig.Time > 0){
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "s";
|
||||
if(Sig.Time >1)
|
||||
ret << "^" << Sig.Time;
|
||||
}
|
||||
if(Sig.ElectricCurrent > 0){
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "A";
|
||||
if(Sig.ElectricCurrent >1)
|
||||
ret << "^" << Sig.ElectricCurrent;
|
||||
}
|
||||
if(Sig.ThermodynamicTemperature > 0){
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "K";
|
||||
if(Sig.ThermodynamicTemperature >1)
|
||||
ret << "^" << Sig.ThermodynamicTemperature;
|
||||
}
|
||||
if(Sig.AmountOfSubstance > 0){
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "mol";
|
||||
if(Sig.AmountOfSubstance >1)
|
||||
ret << "^" << Sig.AmountOfSubstance;
|
||||
}
|
||||
if(Sig.LuminoseIntensity > 0){
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "cd";
|
||||
if(Sig.LuminoseIntensity >1)
|
||||
ret << "^" << Sig.LuminoseIntensity;
|
||||
}
|
||||
if(Sig.Angle > 0){
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "deg";
|
||||
if(Sig.Angle >1)
|
||||
ret << "^" << Sig.Angle;
|
||||
@@ -227,46 +244,73 @@ std::string Unit::getString(void) const
|
||||
Sig.LuminoseIntensity < 0 ||
|
||||
Sig.Angle < 0 ){
|
||||
ret << "/";
|
||||
|
||||
int nnom = Sig.Length<0?1:2 +
|
||||
Sig.Mass<0?1:2 +
|
||||
Sig.Time<0?1:2 +
|
||||
Sig.ElectricCurrent<0?1:2 +
|
||||
Sig.ThermodynamicTemperature<0?1:2 +
|
||||
Sig.AmountOfSubstance<0?1:2 +
|
||||
Sig.LuminoseIntensity<0?1:2 +
|
||||
Sig.Angle<0?1:2 ;
|
||||
if (nnom > 1) ret << '(';
|
||||
bool mult=false;
|
||||
if(Sig.Length < 0){
|
||||
ret << "mm";
|
||||
mult = true;
|
||||
if(Sig.Length <-1)
|
||||
ret << "^" << abs(Sig.Length);
|
||||
}
|
||||
if(Sig.Mass < 0){
|
||||
ret << "kg";
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "kg";
|
||||
if(Sig.Mass <-1)
|
||||
ret << "^" << abs(Sig.Mass);
|
||||
}
|
||||
if(Sig.Time < 0){
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "s";
|
||||
if(Sig.Time <-1)
|
||||
ret << "^" << abs(Sig.Time);
|
||||
}
|
||||
if(Sig.ElectricCurrent < 0){
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "A";
|
||||
if(Sig.ElectricCurrent <-1)
|
||||
ret << "^" << abs(Sig.ElectricCurrent);
|
||||
}
|
||||
if(Sig.ThermodynamicTemperature < 0){
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "K";
|
||||
if(Sig.ThermodynamicTemperature <-1)
|
||||
ret << "^" << abs(Sig.ThermodynamicTemperature);
|
||||
}
|
||||
if(Sig.AmountOfSubstance < 0){
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "mol";
|
||||
if(Sig.AmountOfSubstance <-1)
|
||||
ret << "^" << abs(Sig.AmountOfSubstance);
|
||||
}
|
||||
if(Sig.LuminoseIntensity < 0){
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "cd";
|
||||
if(Sig.LuminoseIntensity <-1)
|
||||
ret << "^" << abs(Sig.LuminoseIntensity);
|
||||
}
|
||||
if(Sig.Angle < 0){
|
||||
if(mult) ret<<'*';
|
||||
mult = true;
|
||||
ret << "deg";
|
||||
if(Sig.Angle <-1)
|
||||
ret << "^" << abs(Sig.Angle);
|
||||
}
|
||||
if (nnom > 1) ret << ')';
|
||||
}
|
||||
|
||||
return ret.str();
|
||||
|
||||
Reference in New Issue
Block a user