mirror of
https://github.com/matrix-construct/construct
synced 2024-11-18 16:00:57 +01:00
ircd: Add pretty IEC unit printing utils.
This commit is contained in:
parent
db9d1dcb99
commit
5e158e37a5
2 changed files with 39 additions and 0 deletions
|
@ -36,6 +36,9 @@ namespace ircd
|
||||||
const_buffer a2u(const mutable_buffer &out, const const_buffer &in);
|
const_buffer a2u(const mutable_buffer &out, const const_buffer &in);
|
||||||
string_view u2a(const mutable_buffer &out, const const_buffer &in);
|
string_view u2a(const mutable_buffer &out, const const_buffer &in);
|
||||||
std::string u2a(const const_buffer &in);
|
std::string u2a(const const_buffer &in);
|
||||||
|
|
||||||
|
string_view pretty_iec_unit(const mutable_buffer &out, const uint64_t &value);
|
||||||
|
std::string pretty_iec_unit(const uint64_t &value);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace ircd
|
namespace ircd
|
||||||
|
|
|
@ -22,6 +22,42 @@
|
||||||
// misc util
|
// misc util
|
||||||
//
|
//
|
||||||
|
|
||||||
|
std::string
|
||||||
|
ircd::pretty_iec_unit(const uint64_t &value)
|
||||||
|
{
|
||||||
|
return util::string(32, [&value]
|
||||||
|
(const mutable_buffer &out)
|
||||||
|
{
|
||||||
|
return pretty_iec_unit(out, value);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ircd::string_view
|
||||||
|
ircd::pretty_iec_unit(const mutable_buffer &out,
|
||||||
|
const uint64_t &value)
|
||||||
|
try
|
||||||
|
{
|
||||||
|
auto pos(0);
|
||||||
|
auto v(value);
|
||||||
|
for(; v > 1024; v /= 1024, ++pos);
|
||||||
|
static const std::array<string_view, 7> unit
|
||||||
|
{
|
||||||
|
"B", " KiB", "MiB", "GiB", "TiB", "PiB", "EiB"
|
||||||
|
};
|
||||||
|
|
||||||
|
return fmt::sprintf
|
||||||
|
{
|
||||||
|
out, "%lu %s", v, unit.at(pos)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
catch(const std::out_of_range &e)
|
||||||
|
{
|
||||||
|
return fmt::sprintf
|
||||||
|
{
|
||||||
|
out, "%lu B", value
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
std::string
|
std::string
|
||||||
ircd::u2a(const const_buffer &in)
|
ircd::u2a(const const_buffer &in)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue