Skip to content

Commit 95c142a

Browse files
committed
entity: handle conversion warnings
1 parent 562d25c commit 95c142a

File tree

5 files changed

+41
-21
lines changed

5 files changed

+41
-21
lines changed

src/entt/entity/group.hpp

+8-4
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,8 @@ class basic_group<owned_t<>, get_t<Get...>, exclude_t<Exclude...>> {
297297
using entity_type = underlying_type;
298298
/*! @brief Unsigned integer type. */
299299
using size_type = std::size_t;
300+
/*! @brief Signed integer type. */
301+
using difference_type = std::ptrdiff_t;
300302
/*! @brief Common type among all storage types. */
301303
using common_type = base_type;
302304
/*! @brief Random access iterator type. */
@@ -465,7 +467,7 @@ class basic_group<owned_t<>, get_t<Get...>, exclude_t<Exclude...>> {
465467
* @return The identifier that occupies the given position.
466468
*/
467469
[[nodiscard]] entity_type operator[](const size_type pos) const {
468-
return begin()[static_cast<typename iterator::difference_type>(pos)];
470+
return begin()[static_cast<difference_type>(pos)];
469471
}
470472

471473
/**
@@ -711,6 +713,8 @@ class basic_group<owned_t<Owned...>, get_t<Get...>, exclude_t<Exclude...>> {
711713
using entity_type = underlying_type;
712714
/*! @brief Unsigned integer type. */
713715
using size_type = std::size_t;
716+
/*! @brief Signed integer type. */
717+
using difference_type = std::ptrdiff_t;
714718
/*! @brief Common type among all storage types. */
715719
using common_type = base_type;
716720
/*! @brief Random access iterator type. */
@@ -794,7 +798,7 @@ class basic_group<owned_t<Owned...>, get_t<Get...>, exclude_t<Exclude...>> {
794798
* @return An iterator to the first entity of the group.
795799
*/
796800
[[nodiscard]] iterator begin() const noexcept {
797-
return *this ? (handle().end() - static_cast<typename iterator::difference_type>(descriptor->length())) : iterator{};
801+
return *this ? (handle().end() - static_cast<difference_type>(descriptor->length())) : iterator{};
798802
}
799803

800804
/**
@@ -824,7 +828,7 @@ class basic_group<owned_t<Owned...>, get_t<Get...>, exclude_t<Exclude...>> {
824828
* reversed group.
825829
*/
826830
[[nodiscard]] reverse_iterator rend() const noexcept {
827-
return *this ? (handle().rbegin() + static_cast<typename reverse_iterator::difference_type>(descriptor->length())) : reverse_iterator{};
831+
return *this ? (handle().rbegin() + static_cast<difference_type>(descriptor->length())) : reverse_iterator{};
828832
}
829833

830834
/**
@@ -864,7 +868,7 @@ class basic_group<owned_t<Owned...>, get_t<Get...>, exclude_t<Exclude...>> {
864868
* @return The identifier that occupies the given position.
865869
*/
866870
[[nodiscard]] entity_type operator[](const size_type pos) const {
867-
return begin()[static_cast<typename iterator::difference_type>(pos)];
871+
return begin()[static_cast<difference_type>(pos)];
868872
}
869873

870874
/**

src/entt/entity/registry.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,7 @@ class basic_registry {
576576
template<typename It>
577577
void destroy(It first, It last) {
578578
const auto to = entities.sort_as(first, last);
579-
const auto from = entities.cend() - entities.free_list();
579+
const auto from = entities.cend() - static_cast<typename common_type::difference_type>(entities.free_list());
580580

581581
for(auto &&curr: pools) {
582582
curr.second->remove(from, to);

src/entt/entity/sparse_set.hpp

+8-6
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ class basic_sparse_set {
190190
}
191191

192192
[[nodiscard]] auto to_iterator(const Entity entt) const {
193-
return --(end() - static_cast<typename const_iterator::difference_type>(index(entt)));
193+
return --(end() - static_cast<difference_type>(index(entt)));
194194
}
195195

196196
[[nodiscard]] auto &assure_at_least(const Entity entt) {
@@ -375,7 +375,7 @@ class basic_sparse_set {
375375
break;
376376
}
377377

378-
return --(end() - static_cast<typename iterator::difference_type>(pos));
378+
return --(end() - static_cast<difference_type>(pos));
379379
}
380380

381381
/*! @brief Forwards variables to derived classes, if any. */
@@ -391,6 +391,8 @@ class basic_sparse_set {
391391
using version_type = typename traits_type::version_type;
392392
/*! @brief Unsigned integer type. */
393393
using size_type = std::size_t;
394+
/*! @brief Signed integer type. */
395+
using difference_type = std::ptrdiff_t;
394396
/*! @brief Pointer type to contained entities. */
395397
using pointer = typename packed_container_type::const_pointer;
396398
/*! @brief Random access iterator type. */
@@ -646,7 +648,7 @@ class basic_sparse_set {
646648
* @return An iterator to the first entity of the sparse set.
647649
*/
648650
[[nodiscard]] iterator begin() const noexcept {
649-
const auto pos = static_cast<typename const_iterator::difference_type>(packed.size());
651+
const auto pos = static_cast<difference_type>(packed.size());
650652
return iterator{packed, pos};
651653
}
652654

@@ -937,7 +939,7 @@ class basic_sparse_set {
937939
}
938940
}
939941

940-
packed.erase(packed.begin() + static_cast<typename packed_container_type::difference_type>(from), packed.end());
942+
packed.erase(packed.begin() + static_cast<difference_type>(from), packed.end());
941943
}
942944
}
943945

@@ -998,7 +1000,7 @@ class basic_sparse_set {
9981000
ENTT_ASSERT((mode != deletion_policy::in_place) || (head == max_size), "Sorting with tombstones not allowed");
9991001
ENTT_ASSERT(!(length > packed.size()), "Length exceeds the number of elements");
10001002

1001-
algo(packed.rend() - static_cast<typename packed_container_type::difference_type>(length), packed.rend(), std::move(compare), std::forward<Args>(args)...);
1003+
algo(packed.rend() - static_cast<difference_type>(length), packed.rend(), std::move(compare), std::forward<Args>(args)...);
10021004

10031005
for(size_type pos{}; pos < length; ++pos) {
10041006
auto curr = pos;
@@ -1051,7 +1053,7 @@ class basic_sparse_set {
10511053
iterator sort_as(It first, It last) {
10521054
ENTT_ASSERT((mode != deletion_policy::in_place) || (head == max_size), "Sorting with tombstones not allowed");
10531055
const size_type len = (mode == deletion_policy::swap_only) ? head : packed.size();
1054-
auto it = end() - static_cast<typename iterator::difference_type>(len);
1056+
auto it = end() - static_cast<difference_type>(len);
10551057

10561058
for(const auto other = end(); (it != other) && (first != last); ++first) {
10571059
if(const auto curr = *first; contains(curr)) {

src/entt/entity/storage.hpp

+10-4
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,8 @@ class basic_storage: public basic_sparse_set<Entity, typename std::allocator_tra
407407
using entity_type = Entity;
408408
/*! @brief Unsigned integer type. */
409409
using size_type = std::size_t;
410+
/*! @brief Signed integer type. */
411+
using difference_type = std::ptrdiff_t;
410412
/*! @brief Pointer type to contained elements. */
411413
using pointer = typename container_type::pointer;
412414
/*! @brief Constant pointer type to contained elements. */
@@ -560,7 +562,7 @@ class basic_storage: public basic_sparse_set<Entity, typename std::allocator_tra
560562
* @return An iterator to the first instance of the internal array.
561563
*/
562564
[[nodiscard]] const_iterator cbegin() const noexcept {
563-
const auto pos = static_cast<typename const_iterator::difference_type>(base_type::size());
565+
const auto pos = static_cast<difference_type>(base_type::size());
564566
return const_iterator{&payload, pos};
565567
}
566568

@@ -571,7 +573,7 @@ class basic_storage: public basic_sparse_set<Entity, typename std::allocator_tra
571573

572574
/*! @copydoc begin */
573575
[[nodiscard]] iterator begin() noexcept {
574-
const auto pos = static_cast<typename iterator::difference_type>(base_type::size());
576+
const auto pos = static_cast<difference_type>(base_type::size());
575577
return iterator{&payload, pos};
576578
}
577579

@@ -808,6 +810,8 @@ class basic_storage<Type, Entity, Allocator, std::enable_if_t<component_traits<T
808810
using entity_type = Entity;
809811
/*! @brief Unsigned integer type. */
810812
using size_type = std::size_t;
813+
/*! @brief Signed integer type. */
814+
using difference_type = std::ptrdiff_t;
811815
/*! @brief Extended iterable storage proxy. */
812816
using iterable = iterable_adaptor<internal::extended_storage_iterator<typename base_type::iterator>>;
813817
/*! @brief Constant extended iterable storage proxy. */
@@ -1034,6 +1038,8 @@ class basic_storage<Entity, Entity, Allocator>
10341038
using entity_type = Entity;
10351039
/*! @brief Unsigned integer type. */
10361040
using size_type = std::size_t;
1041+
/*! @brief Signed integer type. */
1042+
using difference_type = std::ptrdiff_t;
10371043
/*! @brief Extended iterable storage proxy. */
10381044
using iterable = iterable_adaptor<internal::extended_storage_iterator<typename base_type::iterator>>;
10391045
/*! @brief Constant extended iterable storage proxy. */
@@ -1228,7 +1234,7 @@ class basic_storage<Entity, Entity, Allocator>
12281234
/*! @copydoc each */
12291235
[[nodiscard]] const_iterable each() const noexcept {
12301236
const auto it = base_type::cend();
1231-
const auto offset = static_cast<typename const_iterable::iterator::difference_type>(base_type::free_list());
1237+
const auto offset = static_cast<difference_type>(base_type::free_list());
12321238
return const_iterable{it - offset, it};
12331239
}
12341240

@@ -1246,7 +1252,7 @@ class basic_storage<Entity, Entity, Allocator>
12461252
/*! @copydoc reach */
12471253
[[nodiscard]] const_reverse_iterable reach() const noexcept {
12481254
const auto it = base_type::crbegin();
1249-
const auto offset = static_cast<typename const_reverse_iterable::iterator::difference_type>(base_type::free_list());
1255+
const auto offset = static_cast<difference_type>(base_type::free_list());
12501256
return const_reverse_iterable{it, it + offset};
12511257
}
12521258

src/entt/entity/view.hpp

+14-6
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,8 @@ class basic_common_view {
302302
using entity_type = typename Type::entity_type;
303303
/*! @brief Unsigned integer type. */
304304
using size_type = std::size_t;
305+
/*! @brief Signed integer type. */
306+
using difference_type = std::ptrdiff_t;
305307
/*! @brief Forward iterator type. */
306308
using iterator = internal::view_iterator<common_type, Checked, Get, Exclude>;
307309

@@ -339,7 +341,7 @@ class basic_common_view {
339341
* @return An iterator to the first entity of the view.
340342
*/
341343
[[nodiscard]] iterator begin() const noexcept {
342-
return (index != Get) ? iterator{pools[index]->end() - static_cast<typename iterator::difference_type>(offset()), pools, filter, index} : iterator{};
344+
return (index != Get) ? iterator{pools[index]->end() - static_cast<difference_type>(offset()), pools, filter, index} : iterator{};
343345
}
344346

345347
/**
@@ -368,7 +370,7 @@ class basic_common_view {
368370
[[nodiscard]] entity_type back() const noexcept {
369371
if(index != Get) {
370372
auto it = pools[index]->rbegin();
371-
const auto last = it + static_cast<typename iterator::difference_type>(offset());
373+
const auto last = it + static_cast<difference_type>(offset());
372374
for(; it != last && !(internal::all_of(pools.begin(), pools.begin() + index, *it) && internal::all_of(pools.begin() + index + 1, pools.end(), *it) && internal::none_of(filter.begin(), filter.end(), *it)); ++it) {}
373375
return it == last ? null : *it;
374376
}
@@ -477,6 +479,8 @@ class basic_view<get_t<Get...>, exclude_t<Exclude...>, std::enable_if_t<(sizeof.
477479
using entity_type = typename base_type::entity_type;
478480
/*! @brief Unsigned integer type. */
479481
using size_type = typename base_type::size_type;
482+
/*! @brief Signed integer type. */
483+
using difference_type = std::ptrdiff_t;
480484
/*! @brief Forward iterator type. */
481485
using iterator = typename base_type::iterator;
482486
/*! @brief Iterable view type. */
@@ -695,6 +699,8 @@ class basic_storage_view {
695699
using entity_type = typename common_type::entity_type;
696700
/*! @brief Unsigned integer type. */
697701
using size_type = std::size_t;
702+
/*! @brief Signed integer type. */
703+
using difference_type = std::ptrdiff_t;
698704
/*! @brief Random access iterator type. */
699705
using iterator = std::conditional_t<Policy == deletion_policy::in_place, internal::view_iterator<common_type, true, 1u, 0u>, typename common_type::iterator>;
700706
/*! @brief Reverse iterator type. */
@@ -759,7 +765,7 @@ class basic_storage_view {
759765
if constexpr(Policy == deletion_policy::swap_and_pop) {
760766
return leading ? leading->begin() : iterator{};
761767
} else if constexpr(Policy == deletion_policy::swap_only) {
762-
return leading ? (leading->end() - leading->free_list()) : iterator{};
768+
return leading ? (leading->end() - static_cast<difference_type>(leading->free_list())) : iterator{};
763769
} else {
764770
static_assert(Policy == deletion_policy::in_place, "Unexpected storage policy");
765771
return leading ? iterator{leading->begin(), {leading}, {}, 0u} : iterator{};
@@ -805,7 +811,7 @@ class basic_storage_view {
805811
return leading ? leading->rend() : reverse_iterator{};
806812
} else {
807813
static_assert(Policy == deletion_policy::swap_only, "Unexpected storage policy");
808-
return leading ? (leading->rbegin() + leading->free_list()) : reverse_iterator{};
814+
return leading ? (leading->rbegin() + static_cast<difference_type>(leading->free_list())) : reverse_iterator{};
809815
}
810816
}
811817

@@ -818,7 +824,7 @@ class basic_storage_view {
818824
if constexpr(Policy == deletion_policy::swap_and_pop) {
819825
return empty() ? null : *leading->begin();
820826
} else if constexpr(Policy == deletion_policy::swap_only) {
821-
return empty() ? null : *(leading->end() - leading->free_list());
827+
return empty() ? null : *(leading->end() - static_cast<difference_type>(leading->free_list()));
822828
} else {
823829
static_assert(Policy == deletion_policy::in_place, "Unexpected storage policy");
824830
const auto it = begin();
@@ -913,6 +919,8 @@ class basic_view<get_t<Get>, exclude_t<>>
913919
using entity_type = typename base_type::entity_type;
914920
/*! @brief Unsigned integer type. */
915921
using size_type = typename base_type::size_type;
922+
/*! @brief Signed integer type. */
923+
using difference_type = std::ptrdiff_t;
916924
/*! @brief Random access iterator type. */
917925
using iterator = typename base_type::iterator;
918926
/*! @brief Reverse iterator type. */
@@ -1051,7 +1059,7 @@ class basic_view<get_t<Get>, exclude_t<>>
10511059
func();
10521060
}
10531061
} else {
1054-
if(const auto len = base_type::size(); len != 0u) {
1062+
if(const auto len = static_cast<difference_type>(base_type::size()); len != 0) {
10551063
for(auto last = storage()->end(), first = last - len; first != last; ++first) {
10561064
func(*first);
10571065
}

0 commit comments

Comments
 (0)