diff options
| author | Dan Engelbrecht <[email protected]> | 2024-10-03 12:35:44 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2024-10-03 12:35:44 +0200 |
| commit | db531191789f48a141c42fef229bca7a7922443d (patch) | |
| tree | cc1570bf8dedccb975d594bd91284ac5d0bd0bae /src/zencore/uid.cpp | |
| parent | simplified CleanDirectory implementation (#182) (diff) | |
| download | zen-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.cpp | 28 |
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") |