base: Add Number_of_bytes::print method

This method attempts to print the number with a K/M/G unit if possible
and thereby increases the human readability of generated output.
This commit is contained in:
Norman Feske 2017-02-16 17:24:44 +01:00 committed by Christian Helmuth
parent 8cb0dc9c16
commit bfdadc55b2

View File

@ -51,6 +51,18 @@ class Genode::Number_of_bytes
* Convert number of bytes to 'size_t' value
*/
operator size_t() const { return _n; }
void print(Output &output) const
{
using Genode::print;
enum { KB = 1024UL, MB = KB*1024UL, GB = MB*1024UL };
if (_n % GB == 0) print(output, _n/GB, "G");
else if (_n % MB == 0) print(output, _n/MB, "M");
else if (_n % KB == 0) print(output, _n/KB, "K");
else print(output, _n);
}
};