meta_[sequence|associative]_container: iterator review
This commit is contained in:
@@ -1495,7 +1495,7 @@ public:
|
||||
* @param iter The actual iterator with which to build the meta iterator.
|
||||
*/
|
||||
template<typename It>
|
||||
meta_iterator(It iter)
|
||||
explicit meta_iterator(It iter)
|
||||
: vtable{&basic_vtable<It>},
|
||||
handle{std::move(iter)} {}
|
||||
|
||||
@@ -1510,24 +1510,6 @@ public:
|
||||
return ++(*this), orig;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks if two iterators refer to the same element.
|
||||
* @param other The iterator with which to compare.
|
||||
* @return True if the iterators refer to the same element, false otherwise.
|
||||
*/
|
||||
[[nodiscard]] bool operator==(const meta_iterator &other) const ENTT_NOEXCEPT {
|
||||
return handle == other.handle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks if two iterators refer to the same element.
|
||||
* @param other The iterator with which to compare.
|
||||
* @return False if the iterators refer to the same element, true otherwise.
|
||||
*/
|
||||
[[nodiscard]] bool operator!=(const meta_iterator &other) const ENTT_NOEXCEPT {
|
||||
return !(*this == other);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Indirection operator for accessing the pointed opaque object.
|
||||
* @return The element to which the iterator points.
|
||||
@@ -1567,6 +1549,26 @@ private:
|
||||
any handle{};
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Checks if two iterators refer to the same element.
|
||||
* @param lhs An iterator to compare.
|
||||
* @param rhs An iterator with which to compare.
|
||||
* @return True if the iterators refer to the same element, false otherwise.
|
||||
*/
|
||||
[[nodiscard]] inline bool operator==(const typename meta_sequence_container::iterator &lhs, const typename meta_sequence_container::iterator &rhs) ENTT_NOEXCEPT {
|
||||
return lhs.base() == rhs.base();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks if two iterators refer to the same element.
|
||||
* @param lhs An iterator to compare.
|
||||
* @param rhs An iterator with which to compare.
|
||||
* @return False if the iterators refer to the same element, true otherwise.
|
||||
*/
|
||||
[[nodiscard]] inline bool operator!=(const typename meta_sequence_container::iterator &lhs, const typename meta_sequence_container::iterator &rhs) ENTT_NOEXCEPT {
|
||||
return !(lhs == rhs);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the meta value type of a container.
|
||||
* @return The meta value type of the container.
|
||||
@@ -1717,24 +1719,6 @@ public:
|
||||
return ++(*this), orig;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks if two iterators refer to the same element.
|
||||
* @param other The iterator with which to compare.
|
||||
* @return True if the iterators refer to the same element, false otherwise.
|
||||
*/
|
||||
[[nodiscard]] bool operator==(const meta_iterator &other) const ENTT_NOEXCEPT {
|
||||
return handle == other.handle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks if two iterators refer to the same element.
|
||||
* @param other The iterator with which to compare.
|
||||
* @return False if the iterators refer to the same element, true otherwise.
|
||||
*/
|
||||
[[nodiscard]] bool operator!=(const meta_iterator &other) const ENTT_NOEXCEPT {
|
||||
return !(*this == other);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Indirection operator for accessing the pointed opaque object.
|
||||
* @return The element to which the iterator points.
|
||||
@@ -1761,11 +1745,39 @@ public:
|
||||
return static_cast<bool>(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the underlying iterator.
|
||||
* @return The underlying iterator.
|
||||
*/
|
||||
any base() const ENTT_NOEXCEPT {
|
||||
return handle.as_ref();
|
||||
}
|
||||
|
||||
private:
|
||||
vtable_type *vtable{};
|
||||
any handle{};
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Checks if two iterators refer to the same element.
|
||||
* @param lhs An iterator to compare.
|
||||
* @param rhs An iterator with which to compare.
|
||||
* @return True if the iterators refer to the same element, false otherwise.
|
||||
*/
|
||||
[[nodiscard]] inline bool operator==(const typename meta_associative_container::iterator &lhs, const typename meta_associative_container::iterator &rhs) ENTT_NOEXCEPT {
|
||||
return lhs.base() == rhs.base();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Checks if two iterators refer to the same element.
|
||||
* @param lhs An iterator to compare.
|
||||
* @param rhs An iterator with which to compare.
|
||||
* @return False if the iterators refer to the same element, true otherwise.
|
||||
*/
|
||||
[[nodiscard]] inline bool operator!=(const typename meta_associative_container::iterator &lhs, const typename meta_associative_container::iterator &rhs) ENTT_NOEXCEPT {
|
||||
return !(lhs == rhs);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns true if a container is also key-only, false otherwise.
|
||||
* @return True if the associative container is also key-only, false otherwise.
|
||||
|
||||
Reference in New Issue
Block a user