snapshot: try to make sizes an opaque value to the caller

This commit is contained in:
Michele Caini
2023-01-26 11:30:52 +01:00
parent 7a1a06a24b
commit d0090d35fb
2 changed files with 9 additions and 14 deletions

View File

@@ -34,7 +34,7 @@ class basic_snapshot {
template<typename Component, typename Archive, typename It>
void get(Archive &archive, std::size_t sz, It first, It last) const {
const auto view = reg->template view<const Component>();
archive(typename traits_type::entity_type(sz));
archive(static_cast<typename traits_type::entity_type>(sz));
for(auto it = first; it != last; ++it) {
if(reg->template all_of<Component>(*it)) {
@@ -85,10 +85,11 @@ public:
*/
template<typename Archive>
const basic_snapshot &entities(Archive &archive) const {
const auto sz = reg->size();
const auto sz = static_cast<typename traits_type::entity_type> (reg->size());
const auto released = static_cast<typename traits_type::entity_type>(reg->released());
archive(sz);
archive(reg->released());
archive(released);
for(auto first = reg->data(), last = first + sz; first != last; ++first) {
archive(*first);
@@ -218,8 +219,8 @@ public:
*/
template<typename Archive>
const basic_snapshot_loader &entities(Archive &archive) const {
typename registry_type::size_type length{};
typename registry_type::size_type released{};
typename traits_type::entity_type length{};
typename traits_type::entity_type released{};
archive(length);
archive(released);
@@ -433,8 +434,8 @@ public:
*/
template<typename Archive>
basic_continuous_loader &entities(Archive &archive) {
typename registry_type::size_type length{};
typename registry_type::size_type released{};
typename traits_type::entity_type length{};
typename traits_type::entity_type released{};
archive(length);
// discards the number of destroyed entities

View File

@@ -96,7 +96,6 @@ TEST(Snapshot, Dump) {
using archive_type = std::tuple<
std::queue<typename traits_type::entity_type>,
std::queue<entt::entity>,
std::queue<std::size_t>,
std::queue<int>,
std::queue<char>,
std::queue<double>,
@@ -161,7 +160,6 @@ TEST(Snapshot, Partial) {
using archive_type = std::tuple<
std::queue<typename traits_type::entity_type>,
std::queue<entt::entity>,
std::queue<std::size_t>,
std::queue<int>,
std::queue<char>,
std::queue<double>>;
@@ -226,7 +224,6 @@ TEST(Snapshot, Iterator) {
using archive_type = std::tuple<
std::queue<typename traits_type::entity_type>,
std::queue<entt::entity>,
std::queue<std::size_t>,
std::queue<another_component>,
std::queue<int>>;
@@ -262,7 +259,6 @@ TEST(Snapshot, Continuous) {
using archive_type = std::tuple<
std::queue<typename traits_type::entity_type>,
std::queue<entt::entity>,
std::queue<std::size_t>,
std::queue<another_component>,
std::queue<what_a_component>,
std::queue<map_component>,
@@ -501,8 +497,7 @@ TEST(Snapshot, MoreOnShrink) {
using archive_type = std::tuple<
std::queue<typename traits_type::entity_type>,
std::queue<entt::entity>,
std::queue<std::size_t>>;
std::queue<entt::entity>>;
archive_type storage;
output_archive<archive_type> output{storage};
@@ -530,7 +525,6 @@ TEST(Snapshot, SyncDataMembers) {
using archive_type = std::tuple<
std::queue<typename traits_type::entity_type>,
std::queue<entt::entity>,
std::queue<std::size_t>,
std::queue<what_a_component>,
std::queue<map_component>>;