Update to new Arbutils memory model.
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2020-12-12 14:25:27 +01:00
parent b6a5e41b51
commit 53bd6e7a94
19 changed files with 87 additions and 74 deletions

View File

@@ -29,12 +29,12 @@ namespace PkmnLib::Library {
inline bool HasForme(const ArbUt::BasicStringView& key) const { return HasVariant(key); }
inline bool TryGetForme(const ArbUt::BasicStringView& key,
ArbUt::BorrowedPtr<const PokemonForme>& forme) const {
auto v = forme.As<const PokemonForme::SpeciesVariant>();
auto res = TryGetVariant(key, v);
forme = v.As<const PokemonForme>();
return res;
inline std::optional<ArbUt::BorrowedPtr<const PokemonForme>>
TryGetForme(const ArbUt::BasicStringView& key) const {
auto res = TryGetVariant(key);
if (!res.has_value())
return {};
return res.value().As<const PokemonForme>();
}
inline ArbUt::BorrowedPtr<const PokemonForme> GetForme(const ArbUt::BasicStringView& key) const {

View File

@@ -1,20 +1,20 @@
#include "SpeciesLibrary.hpp"
namespace PkmnLib::Library {
ArbUt::BorrowedPtr<const PokemonSpecies>
std::optional<ArbUt::BorrowedPtr<const PokemonSpecies>>
SpeciesLibrary::FindPreEvolution(const ArbUt::BorrowedPtr<const PokemonSpecies>& species) const noexcept {
if (_preEvolutionCache.Has(species)) {
return _preEvolutionCache[species];
}
for (auto& s : _values) {
auto pkmn = (PokemonSpecies*)s.second.get();
for (auto& evo : pkmn->GetEvolutions()) {
for (const auto& s : _values) {
auto* pkmn = (PokemonSpecies*)s.second.get();
for (const auto& evo : pkmn->GetEvolutions()) {
if (evo->GetNewSpecies() == species) {
auto non_const = const_cast<SpeciesLibrary*>(this);
auto* non_const = const_cast<SpeciesLibrary*>(this);
non_const->_preEvolutionCache[species] = pkmn;
return pkmn;
}
}
}
return nullptr;
return {};
}
}

View File

@@ -10,12 +10,12 @@ namespace PkmnLib::Library {
_preEvolutionCache;
public:
inline bool TryGet(const ArbUt::BasicStringView& name,
ArbUt::BorrowedPtr<const PokemonSpecies>& outSpecies) const {
auto v = outSpecies.As<const PokemonSpecies::CreatureSpecies>();
auto res = CreatureLib::Library::SpeciesLibrary::TryGet(name, v);
outSpecies = v.As<const PokemonSpecies>();
return res;
inline std::optional<ArbUt::BorrowedPtr<const PokemonSpecies>>
TryGet(const ArbUt::BasicStringView& name) const {
auto res = CreatureLib::Library::SpeciesLibrary::TryGet(name);
if (!res.has_value())
return {};
return res.value().ForceAs<const PokemonSpecies>();
}
inline ArbUt::BorrowedPtr<const PokemonSpecies> Get(const ArbUt::BasicStringView& name) const {
@@ -26,7 +26,7 @@ namespace PkmnLib::Library {
return Get(name);
}
ArbUt::BorrowedPtr<const PokemonSpecies>
std::optional<ArbUt::BorrowedPtr<const PokemonSpecies>>
FindPreEvolution(const ArbUt::BorrowedPtr<const PokemonSpecies>& species) const noexcept;
};
}