Supports iterating over BaseLibrary.
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Deukhoofd 2020-07-04 17:18:24 +02:00
parent 61bf868583
commit 47515399fe
Signed by: Deukhoofd
GPG Key ID: ADF2E9256009EDCE
2 changed files with 32 additions and 0 deletions

View File

@ -71,6 +71,19 @@ namespace CreatureLib::Library {
return _values;
}
using const_iterator = typename std::unordered_map<uint32_t, ArbUt::BorrowedPtr<const T>>::const_iterator;
inline const_iterator begin() const {
return reinterpret_cast<const std::unordered_map<uint32_t, ArbUt::BorrowedPtr<const T>>&>(
_values.GetStdMap())
.begin();
}
inline const_iterator end() const {
return reinterpret_cast<const std::unordered_map<uint32_t, ArbUt::BorrowedPtr<const T>>&>(
_values.GetStdMap())
.end();
}
[[nodiscard]] size_t GetCount() const noexcept { return _values.Count(); }
inline ArbUt::BorrowedPtr<const T> GetRandomValue(ArbUt::Random rand = ArbUt::Random()) const noexcept {

View File

@ -0,0 +1,19 @@
#ifdef TESTS_BUILD
#include "../../extern/catch.hpp"
#include "../../src/Library/BaseLibrary.hpp"
#include "../TestLibrary/TestLibrary.hpp"
using namespace CreatureLib::Library;
TEST_CASE("Iterate over library", "[Library]") {
auto& lib = TestLibrary::Get()->GetSpeciesLibrary();
auto i = 0;
for (auto b : *lib) {
if (i == 0) {
CHECK(b.second->GetName() == "testSpecies1"_cnc);
}
i++;
}
CHECK(i == 1);
}
#endif