From f8d9ac5d13dd37b8b57af0478e77ba1e75c813aa Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Tue, 11 May 2021 13:05:39 +0200 Subject: Adding zenservice code --- zencore/streamutil.cpp | 104 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 zencore/streamutil.cpp (limited to 'zencore/streamutil.cpp') diff --git a/zencore/streamutil.cpp b/zencore/streamutil.cpp new file mode 100644 index 000000000..d3ed5ceaa --- /dev/null +++ b/zencore/streamutil.cpp @@ -0,0 +1,104 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#include +#include + +namespace zen { + +BinaryWriter& +operator<<(BinaryWriter& writer, const std::string_view& value) +{ + writer.Write(value.data(), value.size()); + writer << uint8_t(0); + + return writer; +} + +BinaryReader& +operator>>(BinaryReader& reader, std::string& value) +{ + for (;;) + { + uint8_t x; + reader.Read(&x, 1); + + if (x == 0) + return reader; + + value.push_back(char(x)); + } +} + +BinaryWriter& +operator<<(BinaryWriter& writer, const std::wstring_view& value) +{ + // write as utf8 + + ExtendableStringBuilder<128> utf8; + WideToUtf8(value, utf8); + + writer.Write(utf8.c_str(), utf8.Size() + 1); + + return writer; +} + +BinaryReader& +operator>>(BinaryReader& reader, std::wstring& value) +{ + // read as utf8 + + std::string v8; + reader >> v8; + + ExtendableWideStringBuilder<128> wstr; + Utf8ToWide(v8, wstr); + + value = wstr.c_str(); + + return reader; +} + +TextWriter& +operator<<(TextWriter& writer, const zen::SHA1& value) +{ + zen::SHA1::String_t buffer; + value.ToHexString(buffer); + + writer.Write(buffer, zen::SHA1::StringLength); + + return writer; +} + +TextWriter& +operator<<(TextWriter& writer, const zen::BLAKE3& value) +{ + zen::BLAKE3::String_t buffer; + value.ToHexString(buffer); + + writer.Write(buffer, zen::BLAKE3::StringLength); + + return writer; +} + +TextWriter& +operator<<(TextWriter& writer, const zen::IoHash& value) +{ + zen::IoHash::String_t buffer; + value.ToHexString(buffer); + + writer.Write(buffer, zen::IoHash::StringLength); + + return writer; +} + +TextWriter& +operator<<(TextWriter& writer, const std::wstring_view& value) +{ + ExtendableStringBuilder<128> v8; + WideToUtf8(value, v8); + + writer.Write(v8.c_str(), v8.Size()); + return writer; +} + +} // namespace zen -- cgit v1.2.3