diff options
author | Joel Rosdahl <joel@rosdahl.net> | 2022-10-05 20:58:01 +0200 |
---|---|---|
committer | Joel Rosdahl <joel@rosdahl.net> | 2022-10-05 21:18:02 +0200 |
commit | 3decb4f2accfaba433fbfb9716a0c30792d7fc7b (patch) | |
tree | b087a8f0479d83138ba1f217008ceb2ceff5e4c9 | |
parent | 425461ec69586e09c49229138e55267bc8d180fd (diff) | |
download | ccache-3decb4f2accfaba433fbfb9716a0c30792d7fc7b.tar.gz |
enhance: Add util::to_string instantiations for Bytes and span
-rw-r--r-- | src/util/string.hpp | 16 | ||||
-rw-r--r-- | unittest/test_util_string.cpp | 4 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/util/string.hpp b/src/util/string.hpp index d9c7fe59..0e48bc4e 100644 --- a/src/util/string.hpp +++ b/src/util/string.hpp @@ -18,6 +18,8 @@ #pragma once +#include <util/Bytes.hpp> + #include <third_party/nonstd/expected.hpp> #include <third_party/nonstd/span.hpp> @@ -195,6 +197,20 @@ to_string(const std::string_view& sv) return std::string(sv); } +template<> +inline std::string +to_string(const nonstd::span<const uint8_t>& bytes) +{ + return std::string(to_string_view(bytes)); +} + +template<> +inline std::string +to_string(const util::Bytes& bytes) +{ + return std::string(to_string_view(bytes)); +} + inline std::string_view to_string_view(nonstd::span<const uint8_t> data) { diff --git a/unittest/test_util_string.cpp b/unittest/test_util_string.cpp index 2a45fbcd..62696635 100644 --- a/unittest/test_util_string.cpp +++ b/unittest/test_util_string.cpp @@ -289,10 +289,14 @@ TEST_CASE("util::strip_whitespace") TEST_CASE("util::to_string") { + const uint8_t bytes[] = {'f', 'o', 'o'}; const char str[] = "foo"; CHECK(util::to_string(std::string(str)) == std::string(str)); CHECK(util::to_string(std::string_view(str)) == std::string(str)); + CHECK(util::to_string(nonstd::span<const uint8_t>(bytes)) + == std::string(str)); + CHECK(util::to_string(util::Bytes(bytes, 3)) == std::string(str)); } TEST_CASE("util::to_string_view") |