Unravel Engine C++ Reference
Loading...
Searching...
No Matches
format_bytes.cpp
Go to the documentation of this file.
1#include "format_bytes.h"
2
3#include <bx/string.h>
4
5#include <algorithm>
6#include <array>
7
8namespace unravel
9{
10namespace
11{
12auto clamp_non_negative(std::int64_t bytes) -> std::uint64_t
13{
14 return static_cast<std::uint64_t>(std::max<std::int64_t>(0, bytes));
15}
16
17void write_formatted(std::uint64_t bytes, char* out, std::size_t out_size, std::uint8_t num_frac)
18{
19 if(out == nullptr || out_size == 0)
20 {
21 return;
22 }
23 if(num_frac == 0)
24 {
25 bx::prettify(out, static_cast<int32_t>(out_size), bytes, bx::Units::KibiByte);
26 return;
27 }
28 const bx::FixedStringT<32> formatted = bx::toHuman<32>(bytes, bx::Units::KibiByte, num_frac);
29 bx::strCopy(out, static_cast<int32_t>(out_size), formatted.getCPtr());
30}
31} // namespace
32
33auto format_bytes(std::uint64_t bytes, std::uint8_t num_frac) -> std::string
34{
35 std::array<char, 32> buffer{};
36 write_formatted(bytes, buffer.data(), buffer.size(), num_frac);
37 return buffer.data();
38}
39
40auto format_bytes(std::int64_t bytes, std::uint8_t num_frac) -> std::string
41{
42 return format_bytes(clamp_non_negative(bytes), num_frac);
43}
44
45void format_bytes(std::uint64_t bytes, char* out, std::size_t out_size, std::uint8_t num_frac)
46{
47 write_formatted(bytes, out, out_size, num_frac);
48}
49
50} // namespace unravel
std::uint64_t bytes
Definition eviction.cpp:823
auto format_bytes(std::uint64_t bytes, std::uint8_t num_frac) -> std::string