Make some utility functions return std::string to simplify code (#2368)

* tr_formatter_speed_KBps returns std::string

* tr_formatter_mem_B returns std::string

* tr_formatter_size_B returns std::string

* tr_strpercent/tr_strratio returns std::string
This commit is contained in:
Mike Gelfand
2021-12-31 00:30:21 +00:00
committed by GitHub
parent 26110d5c8e
commit d8d361e491
15 changed files with 146 additions and 252 deletions

View File

@@ -1181,36 +1181,37 @@ static char* tr_strtruncd(char* buf, double x, int precision, size_t buflen)
return buf;
}
char* tr_strpercent(char* buf, double x, size_t buflen)
std::string tr_strpercent(double x)
{
auto buf = std::array<char, 64>{};
if (x < 100.0)
{
tr_strtruncd(buf, x, 1, buflen);
tr_strtruncd(std::data(buf), x, 1, std::size(buf));
}
else
{
tr_strtruncd(buf, x, 0, buflen);
tr_strtruncd(std::data(buf), x, 0, std::size(buf));
}
return buf;
return std::data(buf);
}
char* tr_strratio(char* buf, size_t buflen, double ratio, char const* infinity)
std::string tr_strratio(double ratio, char const* infinity)
{
if ((int)ratio == TR_RATIO_NA)
{
tr_strlcpy(buf, _("None"), buflen);
}
else if ((int)ratio == TR_RATIO_INF)
{
tr_strlcpy(buf, infinity, buflen);
}
else
{
tr_strpercent(buf, ratio, buflen);
return _("None");
}
return buf;
if ((int)ratio == TR_RATIO_INF)
{
auto buf = std::array<char, 64>{};
tr_strlcpy(std::data(buf), infinity, std::size(buf));
return std::data(buf);
}
return tr_strpercent(ratio);
}
/***
@@ -1420,9 +1421,10 @@ void tr_formatter_size_init(uint64_t kilo, char const* kb, char const* mb, char
formatter_init(size_units, kilo, kb, mb, gb, tb);
}
char* tr_formatter_size_B(char* buf, uint64_t bytes, size_t buflen)
std::string tr_formatter_size_B(uint64_t bytes)
{
return formatter_get_size_str(size_units, buf, bytes, buflen);
auto buf = std::array<char, 64>{};
return formatter_get_size_str(size_units, std::data(buf), bytes, std::size(buf));
}
static formatter_units speed_units;
@@ -1435,11 +1437,13 @@ void tr_formatter_speed_init(size_t kilo, char const* kb, char const* mb, char c
formatter_init(speed_units, kilo, kb, mb, gb, tb);
}
char* tr_formatter_speed_KBps(char* buf, double KBps, size_t buflen)
std::string tr_formatter_speed_KBps(double KBps)
{
auto buf = std::array<char, 64>{};
if (auto speed = KBps; speed <= 999.95) /* 0.0 KB to 999.9 KB */
{
tr_snprintf(buf, buflen, "%d %s", (int)speed, speed_units[TR_FMT_KB].name);
tr_snprintf(std::data(buf), std::size(buf), "%d %s", (int)speed, speed_units[TR_FMT_KB].name);
}
else
{
@@ -1449,19 +1453,19 @@ char* tr_formatter_speed_KBps(char* buf, double KBps, size_t buflen)
if (speed <= 99.995) /* 0.98 MB to 99.99 MB */
{
tr_snprintf(buf, buflen, "%.2f %s", speed, speed_units[TR_FMT_MB].name);
tr_snprintf(std::data(buf), std::size(buf), "%.2f %s", speed, speed_units[TR_FMT_MB].name);
}
else if (speed <= 999.95) /* 100.0 MB to 999.9 MB */
{
tr_snprintf(buf, buflen, "%.1f %s", speed, speed_units[TR_FMT_MB].name);
tr_snprintf(std::data(buf), std::size(buf), "%.1f %s", speed, speed_units[TR_FMT_MB].name);
}
else
{
tr_snprintf(buf, buflen, "%.1f %s", speed / K, speed_units[TR_FMT_GB].name);
tr_snprintf(std::data(buf), std::size(buf), "%.1f %s", speed / K, speed_units[TR_FMT_GB].name);
}
}
return buf;
return std::data(buf);
}
static formatter_units mem_units;
@@ -1474,9 +1478,10 @@ void tr_formatter_mem_init(size_t kilo, char const* kb, char const* mb, char con
formatter_init(mem_units, kilo, kb, mb, gb, tb);
}
char* tr_formatter_mem_B(char* buf, size_t bytes_per_second, size_t buflen)
std::string tr_formatter_mem_B(size_t bytes_per_second)
{
return formatter_get_size_str(mem_units, buf, bytes_per_second, buflen);
auto buf = std::array<char, 64>{};
return formatter_get_size_str(mem_units, std::data(buf), bytes_per_second, std::size(buf));
}
void tr_formatter_get_units(void* vdict)