Browse Source

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

Michele Caini 3 years ago
parent
commit
d0090d35fb
2 changed files with 9 additions and 14 deletions
  1. 8 7
      src/entt/entity/snapshot.hpp
  2. 1 7
      test/entt/entity/snapshot.cpp

+ 8 - 7
src/entt/entity/snapshot.hpp

@@ -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

+ 1 - 7
test/entt/entity/snapshot.cpp

@@ -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>>;