mirror of
https://github.com/sebastiandine/Card-Collection-Manager-3.git
synced 2026-09-04 16:23:16 +00:00
patch: Feature/ygo set selection (#16)
This commit is contained in:
@@ -3,6 +3,12 @@
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
|
||||
#if defined(__GNUC__) || defined(__clang__)
|
||||
#define CCM_UNREACHABLE() __builtin_unreachable()
|
||||
#else
|
||||
#define CCM_UNREACHABLE() ((void)0)
|
||||
#endif
|
||||
|
||||
namespace ccm {
|
||||
|
||||
std::string_view to_string(Game g) noexcept {
|
||||
@@ -11,7 +17,7 @@ std::string_view to_string(Game g) noexcept {
|
||||
case Game::Pokemon: return "Pokemon";
|
||||
case Game::YuGiOh: return "YuGiOh";
|
||||
}
|
||||
return "Magic";
|
||||
CCM_UNREACHABLE();
|
||||
}
|
||||
|
||||
std::string_view to_string(Language l) noexcept {
|
||||
@@ -25,7 +31,7 @@ std::string_view to_string(Language l) noexcept {
|
||||
case Language::Japanese: return "Japanese";
|
||||
case Language::Russian: return "Russian";
|
||||
}
|
||||
return "English";
|
||||
CCM_UNREACHABLE();
|
||||
}
|
||||
|
||||
std::string_view to_string(Condition c) noexcept {
|
||||
@@ -38,7 +44,7 @@ std::string_view to_string(Condition c) noexcept {
|
||||
case Condition::Played: return "Played";
|
||||
case Condition::Poor: return "Poor";
|
||||
}
|
||||
return "Mint";
|
||||
CCM_UNREACHABLE();
|
||||
}
|
||||
|
||||
std::string_view to_string(Theme t) noexcept {
|
||||
@@ -46,7 +52,7 @@ std::string_view to_string(Theme t) noexcept {
|
||||
case Theme::Light: return "Light";
|
||||
case Theme::Dark: return "Dark";
|
||||
}
|
||||
return "Light";
|
||||
CCM_UNREACHABLE();
|
||||
}
|
||||
|
||||
std::optional<Game> gameFromString(std::string_view s) noexcept {
|
||||
|
||||
@@ -218,18 +218,12 @@ Result<std::string> CardPreviewService::fetchImageBytesByUrl(std::string_view ur
|
||||
// and, if needed, fetch+store.
|
||||
const std::string key = makeUrlKey(url);
|
||||
std::string cached;
|
||||
switch (cacheLookup(key, cached)) {
|
||||
case CacheLookupKind::Hit:
|
||||
return Result<std::string>::ok(std::move(cached));
|
||||
case CacheLookupKind::NegativeHit:
|
||||
// Defensive: nothing in this code path ever stores a negative
|
||||
// entry under a URL key, but if one ever ends up here (cache
|
||||
// file tampering, future code paths) treat it as a miss so the
|
||||
// fallback fetch can still run.
|
||||
break;
|
||||
case CacheLookupKind::Miss:
|
||||
break;
|
||||
const auto mem = cacheLookup(key, cached);
|
||||
if (mem == CacheLookupKind::Hit) {
|
||||
return Result<std::string>::ok(std::move(cached));
|
||||
}
|
||||
// Miss, or a spurious negative under a URL key (never written by normal
|
||||
// code) — both continue to disk / network.
|
||||
if (persistentCache_ != nullptr) {
|
||||
const auto disk = persistentCache_->load(key);
|
||||
if (disk.kind == IPreviewByteCache::HitKind::Hit) {
|
||||
|
||||
@@ -78,7 +78,6 @@ std::uint8_t parseIndexFromFilename(std::string_view filename) noexcept {
|
||||
for (std::size_t i = begin; i < end; ++i) {
|
||||
value = value * 10 + static_cast<unsigned int>(filename[i] - '0');
|
||||
}
|
||||
if (value > 255) value = 255;
|
||||
return static_cast<std::uint8_t>(value);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user