/* * Copyright 2016 - 2023 Gary Talent (gary@drinkingtea.net). All rights reserved. */ #pragma once #include #include #include #include namespace nostalgia::foundation { [[nodiscard]] ox::Result readUuidHeader(const ox::Buffer &buff) noexcept; ox::Result readUuidHeader(const char *buff, std::size_t buffLen) noexcept; ox::Error writeUuidHeader(ox::Writer_c auto *writer, const ox::UUID &uuid) noexcept { const auto hdr = ox::sfmt>("N1{};", uuid.toString()); return write(writer, hdr); } template ox::Result readAsset(const ox::Buffer &buff) noexcept { std::size_t offset = 0; const auto err = readUuidHeader(buff).error; if (!err) { offset = 40; // the size of N1 headers } return ox::readClaw(buff.data() + offset, buff.size() - offset); } ox::Result readAsset(ox::TypeStore *ts, const ox::Buffer &buff) noexcept; struct AssetHdr { ox::UUID uuid; ox::ClawHeader clawHdr; }; ox::Result readAssetHeader(const char *buff, std::size_t buffLen) noexcept; ox::Result readAssetHeader(const ox::Buffer &buff) noexcept; }