summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Rosdahl <joel@rosdahl.net>2022-10-05 20:58:01 +0200
committerJoel Rosdahl <joel@rosdahl.net>2022-10-05 21:18:02 +0200
commit3decb4f2accfaba433fbfb9716a0c30792d7fc7b (patch)
treeb087a8f0479d83138ba1f217008ceb2ceff5e4c9
parent425461ec69586e09c49229138e55267bc8d180fd (diff)
downloadccache-3decb4f2accfaba433fbfb9716a0c30792d7fc7b.tar.gz
enhance: Add util::to_string instantiations for Bytes and span
-rw-r--r--src/util/string.hpp16
-rw-r--r--unittest/test_util_string.cpp4
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")