aboutsummaryrefslogtreecommitdiff
path: root/zencore/xxhash.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-05-11 13:05:39 +0200
committerStefan Boberg <[email protected]>2021-05-11 13:05:39 +0200
commitf8d9ac5d13dd37b8b57af0478e77ba1e75c813aa (patch)
tree1daf7621e110d48acd5e12e3073ce48ef0dd11b2 /zencore/xxhash.cpp
downloadzen-f8d9ac5d13dd37b8b57af0478e77ba1e75c813aa.tar.xz
zen-f8d9ac5d13dd37b8b57af0478e77ba1e75c813aa.zip
Adding zenservice code
Diffstat (limited to 'zencore/xxhash.cpp')
-rw-r--r--zencore/xxhash.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/zencore/xxhash.cpp b/zencore/xxhash.cpp
new file mode 100644
index 000000000..a20ee10bd
--- /dev/null
+++ b/zencore/xxhash.cpp
@@ -0,0 +1,50 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include <zencore/xxhash.h>
+
+#include <zencore/string.h>
+
+#include <doctest/doctest.h>
+#include <gsl/gsl-lite.hpp>
+
+namespace zen {
+
+XXH3_128 XXH3_128::Zero; // Initialized to all zeros
+
+XXH3_128
+XXH3_128::FromHexString(const char* InString)
+{
+ return FromHexString({InString, sizeof(XXH3_128::Hash) * 2});
+}
+
+XXH3_128
+XXH3_128::FromHexString(std::string_view InString)
+{
+ ZEN_ASSERT(InString.size() == 2 * sizeof(XXH3_128::Hash));
+
+ XXH3_128 Xx;
+ ParseHexBytes(InString.data(), InString.size(), Xx.Hash);
+ return Xx;
+}
+
+const char*
+XXH3_128::ToHexString(char* OutString /* 40 characters + NUL terminator */) const
+{
+ ToHexBytes(Hash, sizeof(XXH3_128), OutString);
+ OutString[2 * sizeof(XXH3_128)] = '\0';
+
+ return OutString;
+}
+
+StringBuilderBase&
+XXH3_128::ToHexString(StringBuilderBase& OutBuilder) const
+{
+ String_t str;
+ ToHexString(str);
+
+ OutBuilder.AppendRange(str, &str[StringLength]);
+
+ return OutBuilder;
+}
+
+} // namespace zen