#include #include #include #include WUPSStorageError WUPSStorageAPI::DeleteItem(std::string_view key) noexcept { WUPSStorageSubItem item(nullptr); return item.DeleteItem(key); } WUPSStorageError WUPSStorageAPI::SaveStorage(bool forceSave) { return WUPSStorageAPI_SaveStorage(forceSave); } WUPSStorageError WUPSStorageAPI::ForceReloadStorage() { return WUPSStorageAPI_ForceReloadStorage(); } WUPSStorageError WUPSStorageAPI::WipeStorage() { return WUPSStorageAPI_WipeStorage(); } std::optional WUPSStorageAPI::CreateSubItem(std::string_view key, WUPSStorageError &err) noexcept { WUPSStorageSubItem item(nullptr); return item.CreateSubItem(key, err); } std::optional WUPSStorageAPI::GetSubItem(std::string_view key, WUPSStorageError &err) noexcept { WUPSStorageSubItem item(nullptr); return item.GetSubItem(key, err); } std::optional WUPSStorageAPI::GetOrCreateSubItem(std::string_view key, WUPSStorageError &err) noexcept { WUPSStorageSubItem item(nullptr); return item.GetOrCreateSubItem(key, err); } WUPSStorageSubItem WUPSStorageAPI::CreateSubItem(std::string_view key) { WUPSStorageSubItem item(nullptr); return item.CreateSubItem(key); } WUPSStorageSubItem WUPSStorageAPI::GetSubItem(std::string_view key) { WUPSStorageSubItem item(nullptr); return item.GetSubItem(key); } WUPSStorageSubItem WUPSStorageAPI::GetOrCreateSubItem(std::string_view key) { WUPSStorageSubItem item(nullptr); return item.GetOrCreateSubItem(key); } std::string_view WUPSStorageAPI::GetStatusStr(const WUPSStorageError &err) noexcept { return WUPSStorageAPI_GetStatusStr(err); } WUPSStorageSubItem WUPSStorageAPI::GetRootItem() noexcept { return WUPSStorageSubItem(nullptr); } WUPSStorageError WUPSStorageSubItem::DeleteItem(std::string_view key) noexcept { return WUPSStorageAPI_DeleteItem(mHandle, key.data()); } std::optional WUPSStorageSubItem::CreateSubItem(std::string_view key, WUPSStorageError &err) noexcept { wups_storage_item outItem = {}; err = WUPSStorageAPI_CreateSubItem(mHandle, key.data(), &outItem); if (err != WUPS_STORAGE_ERROR_SUCCESS) { return std::nullopt; } return WUPSStorageSubItem(outItem); } std::optional WUPSStorageSubItem::GetSubItem(std::string_view key, WUPSStorageError &err) const noexcept { wups_storage_item outItem = {}; err = WUPSStorageAPI_GetSubItem(mHandle, key.data(), &outItem); if (err != WUPS_STORAGE_ERROR_SUCCESS) { return std::nullopt; } return WUPSStorageSubItem(outItem); } std::optional WUPSStorageSubItem::GetOrCreateSubItem(std::string_view key, WUPSStorageError &err) noexcept { wups_storage_item outItem = {}; err = WUPSStorageAPI_GetSubItem(mHandle, key.data(), &outItem); if (err == WUPS_STORAGE_ERROR_NOT_FOUND) { return CreateSubItem(key, err); } return WUPSStorageSubItem(outItem); } WUPSStorageSubItem WUPSStorageSubItem::CreateSubItem(std::string_view key) { WUPSStorageError err; auto res = CreateSubItem(key, err); if (!res) { throw std::runtime_error(std::string("WUPSStorageSubItem::CreateSubItem(\"").append(key).append("\")").append(WUPSStorageAPI_GetStatusStr(err))); } return *res; } WUPSStorageSubItem WUPSStorageSubItem::GetSubItem(std::string_view key) const { WUPSStorageError err; auto res = GetSubItem(key, err); if (!res) { throw std::runtime_error(std::string("WUPSStorageSubItem::GetSubItem(\"").append(key).append("\")").append(WUPSStorageAPI_GetStatusStr(err))); } return *res; } WUPSStorageSubItem WUPSStorageSubItem::GetOrCreateSubItem(std::string_view key) { WUPSStorageError err; auto res = GetOrCreateSubItem(key, err); if (!res) { throw std::runtime_error(std::string("WUPSStorageSubItem::GetOrCreateSubItem(\"").append(key).append("\")").append(WUPSStorageAPI_GetStatusStr(err))); } return *res; } bool WUPSStorageSubItem::operator==(const WUPSStorageSubItem &rhs) const { return mHandle == rhs.mHandle; } bool WUPSStorageSubItem::operator!=(const WUPSStorageSubItem &rhs) const { return !(rhs == *this); }