mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-15 13:48:17 +00:00
util/string.h: ease custom Number_of_bytes types
This patch exposes the formatted K/M/G byte output of 'Number_of_bytes' as a class template function that accepts different basic types. This enables the easy creation of a formatted output type for a type larger than size_t. Introduced in the context of issue #5489
This commit is contained in:
@ -55,18 +55,20 @@ class Genode::Number_of_bytes
|
|||||||
*/
|
*/
|
||||||
operator size_t() const { return _n; }
|
operator size_t() const { return _n; }
|
||||||
|
|
||||||
void print(Output &output) const
|
static void print(Output &output, auto const n)
|
||||||
{
|
{
|
||||||
using Genode::print;
|
using Genode::print;
|
||||||
|
|
||||||
enum { KB = 1024UL, MB = KB*1024UL, GB = MB*1024UL };
|
enum { KB = 1024U, MB = KB*1024U, GB = MB*1024U };
|
||||||
|
|
||||||
if (_n == 0) print(output, 0);
|
if (n == 0) print(output, 0);
|
||||||
else if (_n % GB == 0) print(output, _n/GB, "G");
|
else if (n % GB == 0) print(output, n/GB, "G");
|
||||||
else if (_n % MB == 0) print(output, _n/MB, "M");
|
else if (n % MB == 0) print(output, n/MB, "M");
|
||||||
else if (_n % KB == 0) print(output, _n/KB, "K");
|
else if (n % KB == 0) print(output, n/KB, "K");
|
||||||
else print(output, _n);
|
else print(output, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void print(Output &output) const { print(output, _n); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user