mirror of
https://github.com/BlackMATov/meta.hpp.git
synced 2025-12-14 03:29:28 +07:00
return is_valid instead is_empty
This commit is contained in:
@@ -60,12 +60,12 @@ namespace meta_hpp::detail
|
||||
return *this;
|
||||
}
|
||||
|
||||
[[nodiscard]] bool is_empty() const noexcept {
|
||||
return vtable_ == nullptr;
|
||||
[[nodiscard]] bool is_valid() const noexcept {
|
||||
return vtable_ != nullptr;
|
||||
}
|
||||
|
||||
[[nodiscard]] explicit operator bool() const noexcept {
|
||||
return vtable_ != nullptr;
|
||||
return is_valid();
|
||||
}
|
||||
|
||||
R operator()(Args... args) const {
|
||||
|
||||
@@ -50,12 +50,12 @@ namespace meta_hpp::detail
|
||||
reset();
|
||||
}
|
||||
|
||||
[[nodiscard]] bool is_empty() const noexcept {
|
||||
return data_ == nullptr;
|
||||
[[nodiscard]] bool is_valid() const noexcept {
|
||||
return data_ != nullptr;
|
||||
}
|
||||
|
||||
[[nodiscard]] explicit operator bool() const noexcept {
|
||||
return data_ != nullptr;
|
||||
return is_valid();
|
||||
}
|
||||
|
||||
void reset() noexcept {
|
||||
|
||||
@@ -133,12 +133,12 @@ namespace meta_hpp
|
||||
state_base& operator=(state_base&&) noexcept = default;
|
||||
state_base& operator=(const state_base&) = default;
|
||||
|
||||
[[nodiscard]] bool is_empty() const noexcept {
|
||||
return state_ == nullptr;
|
||||
[[nodiscard]] bool is_valid() const noexcept {
|
||||
return state_ != nullptr;
|
||||
}
|
||||
|
||||
[[nodiscard]] explicit operator bool() const noexcept {
|
||||
return state_ != nullptr;
|
||||
return is_valid();
|
||||
}
|
||||
|
||||
[[nodiscard]] const index_type& get_index() const noexcept {
|
||||
@@ -399,7 +399,7 @@ namespace std
|
||||
template < meta_hpp::detail::state_family State >
|
||||
struct hash<State> {
|
||||
size_t operator()(const State& state) const noexcept {
|
||||
return state.is_empty() ? 0 : state.get_index().get_hash();
|
||||
return state.is_valid() ? state.get_index().get_hash() : 0;
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -408,15 +408,15 @@ namespace meta_hpp
|
||||
{
|
||||
template < detail::state_family L, detail::state_family R >
|
||||
[[nodiscard]] bool operator==(const L& l, const R& r) noexcept {
|
||||
return l.is_empty() == r.is_empty() && (l.is_empty() || l.get_index() == r.get_index());
|
||||
return l.is_valid() == r.is_valid() && (!l.is_valid() || l.get_index() == r.get_index());
|
||||
}
|
||||
|
||||
template < detail::state_family L, detail::state_family R >
|
||||
[[nodiscard]] std::strong_ordering operator<=>(const L& l, const R& r) noexcept {
|
||||
if ( const std::strong_ordering cmp{!l.is_empty() <=> !r.is_empty()}; cmp != std::strong_ordering::equal ) {
|
||||
if ( const std::strong_ordering cmp{l.is_valid() <=> r.is_valid()}; cmp != std::strong_ordering::equal ) {
|
||||
return cmp;
|
||||
}
|
||||
return l.is_empty() ? std::strong_ordering::equal : l.get_index() <=> r.get_index();
|
||||
return l.is_valid() ? l.get_index() <=> r.get_index() : std::strong_ordering::equal;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -424,12 +424,12 @@ namespace meta_hpp
|
||||
{
|
||||
template < detail::state_family L, detail::index_family R >
|
||||
[[nodiscard]] bool operator==(const L& l, const R& r) noexcept {
|
||||
return !l.is_empty() && l.get_index() == r;
|
||||
return l.is_valid() && l.get_index() == r;
|
||||
}
|
||||
|
||||
template < detail::state_family L, detail::index_family R >
|
||||
[[nodiscard]] std::strong_ordering operator<=>(const L& l, const R& r) noexcept {
|
||||
return !l.is_empty() ? l.get_index() <=> r : std::strong_ordering::less;
|
||||
return l.is_valid() ? l.get_index() <=> r : std::strong_ordering::less;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -65,12 +65,12 @@ namespace meta_hpp
|
||||
type_base& operator=(type_base&&) noexcept = default;
|
||||
type_base& operator=(const type_base&) = default;
|
||||
|
||||
[[nodiscard]] bool is_empty() const noexcept {
|
||||
return data_ == nullptr;
|
||||
[[nodiscard]] bool is_valid() const noexcept {
|
||||
return data_ != nullptr;
|
||||
}
|
||||
|
||||
[[nodiscard]] explicit operator bool() const noexcept {
|
||||
return data_ != nullptr;
|
||||
return is_valid();
|
||||
}
|
||||
|
||||
[[nodiscard]] type_id get_id() const noexcept {
|
||||
@@ -327,7 +327,7 @@ namespace std
|
||||
template < meta_hpp::detail::type_family Type >
|
||||
struct hash<Type> {
|
||||
size_t operator()(const Type& type) const noexcept {
|
||||
return type.is_empty() ? 0 : type.get_id().get_hash();
|
||||
return type.is_valid() ? type.get_id().get_hash() : 0;
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -336,15 +336,15 @@ namespace meta_hpp
|
||||
{
|
||||
template < detail::type_family L, detail::type_family R >
|
||||
[[nodiscard]] bool operator==(const L& l, const R& r) noexcept {
|
||||
return l.is_empty() == r.is_empty() && (l.is_empty() || l.get_id() == r.get_id());
|
||||
return l.is_valid() == r.is_valid() && (!l.is_valid() || l.get_id() == r.get_id());
|
||||
}
|
||||
|
||||
template < detail::type_family L, detail::type_family R >
|
||||
[[nodiscard]] std::strong_ordering operator<=>(const L& l, const R& r) noexcept {
|
||||
if ( const std::strong_ordering cmp{!l.is_empty() <=> !r.is_empty()}; cmp != std::strong_ordering::equal ) {
|
||||
if ( const std::strong_ordering cmp{l.is_valid() <=> r.is_valid()}; cmp != std::strong_ordering::equal ) {
|
||||
return cmp;
|
||||
}
|
||||
return l.is_empty() ? std::strong_ordering::equal : l.get_id() <=> r.get_id();
|
||||
return l.is_valid() ? l.get_id() <=> r.get_id() : std::strong_ordering::equal;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -352,12 +352,12 @@ namespace meta_hpp
|
||||
{
|
||||
template < detail::type_family L >
|
||||
[[nodiscard]] bool operator==(const L& l, type_id r) noexcept {
|
||||
return !l.is_empty() && l.get_id() == r;
|
||||
return l.is_valid() && l.get_id() == r;
|
||||
}
|
||||
|
||||
template < detail::type_family L >
|
||||
[[nodiscard]] std::strong_ordering operator<=>(const L& l, type_id r) noexcept {
|
||||
return !l.is_empty() ? l.get_id() <=> r : std::strong_ordering::less;
|
||||
return l.is_valid() ? l.get_id() <=> r : std::strong_ordering::less;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@ namespace meta_hpp
|
||||
}
|
||||
|
||||
inline bool class_type::is_base_of(const class_type& derived) const noexcept {
|
||||
if ( is_empty() || derived.is_empty() ) {
|
||||
if ( !is_valid() || !derived.is_valid() ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ namespace meta_hpp
|
||||
}
|
||||
|
||||
inline bool class_type::is_derived_from(const class_type& base) const noexcept {
|
||||
if ( is_empty() || base.is_empty() ) {
|
||||
if ( !is_valid() || !base.is_valid() ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user