aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/uid.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-10-03 12:35:44 +0200
committerGitHub Enterprise <[email protected]>2024-10-03 12:35:44 +0200
commitdb531191789f48a141c42fef229bca7a7922443d (patch)
treecc1570bf8dedccb975d594bd91284ac5d0bd0bae /src/zencore/uid.cpp
parentsimplified CleanDirectory implementation (#182) (diff)
downloadzen-db531191789f48a141c42fef229bca7a7922443d.tar.xz
zen-db531191789f48a141c42fef229bca7a7922443d.zip
cache get command (#183)
* move TryParseObjectId and TryParseIoHash to Oid::TryParse and IoHash::TryParse respectively * zen cache-get command
Diffstat (limited to 'src/zencore/uid.cpp')
-rw-r--r--src/zencore/uid.cpp28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/zencore/uid.cpp b/src/zencore/uid.cpp
index 8ef660c7a..d7636f2ad 100644
--- a/src/zencore/uid.cpp
+++ b/src/zencore/uid.cpp
@@ -102,12 +102,22 @@ Oid::TryFromHexString(const std::string_view String, const Oid& Default)
}
}
-Oid
-Oid::FromMemory(const void* Ptr)
+bool
+Oid::TryParse(std::string_view Str, Oid& Id)
{
- Oid Id;
- memcpy(Id.OidBits, Ptr, sizeof Id);
- return Id;
+ using namespace std::literals;
+
+ if (Str.size() == Oid::StringLength)
+ {
+ return ParseHexBytes(Str.data(), Str.size(), reinterpret_cast<uint8_t*>(Id.OidBits));
+ }
+
+ if (Str.starts_with("0x"sv))
+ {
+ return TryParse(Str.substr(2), Id);
+ }
+
+ return false;
}
void
@@ -136,6 +146,14 @@ Oid::ToString(StringBuilderBase& OutString) const
return OutString;
}
+Oid
+Oid::FromMemory(const void* Ptr)
+{
+ Oid Id;
+ memcpy(Id.OidBits, Ptr, sizeof Id);
+ return Id;
+}
+
#if ZEN_WITH_TESTS
TEST_CASE("Oid")