diff --git a/deps/ox/src/ox/claw/read.cpp b/deps/ox/src/ox/claw/read.cpp index 3f31b207..89b19364 100644 --- a/deps/ox/src/ox/claw/read.cpp +++ b/deps/ox/src/ox/claw/read.cpp @@ -6,13 +6,13 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include + #include "read.hpp" namespace ox { -namespace detail { - -Result readHeader(const char *buff, std::size_t buffLen) noexcept { +Result readClawHeader(const char *buff, std::size_t buffLen) noexcept { const auto s1End = ox_strchr(buff, ';', buffLen); if (!s1End) { return OxError(1); @@ -57,13 +57,19 @@ Result readHeader(const char *buff, std::size_t buffLen) noexcept { return hdr; } +Result readClawHeader(const ox::Buffer &buff) noexcept { + return readClawHeader(buff.data(), buff.size()); } Result stripClawHeader(const char *buff, std::size_t buffLen) noexcept { - oxRequire(header, detail::readHeader(buff, buffLen)); + oxRequire(header, readClawHeader(buff, buffLen)); Buffer out(header.dataSize); ox_memcpy(out.data(), header.data, out.size()); - return move(out); + return out; +} + +Result stripClawHeader(const ox::Buffer &buff) noexcept { + return stripClawHeader(buff.data(), buff.size()); } } diff --git a/deps/ox/src/ox/claw/read.hpp b/deps/ox/src/ox/claw/read.hpp index 1209a43d..5917b9ec 100644 --- a/deps/ox/src/ox/claw/read.hpp +++ b/deps/ox/src/ox/claw/read.hpp @@ -19,8 +19,6 @@ namespace ox { -namespace detail { - struct ClawHeader { String typeName; int typeVersion = -1; @@ -29,15 +27,17 @@ struct ClawHeader { std::size_t dataSize = 0; }; -Result readHeader(const char *buff, std::size_t buffLen) noexcept; +Result readClawHeader(const char *buff, std::size_t buffLen) noexcept; -} +Result readClawHeader(const ox::Buffer &buff) noexcept; Result stripClawHeader(const char *buff, std::size_t buffLen) noexcept; +Result stripClawHeader(const ox::Buffer &buff) noexcept; + template Error readClaw(const char *buff, std::size_t buffLen, T *val) { - oxRequire(header, detail::readHeader(buff, buffLen)); + oxRequire(header, readClawHeader(buff, buffLen)); switch (header.fmt) { case ClawFormat::Metal: { diff --git a/deps/ox/src/ox/claw/test/tests.cpp b/deps/ox/src/ox/claw/test/tests.cpp index bfc5ad32..95a1f7b9 100644 --- a/deps/ox/src/ox/claw/test/tests.cpp +++ b/deps/ox/src/ox/claw/test/tests.cpp @@ -108,7 +108,7 @@ std::map tests = { "ClawHeaderReader", [] { ox::String hdr = "O1;com.drinkingtea.ox.claw.test.Header;2;"; - auto [ch, err] = ox::detail::readHeader(hdr.c_str(), hdr.len() + 1); + auto [ch, err] = ox::readClawHeader(hdr.c_str(), hdr.len() + 1); oxAssert(err, "Error parsing header"); oxAssert(ch.fmt == ox::ClawFormat::Organic, "Format wrong"); oxAssert(ch.typeName == "com.drinkingtea.ox.claw.test.Header", "Type name wrong"); @@ -120,7 +120,7 @@ std::map tests = { "ClawHeaderReader2", [] { ox::String hdr = "M1;com.drinkingtea.ox.claw.test.Header2;3;"; - auto [ch, err] = ox::detail::readHeader(hdr.c_str(), hdr.len() + 1); + auto [ch, err] = ox::readClawHeader(hdr.c_str(), hdr.len() + 1); oxAssert(err, "Error parsing header"); oxAssert(ch.fmt == ox::ClawFormat::Metal, "Format wrong"); oxAssert(ch.typeName == "com.drinkingtea.ox.claw.test.Header2", "Type name wrong");