Fix ByteSize formatting

This commit is contained in:
2023-08-23 01:54:11 +02:00
parent d84d2935ff
commit 27c9970c1a

View File

@@ -57,7 +57,7 @@ namespace openVulkanoCpp
static constexpr std::array<uint64_t, 13> FACTORS = ByteSizeUnitHelper::BuildFactors(); static constexpr std::array<uint64_t, 13> FACTORS = ByteSizeUnitHelper::BuildFactors();
static constexpr std::array<double, 13> DIVISORS = ByteSizeUnitHelper::BuildDivisors(); static constexpr std::array<double, 13> DIVISORS = ByteSizeUnitHelper::BuildDivisors();
public: public:
enum Unit : int { B, kiB, MiB, GiB, TiB, PiB, EiB, kB, MB, GB, TB, PB, EB }; enum Unit : int { B = 0, kiB, MiB, GiB, TiB, PiB, EiB, kB, MB, GB, TB, PB, EB };
constexpr ByteSizeUnit(Unit unit) : unit(unit) {} constexpr ByteSizeUnit(Unit unit) : unit(unit) {}
@@ -79,7 +79,7 @@ namespace openVulkanoCpp
[[nodiscard]] static constexpr ByteSizeUnit GetClosestUnit(uint64_t size, bool si = false) [[nodiscard]] static constexpr ByteSizeUnit GetClosestUnit(uint64_t size, bool si = false)
{ {
for (int i = (si ? EB : EiB); i <= (si ? kB : kiB); i--) for (int i = (si ? EB : EiB); i >= (si ? kB : kiB); i--)
{ {
if (size > FACTORS[i]) return { static_cast<Unit>(i) }; if (size > FACTORS[i]) return { static_cast<Unit>(i) };
} }
@@ -118,7 +118,7 @@ namespace openVulkanoCpp
{ {
oss << std::setprecision(3); oss << std::setprecision(3);
auto unit = ByteSizeUnit::GetClosestUnit(bytes, si); auto unit = ByteSizeUnit::GetClosestUnit(bytes, si);
oss << bytes * unit.GetDivisor() << ' ' << unit.GetName(); oss << static_cast<double>(bytes) * unit.GetDivisor() << ' ' << unit.GetName();
return oss; return oss;
} }