Made Format methods const and nodiscard, passing suffix to the Format function

This commit is contained in:
Vladyslav Baranovskyi
2024-09-23 16:09:58 +03:00
parent c01155d8e4
commit ad7997cdf5
2 changed files with 17 additions and 17 deletions

View File

@@ -11,7 +11,8 @@
namespace
{
template<typename T> std::string FormatValue(T value, int precision, bool trimTrailingZeros = false)
template<typename T>
std::string FormatValue(T value, int precision, bool trimTrailingZeros, const std::string& suffix)
{
std::ostringstream out;
out << std::fixed << std::setprecision(precision) << value;
@@ -26,7 +27,7 @@ namespace
result.pop_back();
}
}
result += suffix;
return result;
}
}
@@ -38,19 +39,19 @@ namespace OpenVulkano
{
}
std::string UnitFormatter::Format(units::length::meter_t distance)
std::string UnitFormatter::Format(units::length::meter_t distance) const
{
if (metric)
{
if (distance > units::length::meter_t(0) && distance < units::length::meter_t(0.1))
{
return FormatValue(units::length::millimeter_t(distance).value(), precision, trimTrailingZeros) + " mm";
return FormatValue(units::length::millimeter_t(distance).value(), precision, trimTrailingZeros, " mm");
}
else if (distance >= units::length::kilometer_t(1))
{
return FormatValue(units::length::kilometer_t(distance).value(), precision, trimTrailingZeros) + " km";
return FormatValue(units::length::kilometer_t(distance).value(), precision, trimTrailingZeros, " km");
}
return FormatValue(distance.value(), precision, trimTrailingZeros) + " m";
return FormatValue(distance.value(), precision, trimTrailingZeros, " m");
}
else
{
@@ -59,35 +60,34 @@ namespace OpenVulkano
if (distanceFeet > 0 && distanceFeet < 0.1)
{
return FormatValue(distanceInches, precision, trimTrailingZeros) + " in";
return FormatValue(distanceInches, precision, trimTrailingZeros, " in");
}
else if (distanceFeet >= 5280.0)
{
return FormatValue(units::length::mile_t(distance).value(), precision, trimTrailingZeros) + " mi";
return FormatValue(units::length::mile_t(distance).value(), precision, trimTrailingZeros, " mi");
}
return FormatValue(distanceFeet, precision, trimTrailingZeros) + " ft";
return FormatValue(distanceFeet, precision, trimTrailingZeros, " ft");
}
}
std::string UnitFormatter::Format(units::area::square_meter_t area)
std::string UnitFormatter::Format(units::area::square_meter_t area) const
{
if (metric)
{
if (area >= units::area::square_kilometer_t(1))
{
return FormatValue(units::area::square_kilometer_t(area).value(), precision, trimTrailingZeros)
+ " km²";
return FormatValue(units::area::square_kilometer_t(area).value(), precision, trimTrailingZeros, " km²");
}
return FormatValue(area.value(), precision, trimTrailingZeros) + "";
return FormatValue(area.value(), precision, trimTrailingZeros, "");
}
else
{
auto areaSquareFeet = units::area::square_foot_t(area).value();
if (areaSquareFeet >= 27878400.0)
{
return FormatValue(units::area::square_mile_t(area).value(), precision, trimTrailingZeros) + " mi²";
return FormatValue(units::area::square_mile_t(area).value(), precision, trimTrailingZeros, " mi²");
}
return FormatValue(areaSquareFeet, precision, trimTrailingZeros) + " ft²";
return FormatValue(areaSquareFeet, precision, trimTrailingZeros, " ft²");
}
}
}

View File

@@ -18,7 +18,7 @@ namespace OpenVulkano
public:
UnitFormatter(bool useMetric = true, int precisionDigits = 3, bool doTrimTrailingZeros = true);
std::string Format(units::length::meter_t distance);
std::string Format(units::area::square_meter_t area);
[[nodiscard]] std::string Format(units::length::meter_t distance) const;
[[nodiscard]] std::string Format(units::area::square_meter_t area) const;
};
}