|
@@ -271,8 +271,8 @@ public:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the meta type of the underlying object.
|
|
|
|
|
- * @return The meta type of the underlying object, if any.
|
|
|
|
|
|
|
+ * @brief Returns the type of the underlying object.
|
|
|
|
|
+ * @return The type of the underlying object, if any.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] inline meta_type type() const ENTT_NOEXCEPT;
|
|
[[nodiscard]] inline meta_type type() const ENTT_NOEXCEPT;
|
|
|
|
|
|
|
@@ -292,7 +292,7 @@ public:
|
|
|
/**
|
|
/**
|
|
|
* @brief Invokes the underlying function, if possible.
|
|
* @brief Invokes the underlying function, if possible.
|
|
|
*
|
|
*
|
|
|
- * @sa invoke
|
|
|
|
|
|
|
+ * @sa meta_func::invoke
|
|
|
*
|
|
*
|
|
|
* @tparam Args Types of arguments to use to invoke the function.
|
|
* @tparam Args Types of arguments to use to invoke the function.
|
|
|
* @param id Unique identifier.
|
|
* @param id Unique identifier.
|
|
@@ -368,8 +368,7 @@ public:
|
|
|
* The type of the instance must be such that the cast is possible.
|
|
* The type of the instance must be such that the cast is possible.
|
|
|
*
|
|
*
|
|
|
* @warning
|
|
* @warning
|
|
|
- * Attempting to perform a cast that isn't viable results in undefined
|
|
|
|
|
- * behavior.
|
|
|
|
|
|
|
+ * Attempting to perform an invalid cast results in undefined behavior.
|
|
|
*
|
|
*
|
|
|
* @tparam Type Type to which to cast the instance.
|
|
* @tparam Type Type to which to cast the instance.
|
|
|
* @return A reference to the contained instance.
|
|
* @return A reference to the contained instance.
|
|
@@ -393,8 +392,8 @@ public:
|
|
|
/**
|
|
/**
|
|
|
* @brief Tries to make an instance castable to a certain type.
|
|
* @brief Tries to make an instance castable to a certain type.
|
|
|
* @tparam Type Type to which the cast is requested.
|
|
* @tparam Type Type to which the cast is requested.
|
|
|
- * @return A valid meta any object if there exists a a viable conversion
|
|
|
|
|
- * that makes the cast possible, an invalid object otherwise.
|
|
|
|
|
|
|
+ * @return A valid meta any object if there exists a viable conversion that
|
|
|
|
|
+ * makes the cast possible, an invalid object otherwise.
|
|
|
*/
|
|
*/
|
|
|
template<typename Type>
|
|
template<typename Type>
|
|
|
[[nodiscard]] meta_any allow_cast() const {
|
|
[[nodiscard]] meta_any allow_cast() const {
|
|
@@ -414,7 +413,7 @@ public:
|
|
|
/**
|
|
/**
|
|
|
* @brief Tries to make an instance castable to a certain type.
|
|
* @brief Tries to make an instance castable to a certain type.
|
|
|
* @tparam Type Type to which the cast is requested.
|
|
* @tparam Type Type to which the cast is requested.
|
|
|
- * @return True if there exists a a viable conversion that makes the cast
|
|
|
|
|
|
|
+ * @return True if there exists a viable conversion that makes the cast
|
|
|
* possible, false otherwise.
|
|
* possible, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
template<typename Type>
|
|
template<typename Type>
|
|
@@ -569,7 +568,7 @@ private:
|
|
|
*
|
|
*
|
|
|
* A handle doesn't perform copies and isn't responsible for the contained
|
|
* A handle doesn't perform copies and isn't responsible for the contained
|
|
|
* object. It doesn't prolong the lifetime of the pointed instance.<br/>
|
|
* object. It doesn't prolong the lifetime of the pointed instance.<br/>
|
|
|
- * Handles are used to generate meta references to actual objects when needed.
|
|
|
|
|
|
|
+ * Handles are used to generate references to actual objects when needed.
|
|
|
*/
|
|
*/
|
|
|
struct meta_handle {
|
|
struct meta_handle {
|
|
|
/*! @brief Default constructor. */
|
|
/*! @brief Default constructor. */
|
|
@@ -620,7 +619,7 @@ private:
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
-/*! @brief Opaque wrapper for meta properties of any type. */
|
|
|
|
|
|
|
+/*! @brief Opaque wrapper for properties of any type. */
|
|
|
struct meta_prop {
|
|
struct meta_prop {
|
|
|
/*! @brief Node type. */
|
|
/*! @brief Node type. */
|
|
|
using node_type = internal::meta_prop_node;
|
|
using node_type = internal::meta_prop_node;
|
|
@@ -650,8 +649,8 @@ struct meta_prop {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns true if a meta object is valid, false otherwise.
|
|
|
|
|
- * @return True if the meta object is valid, false otherwise.
|
|
|
|
|
|
|
+ * @brief Returns true if an object is valid, false otherwise.
|
|
|
|
|
+ * @return True if the object is valid, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
|
return !(node == nullptr);
|
|
return !(node == nullptr);
|
|
@@ -662,7 +661,7 @@ private:
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
-/*! @brief Opaque wrapper for meta base classes. */
|
|
|
|
|
|
|
+/*! @brief Opaque wrapper for base classes. */
|
|
|
struct meta_base {
|
|
struct meta_base {
|
|
|
/*! @brief Node type. */
|
|
/*! @brief Node type. */
|
|
|
using node_type = internal::meta_base_node;
|
|
using node_type = internal::meta_base_node;
|
|
@@ -673,8 +672,8 @@ struct meta_base {
|
|
|
{}
|
|
{}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the meta type to which a meta object belongs.
|
|
|
|
|
- * @return The meta type to which the meta object belongs.
|
|
|
|
|
|
|
+ * @brief Returns the type to which an object belongs.
|
|
|
|
|
+ * @return The type to which the object belongs.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] inline meta_type parent() const ENTT_NOEXCEPT;
|
|
[[nodiscard]] inline meta_type parent() const ENTT_NOEXCEPT;
|
|
|
|
|
|
|
@@ -691,8 +690,8 @@ struct meta_base {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns true if a meta object is valid, false otherwise.
|
|
|
|
|
- * @return True if the meta object is valid, false otherwise.
|
|
|
|
|
|
|
+ * @brief Returns true if an object is valid, false otherwise.
|
|
|
|
|
+ * @return True if the object is valid, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
|
return !(node == nullptr);
|
|
return !(node == nullptr);
|
|
@@ -703,7 +702,7 @@ private:
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
-/*! @brief Opaque wrapper for meta conversion functions. */
|
|
|
|
|
|
|
+/*! @brief Opaque wrapper for conversion functions. */
|
|
|
struct meta_conv {
|
|
struct meta_conv {
|
|
|
/*! @brief Node type. */
|
|
/*! @brief Node type. */
|
|
|
using node_type = internal::meta_conv_node;
|
|
using node_type = internal::meta_conv_node;
|
|
@@ -729,8 +728,8 @@ struct meta_conv {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns true if a meta object is valid, false otherwise.
|
|
|
|
|
- * @return True if the meta object is valid, false otherwise.
|
|
|
|
|
|
|
+ * @brief Returns true if an object is valid, false otherwise.
|
|
|
|
|
+ * @return True if the object is valid, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
|
return !(node == nullptr);
|
|
return !(node == nullptr);
|
|
@@ -741,7 +740,7 @@ private:
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
-/*! @brief Opaque wrapper for meta constructors. */
|
|
|
|
|
|
|
+/*! @brief Opaque wrapper for constructors. */
|
|
|
struct meta_ctor {
|
|
struct meta_ctor {
|
|
|
/*! @brief Node type. */
|
|
/*! @brief Node type. */
|
|
|
using node_type = internal::meta_ctor_node;
|
|
using node_type = internal::meta_ctor_node;
|
|
@@ -757,26 +756,25 @@ struct meta_ctor {
|
|
|
[[nodiscard]] inline meta_type parent() const ENTT_NOEXCEPT;
|
|
[[nodiscard]] inline meta_type parent() const ENTT_NOEXCEPT;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the number of arguments accepted by a meta constructor.
|
|
|
|
|
- * @return The number of arguments accepted by the meta constructor.
|
|
|
|
|
|
|
+ * @brief Returns the number of arguments accepted by a constructor.
|
|
|
|
|
+ * @return The number of arguments accepted by the constructor.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] size_type size() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] size_type size() const ENTT_NOEXCEPT {
|
|
|
return node->size;
|
|
return node->size;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the meta type of the i-th argument of a meta constructor.
|
|
|
|
|
- * @param index The index of the argument of which to return the meta type.
|
|
|
|
|
- * @return The meta type of the i-th argument of a meta constructor, if any.
|
|
|
|
|
|
|
+ * @brief Returns the type of the i-th argument of a constructor.
|
|
|
|
|
+ * @param index The index of the argument of which to return the type.
|
|
|
|
|
+ * @return The type of the i-th argument of a constructor, if any.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] meta_type arg(size_type index) const ENTT_NOEXCEPT;
|
|
[[nodiscard]] meta_type arg(size_type index) const ENTT_NOEXCEPT;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @brief Creates an instance of the underlying type, if possible.
|
|
* @brief Creates an instance of the underlying type, if possible.
|
|
|
*
|
|
*
|
|
|
- * To create a valid instance, the parameters must be such that a cast or
|
|
|
|
|
- * conversion to the required types is possible. Otherwise, an empty and
|
|
|
|
|
- * thus invalid wrapper is returned.
|
|
|
|
|
|
|
+ * Parameters must be such that a cast or conversion to the required types
|
|
|
|
|
+ * is possible. Otherwise, an empty and thus invalid wrapper is returned.
|
|
|
*
|
|
*
|
|
|
* @param args Parameters to use to construct the instance.
|
|
* @param args Parameters to use to construct the instance.
|
|
|
* @param sz Number of parameters to use to construct the instance.
|
|
* @param sz Number of parameters to use to construct the instance.
|
|
@@ -802,8 +800,8 @@ struct meta_ctor {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns a range to use to visit all meta properties.
|
|
|
|
|
- * @return An iterable range to use to visit all meta properties.
|
|
|
|
|
|
|
+ * @brief Returns a range to use to visit all properties.
|
|
|
|
|
+ * @return An iterable range to use to visit all properties.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] meta_range<meta_prop> prop() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] meta_range<meta_prop> prop() const ENTT_NOEXCEPT {
|
|
|
return node->prop;
|
|
return node->prop;
|
|
@@ -820,8 +818,8 @@ struct meta_ctor {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns true if a meta object is valid, false otherwise.
|
|
|
|
|
- * @return True if the meta object is valid, false otherwise.
|
|
|
|
|
|
|
+ * @brief Returns true if an object is valid, false otherwise.
|
|
|
|
|
+ * @return True if the object is valid, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
|
return !(node == nullptr);
|
|
return !(node == nullptr);
|
|
@@ -832,7 +830,7 @@ private:
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
-/*! @brief Opaque wrapper for meta data. */
|
|
|
|
|
|
|
+/*! @brief Opaque wrapper for data members. */
|
|
|
struct meta_data {
|
|
struct meta_data {
|
|
|
/*! @brief Node type. */
|
|
/*! @brief Node type. */
|
|
|
using node_type = internal::meta_data_node;
|
|
using node_type = internal::meta_data_node;
|
|
@@ -851,16 +849,16 @@ struct meta_data {
|
|
|
[[nodiscard]] inline meta_type parent() const ENTT_NOEXCEPT;
|
|
[[nodiscard]] inline meta_type parent() const ENTT_NOEXCEPT;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Indicates whether a meta data is constant or not.
|
|
|
|
|
- * @return True if the meta data is constant, false otherwise.
|
|
|
|
|
|
|
+ * @brief Indicates whether a data member is constant or not.
|
|
|
|
|
+ * @return True if the data member is constant, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] bool is_const() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] bool is_const() const ENTT_NOEXCEPT {
|
|
|
return (node->set == nullptr);
|
|
return (node->set == nullptr);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Indicates whether a meta data is static or not.
|
|
|
|
|
- * @return True if the meta data is static, false otherwise.
|
|
|
|
|
|
|
+ * @brief Indicates whether a data member is static or not.
|
|
|
|
|
+ * @return True if the data member is static, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] bool is_static() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] bool is_static() const ENTT_NOEXCEPT {
|
|
|
return node->is_static;
|
|
return node->is_static;
|
|
@@ -872,8 +870,8 @@ struct meta_data {
|
|
|
/**
|
|
/**
|
|
|
* @brief Sets the value of a given variable.
|
|
* @brief Sets the value of a given variable.
|
|
|
*
|
|
*
|
|
|
- * It must be possible to cast the instance to the parent type of the meta
|
|
|
|
|
- * data. Otherwise, invoking the setter results in an undefined
|
|
|
|
|
|
|
+ * It must be possible to cast the instance to the parent type of the data
|
|
|
|
|
+ * member. Otherwise, invoking the setter results in an undefined
|
|
|
* behavior.<br/>
|
|
* behavior.<br/>
|
|
|
* The type of the value must be such that a cast or conversion to the type
|
|
* The type of the value must be such that a cast or conversion to the type
|
|
|
* of the variable is possible. Otherwise, invoking the setter does nothing.
|
|
* of the variable is possible. Otherwise, invoking the setter does nothing.
|
|
@@ -891,8 +889,8 @@ struct meta_data {
|
|
|
/**
|
|
/**
|
|
|
* @brief Gets the value of a given variable.
|
|
* @brief Gets the value of a given variable.
|
|
|
*
|
|
*
|
|
|
- * It must be possible to cast the instance to the parent type of the meta
|
|
|
|
|
- * data. Otherwise, invoking the getter results in an undefined behavior.
|
|
|
|
|
|
|
+ * It must be possible to cast the instance to the parent type of the data
|
|
|
|
|
+ * member. Otherwise, invoking the getter results in an undefined behavior.
|
|
|
*
|
|
*
|
|
|
* @param instance An opaque instance of the underlying type.
|
|
* @param instance An opaque instance of the underlying type.
|
|
|
* @return A meta any containing the value of the underlying variable.
|
|
* @return A meta any containing the value of the underlying variable.
|
|
@@ -917,8 +915,8 @@ struct meta_data {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns true if a meta object is valid, false otherwise.
|
|
|
|
|
- * @return True if the meta object is valid, false otherwise.
|
|
|
|
|
|
|
+ * @brief Returns true if an object is valid, false otherwise.
|
|
|
|
|
+ * @return True if the object is valid, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
|
return !(node == nullptr);
|
|
return !(node == nullptr);
|
|
@@ -929,7 +927,7 @@ private:
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
-/*! @brief Opaque wrapper for meta functions. */
|
|
|
|
|
|
|
+/*! @brief Opaque wrapper for member functions. */
|
|
|
struct meta_func {
|
|
struct meta_func {
|
|
|
/*! @brief Node type. */
|
|
/*! @brief Node type. */
|
|
|
using node_type = internal::meta_func_node;
|
|
using node_type = internal::meta_func_node;
|
|
@@ -950,49 +948,49 @@ struct meta_func {
|
|
|
[[nodiscard]] inline meta_type parent() const ENTT_NOEXCEPT;
|
|
[[nodiscard]] inline meta_type parent() const ENTT_NOEXCEPT;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the number of arguments accepted by a meta function.
|
|
|
|
|
- * @return The number of arguments accepted by the meta function.
|
|
|
|
|
|
|
+ * @brief Returns the number of arguments accepted by a member function.
|
|
|
|
|
+ * @return The number of arguments accepted by the member function.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] size_type size() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] size_type size() const ENTT_NOEXCEPT {
|
|
|
return node->size;
|
|
return node->size;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Indicates whether a meta function is constant or not.
|
|
|
|
|
- * @return True if the meta function is constant, false otherwise.
|
|
|
|
|
|
|
+ * @brief Indicates whether a member function is constant or not.
|
|
|
|
|
+ * @return True if the member function is constant, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] bool is_const() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] bool is_const() const ENTT_NOEXCEPT {
|
|
|
return node->is_const;
|
|
return node->is_const;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Indicates whether a meta function is static or not.
|
|
|
|
|
- * @return True if the meta function is static, false otherwise.
|
|
|
|
|
|
|
+ * @brief Indicates whether a member function is static or not.
|
|
|
|
|
+ * @return True if the member function is static, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] bool is_static() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] bool is_static() const ENTT_NOEXCEPT {
|
|
|
return node->is_static;
|
|
return node->is_static;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the meta type of the return type of a meta function.
|
|
|
|
|
- * @return The meta type of the return type of the meta function.
|
|
|
|
|
|
|
+ * @brief Returns the return type of a member function.
|
|
|
|
|
+ * @return The return type of the member function.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] inline meta_type ret() const ENTT_NOEXCEPT;
|
|
[[nodiscard]] inline meta_type ret() const ENTT_NOEXCEPT;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the meta type of the i-th argument of a meta function.
|
|
|
|
|
- * @param index The index of the argument of which to return the meta type.
|
|
|
|
|
- * @return The meta type of the i-th argument of a meta function, if any.
|
|
|
|
|
|
|
+ * @brief Returns the type of the i-th argument of a member function.
|
|
|
|
|
+ * @param index The index of the argument of which to return the type.
|
|
|
|
|
+ * @return The type of the i-th argument of a member function, if any.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] inline meta_type arg(size_type index) const ENTT_NOEXCEPT;
|
|
[[nodiscard]] inline meta_type arg(size_type index) const ENTT_NOEXCEPT;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @brief Invokes the underlying function, if possible.
|
|
* @brief Invokes the underlying function, if possible.
|
|
|
*
|
|
*
|
|
|
- * To invoke a meta function, the parameters must be such that a cast or
|
|
|
|
|
|
|
+ * To invoke a member function, the parameters must be such that a cast or
|
|
|
* conversion to the required types is possible. Otherwise, an empty and
|
|
* conversion to the required types is possible. Otherwise, an empty and
|
|
|
* thus invalid wrapper is returned.<br/>
|
|
* thus invalid wrapper is returned.<br/>
|
|
|
- * It must be possible to cast the instance to the parent type of the meta
|
|
|
|
|
|
|
+ * It must be possible to cast the instance to the parent type of the member
|
|
|
* function. Otherwise, invoking the underlying function results in an
|
|
* function. Otherwise, invoking the underlying function results in an
|
|
|
* undefined behavior.
|
|
* undefined behavior.
|
|
|
*
|
|
*
|
|
@@ -1037,8 +1035,8 @@ struct meta_func {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns true if a meta object is valid, false otherwise.
|
|
|
|
|
- * @return True if the meta object is valid, false otherwise.
|
|
|
|
|
|
|
+ * @brief Returns true if an object is valid, false otherwise.
|
|
|
|
|
+ * @return True if the object is valid, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
|
return !(node == nullptr);
|
|
return !(node == nullptr);
|
|
@@ -1049,7 +1047,7 @@ private:
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
-/*! @brief Opaque wrapper for meta types. */
|
|
|
|
|
|
|
+/*! @brief Opaque wrapper for types. */
|
|
|
class meta_type {
|
|
class meta_type {
|
|
|
static bool can_cast_or_convert(const meta_type type, const type_info info) ENTT_NOEXCEPT {
|
|
static bool can_cast_or_convert(const meta_type type, const type_info info) ENTT_NOEXCEPT {
|
|
|
for(auto curr: type.conv()) {
|
|
for(auto curr: type.conv()) {
|
|
@@ -1098,8 +1096,8 @@ public:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the identifier assigned to a meta object.
|
|
|
|
|
- * @return The identifier assigned to the meta object.
|
|
|
|
|
|
|
+ * @brief Returns the identifier assigned to a type.
|
|
|
|
|
+ * @return The identifier assigned to the type.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] id_type id() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] id_type id() const ENTT_NOEXCEPT {
|
|
|
return node->id;
|
|
return node->id;
|
|
@@ -1255,35 +1253,35 @@ public:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Provides the meta type for which the pointer is defined.
|
|
|
|
|
- * @return The meta type for which the pointer is defined or this meta type
|
|
|
|
|
- * if it doesn't refer to a pointer type.
|
|
|
|
|
|
|
+ * @brief Provides the type for which the pointer is defined.
|
|
|
|
|
+ * @return The type for which the pointer is defined or this type if it
|
|
|
|
|
+ * doesn't refer to a pointer type.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] meta_type remove_pointer() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] meta_type remove_pointer() const ENTT_NOEXCEPT {
|
|
|
return node->remove_pointer();
|
|
return node->remove_pointer();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Provides the meta type for which the array is defined.
|
|
|
|
|
- * @return The meta type for which the array is defined or this meta type
|
|
|
|
|
- * if it doesn't refer to an array type.
|
|
|
|
|
|
|
+ * @brief Provides the type for which the array is defined.
|
|
|
|
|
+ * @return The type for which the array is defined or this type if it
|
|
|
|
|
+ * doesn't refer to an array type.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] meta_type remove_extent() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] meta_type remove_extent() const ENTT_NOEXCEPT {
|
|
|
return node->remove_extent();
|
|
return node->remove_extent();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns a range to use to visit top-level meta bases.
|
|
|
|
|
- * @return An iterable range to use to visit top-level meta bases.
|
|
|
|
|
|
|
+ * @brief Returns a range to use to visit top-level bases.
|
|
|
|
|
+ * @return An iterable range to use to visit top-level bases.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] meta_range<meta_base> base() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] meta_range<meta_base> base() const ENTT_NOEXCEPT {
|
|
|
return node->base;
|
|
return node->base;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the meta base associated with a given identifier.
|
|
|
|
|
|
|
+ * @brief Returns the base associated with a given identifier.
|
|
|
* @param id Unique identifier.
|
|
* @param id Unique identifier.
|
|
|
- * @return The meta base associated with the given identifier, if any.
|
|
|
|
|
|
|
+ * @return The base associated with the given identifier, if any.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] meta_base base(const id_type id) const {
|
|
[[nodiscard]] meta_base base(const id_type id) const {
|
|
|
return internal::find_if<&node_type::base>([id](const auto *curr) {
|
|
return internal::find_if<&node_type::base>([id](const auto *curr) {
|
|
@@ -1292,20 +1290,17 @@ public:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns a range to use to visit top-level meta conversion
|
|
|
|
|
- * functions.
|
|
|
|
|
- * @return An iterable range to use to visit top-level meta conversion
|
|
|
|
|
- * functions.
|
|
|
|
|
|
|
+ * @brief Returns a range to use to visit top-level conversion functions.
|
|
|
|
|
+ * @return An iterable range to use to visit top-level conversion functions.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] meta_range<meta_conv> conv() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] meta_range<meta_conv> conv() const ENTT_NOEXCEPT {
|
|
|
return node->conv;
|
|
return node->conv;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the meta conversion function associated with a given type.
|
|
|
|
|
- * @tparam Type The type to use to search for a meta conversion function.
|
|
|
|
|
- * @return The meta conversion function associated with the given type, if
|
|
|
|
|
- * any.
|
|
|
|
|
|
|
+ * @brief Returns the conversion function associated with a given type.
|
|
|
|
|
+ * @tparam Type The type to use to search for a conversion function.
|
|
|
|
|
+ * @return The conversion function associated with the given type, if any.
|
|
|
*/
|
|
*/
|
|
|
template<typename Type>
|
|
template<typename Type>
|
|
|
[[nodiscard]] meta_conv conv() const {
|
|
[[nodiscard]] meta_conv conv() const {
|
|
@@ -1315,17 +1310,16 @@ public:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns a range to use to visit top-level meta constructors.
|
|
|
|
|
- * @return An iterable range to use to visit top-level meta constructors.
|
|
|
|
|
|
|
+ * @brief Returns a range to use to visit top-level constructors.
|
|
|
|
|
+ * @return An iterable range to use to visit top-level constructors.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] meta_range<meta_ctor> ctor() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] meta_range<meta_ctor> ctor() const ENTT_NOEXCEPT {
|
|
|
return node->ctor;
|
|
return node->ctor;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the meta constructor that accepts a given list of types of
|
|
|
|
|
- * arguments.
|
|
|
|
|
- * @return The requested meta constructor, if any.
|
|
|
|
|
|
|
+ * @brief Returns a constructor for a given list of types of arguments.
|
|
|
|
|
+ * @return The requested constructor, if any.
|
|
|
*/
|
|
*/
|
|
|
template<typename... Args>
|
|
template<typename... Args>
|
|
|
[[nodiscard]] meta_ctor ctor() const {
|
|
[[nodiscard]] meta_ctor ctor() const {
|
|
@@ -1333,20 +1327,20 @@ public:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns a range to use to visit top-level meta data.
|
|
|
|
|
- * @return An iterable range to use to visit top-level meta data.
|
|
|
|
|
|
|
+ * @brief Returns a range to use to visit top-level data.
|
|
|
|
|
+ * @return An iterable range to use to visit top-level data.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] meta_range<meta_data> data() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] meta_range<meta_data> data() const ENTT_NOEXCEPT {
|
|
|
return node->data;
|
|
return node->data;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the meta data associated with a given identifier.
|
|
|
|
|
|
|
+ * @brief Returns the data associated with a given identifier.
|
|
|
*
|
|
*
|
|
|
- * The meta data of the base classes will also be visited, if any.
|
|
|
|
|
|
|
+ * The data of the base classes will also be visited, if any.
|
|
|
*
|
|
*
|
|
|
* @param id Unique identifier.
|
|
* @param id Unique identifier.
|
|
|
- * @return The meta data associated with the given identifier, if any.
|
|
|
|
|
|
|
+ * @return The data associated with the given identifier, if any.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] meta_data data(const id_type id) const {
|
|
[[nodiscard]] meta_data data(const id_type id) const {
|
|
|
return internal::find_if<&node_type::data>([id](const auto *curr) {
|
|
return internal::find_if<&node_type::data>([id](const auto *curr) {
|
|
@@ -1355,22 +1349,22 @@ public:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns a range to use to visit top-level meta functions.
|
|
|
|
|
- * @return An iterable range to use to visit top-level meta functions.
|
|
|
|
|
|
|
+ * @brief Returns a range to use to visit top-level functions.
|
|
|
|
|
+ * @return An iterable range to use to visit top-level functions.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] meta_range<meta_func> func() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] meta_range<meta_func> func() const ENTT_NOEXCEPT {
|
|
|
return node->func;
|
|
return node->func;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the meta function associated with a given identifier.
|
|
|
|
|
|
|
+ * @brief Returns the function associated with a given identifier.
|
|
|
*
|
|
*
|
|
|
- * The meta functions of the base classes will also be visited, if any.<br/>
|
|
|
|
|
- * In the case of overloaded meta functions, the first one with the required
|
|
|
|
|
- * id will be returned.
|
|
|
|
|
|
|
+ * The functions of the base classes will also be visited, if any.<br/>
|
|
|
|
|
+ * In the case of overloaded functions, the first one with the required
|
|
|
|
|
+ * identifier will be returned.
|
|
|
*
|
|
*
|
|
|
* @param id Unique identifier.
|
|
* @param id Unique identifier.
|
|
|
- * @return The meta function associated with the given identifier, if any.
|
|
|
|
|
|
|
+ * @return The function associated with the given identifier, if any.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] meta_func func(const id_type id) const {
|
|
[[nodiscard]] meta_func func(const id_type id) const {
|
|
|
return internal::find_if<&node_type::func>([id](const auto *curr) {
|
|
return internal::find_if<&node_type::func>([id](const auto *curr) {
|
|
@@ -1381,9 +1375,8 @@ public:
|
|
|
/**
|
|
/**
|
|
|
* @brief Creates an instance of the underlying type, if possible.
|
|
* @brief Creates an instance of the underlying type, if possible.
|
|
|
*
|
|
*
|
|
|
- * To create a valid instance, the parameters must be such that a cast or
|
|
|
|
|
- * conversion to the required types is possible. Otherwise, an empty and
|
|
|
|
|
- * thus invalid wrapper is returned.
|
|
|
|
|
|
|
+ * Parameters must be such that a cast or conversion to the required types
|
|
|
|
|
+ * is possible. Otherwise, an empty and thus invalid wrapper is returned.
|
|
|
*
|
|
*
|
|
|
* @param args Parameters to use to construct the instance.
|
|
* @param args Parameters to use to construct the instance.
|
|
|
* @param sz Number of parameters to use to construct the instance.
|
|
* @param sz Number of parameters to use to construct the instance.
|
|
@@ -1417,13 +1410,12 @@ public:
|
|
|
/**
|
|
/**
|
|
|
* @brief Invokes the function with the given identifier, if possible.
|
|
* @brief Invokes the function with the given identifier, if possible.
|
|
|
*
|
|
*
|
|
|
- * To invoke a meta function, the parameters must be such that a cast or
|
|
|
|
|
- * conversion to the required types is possible. Otherwise, an empty and
|
|
|
|
|
- * thus invalid wrapper is returned.<br/>
|
|
|
|
|
- * It must be possible to cast the instance to the parent type of the meta
|
|
|
|
|
|
|
+ * It must be possible to cast the instance to the parent type of the member
|
|
|
* function. Otherwise, invoking the underlying function results in an
|
|
* function. Otherwise, invoking the underlying function results in an
|
|
|
* undefined behavior.
|
|
* undefined behavior.
|
|
|
*
|
|
*
|
|
|
|
|
+ * @sa meta_func::invoke
|
|
|
|
|
+ *
|
|
|
* @param id Unique identifier.
|
|
* @param id Unique identifier.
|
|
|
* @param instance An opaque instance of the underlying type.
|
|
* @param instance An opaque instance of the underlying type.
|
|
|
* @param args Parameters to use to invoke the function.
|
|
* @param args Parameters to use to invoke the function.
|
|
@@ -1479,8 +1471,8 @@ public:
|
|
|
/**
|
|
/**
|
|
|
* @brief Sets the value of a given variable.
|
|
* @brief Sets the value of a given variable.
|
|
|
*
|
|
*
|
|
|
- * It must be possible to cast the instance to the parent type of the meta
|
|
|
|
|
- * data. Otherwise, invoking the setter results in an undefined
|
|
|
|
|
|
|
+ * It must be possible to cast the instance to the parent type of the data
|
|
|
|
|
+ * member. Otherwise, invoking the setter results in an undefined
|
|
|
* behavior.<br/>
|
|
* behavior.<br/>
|
|
|
* The type of the value must be such that a cast or conversion to the type
|
|
* The type of the value must be such that a cast or conversion to the type
|
|
|
* of the variable is possible. Otherwise, invoking the setter does nothing.
|
|
* of the variable is possible. Otherwise, invoking the setter does nothing.
|
|
@@ -1500,8 +1492,8 @@ public:
|
|
|
/**
|
|
/**
|
|
|
* @brief Gets the value of a given variable.
|
|
* @brief Gets the value of a given variable.
|
|
|
*
|
|
*
|
|
|
- * It must be possible to cast the instance to the parent type of the meta
|
|
|
|
|
- * data. Otherwise, invoking the getter results in an undefined behavior.
|
|
|
|
|
|
|
+ * It must be possible to cast the instance to the parent type of the data
|
|
|
|
|
+ * member. Otherwise, invoking the getter results in an undefined behavior.
|
|
|
*
|
|
*
|
|
|
* @param id Unique identifier.
|
|
* @param id Unique identifier.
|
|
|
* @param instance An opaque instance of the underlying type.
|
|
* @param instance An opaque instance of the underlying type.
|
|
@@ -1513,8 +1505,8 @@ public:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns a range to use to visit top-level meta properties.
|
|
|
|
|
- * @return An iterable range to use to visit top-level meta properties.
|
|
|
|
|
|
|
+ * @brief Returns a range to use to visit top-level properties.
|
|
|
|
|
+ * @return An iterable range to use to visit top-level properties.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] meta_range<meta_prop> prop() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] meta_range<meta_prop> prop() const ENTT_NOEXCEPT {
|
|
|
return node->prop;
|
|
return node->prop;
|
|
@@ -1535,32 +1527,31 @@ public:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns true if a meta object is valid, false otherwise.
|
|
|
|
|
- * @return True if the meta object is valid, false otherwise.
|
|
|
|
|
|
|
+ * @brief Returns true if an object is valid, false otherwise.
|
|
|
|
|
+ * @return True if the object is valid, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT {
|
|
|
return !(node == nullptr);
|
|
return !(node == nullptr);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Checks if two meta objects refer to the same type.
|
|
|
|
|
- * @param other The meta object with which to compare.
|
|
|
|
|
- * @return True if the two meta objects refer to the same type, false
|
|
|
|
|
- * otherwise.
|
|
|
|
|
|
|
+ * @brief Checks if two objects refer to the same type.
|
|
|
|
|
+ * @param other The object with which to compare.
|
|
|
|
|
+ * @return True if the objects refer to the same type, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] bool operator==(const meta_type &other) const ENTT_NOEXCEPT {
|
|
[[nodiscard]] bool operator==(const meta_type &other) const ENTT_NOEXCEPT {
|
|
|
return (!node && !other.node) || (node && other.node && node->info == other.node->info);
|
|
return (!node && !other.node) || (node && other.node && node->info == other.node->info);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Resets a meta type and all its parts.
|
|
|
|
|
|
|
+ * @brief Resets a type and all its parts.
|
|
|
*
|
|
*
|
|
|
- * This function resets a meta type and all its data members, member
|
|
|
|
|
- * functions and properties, as well as its constructors, destructors and
|
|
|
|
|
- * conversion functions if any.<br/>
|
|
|
|
|
|
|
+ * This function resets a type and all its data members, member functions
|
|
|
|
|
+ * and properties, as well as its constructors, destructors and conversion
|
|
|
|
|
+ * functions if any.<br/>
|
|
|
* Base classes aren't reset but the link between the two types is removed.
|
|
* Base classes aren't reset but the link between the two types is removed.
|
|
|
*
|
|
*
|
|
|
- * The meta type is also removed from the list of searchable types.
|
|
|
|
|
|
|
+ * The type is also removed from the list of searchable types.
|
|
|
*/
|
|
*/
|
|
|
void reset() ENTT_NOEXCEPT {
|
|
void reset() ENTT_NOEXCEPT {
|
|
|
auto** it = internal::meta_context::global();
|
|
auto** it = internal::meta_context::global();
|
|
@@ -1601,10 +1592,10 @@ private:
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Checks if two meta objects refer to the same type.
|
|
|
|
|
- * @param lhs A meta object, either valid or not.
|
|
|
|
|
- * @param rhs A meta object, either valid or not.
|
|
|
|
|
- * @return False if the two meta objects refer to the same node, true otherwise.
|
|
|
|
|
|
|
+ * @brief Checks if two objects refer to the same type.
|
|
|
|
|
+ * @param lhs An object, either valid or not.
|
|
|
|
|
+ * @param rhs An object, either valid or not.
|
|
|
|
|
+ * @return False if the objects refer to the same node, true otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] inline bool operator!=(const meta_type &lhs, const meta_type &rhs) ENTT_NOEXCEPT {
|
|
[[nodiscard]] inline bool operator!=(const meta_type &lhs, const meta_type &rhs) ENTT_NOEXCEPT {
|
|
|
return !(lhs == rhs);
|
|
return !(lhs == rhs);
|
|
@@ -1699,9 +1690,9 @@ bool meta_any::set(const id_type id, Type &&value) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
-/*! @brief Opaque iterator for meta sequence containers. */
|
|
|
|
|
|
|
+/*! @brief Opaque iterator for sequence containers. */
|
|
|
class meta_sequence_container::meta_iterator {
|
|
class meta_sequence_container::meta_iterator {
|
|
|
- /*! @brief A meta sequence container can access the underlying iterator. */
|
|
|
|
|
|
|
+ /*! @brief A sequence container can access the underlying iterator. */
|
|
|
friend class meta_sequence_container;
|
|
friend class meta_sequence_container;
|
|
|
|
|
|
|
|
enum class operation { INCR, DEREF };
|
|
enum class operation { INCR, DEREF };
|
|
@@ -1758,20 +1749,18 @@ public:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Checks if two meta iterators refer to the same element.
|
|
|
|
|
- * @param other The meta iterator with which to compare.
|
|
|
|
|
- * @return True if the two meta iterators refer to the same element, false
|
|
|
|
|
- * otherwise.
|
|
|
|
|
|
|
+ * @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 {
|
|
[[nodiscard]] bool operator==(const meta_iterator &other) const ENTT_NOEXCEPT {
|
|
|
return handle == other.handle;
|
|
return handle == other.handle;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Checks if two meta iterators refer to the same element.
|
|
|
|
|
- * @param other The meta iterator with which to compare.
|
|
|
|
|
- * @return False if the two meta iterators refer to the same element, true
|
|
|
|
|
- * otherwise.
|
|
|
|
|
|
|
+ * @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 {
|
|
[[nodiscard]] bool operator!=(const meta_iterator &other) const ENTT_NOEXCEPT {
|
|
|
return !(*this == other);
|
|
return !(*this == other);
|
|
@@ -1779,7 +1768,7 @@ public:
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @brief Indirection operator.
|
|
* @brief Indirection operator.
|
|
|
- * @return The element to which the meta pointer points.
|
|
|
|
|
|
|
+ * @return The element to which the iterator points.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] reference operator*() const {
|
|
[[nodiscard]] reference operator*() const {
|
|
|
meta_any other;
|
|
meta_any other;
|
|
@@ -1874,8 +1863,8 @@ struct meta_sequence_container::meta_sequence_container_proxy {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the value meta type of the wrapped container type.
|
|
|
|
|
- * @return The value meta type of the wrapped container type.
|
|
|
|
|
|
|
+ * @brief Returns the meta value type of a container.
|
|
|
|
|
+ * @return The meta value type of the container.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] inline meta_type meta_sequence_container::value_type() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] inline meta_type meta_sequence_container::value_type() const ENTT_NOEXCEPT {
|
|
|
return value_type_fn();
|
|
return value_type_fn();
|
|
@@ -1883,8 +1872,8 @@ struct meta_sequence_container::meta_sequence_container_proxy {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the size of the wrapped container.
|
|
|
|
|
- * @return The size of the wrapped container.
|
|
|
|
|
|
|
+ * @brief Returns the size of a container.
|
|
|
|
|
+ * @return The size of the container.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] inline meta_sequence_container::size_type meta_sequence_container::size() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] inline meta_sequence_container::size_type meta_sequence_container::size() const ENTT_NOEXCEPT {
|
|
|
return size_fn(storage);
|
|
return size_fn(storage);
|
|
@@ -1892,7 +1881,7 @@ struct meta_sequence_container::meta_sequence_container_proxy {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Resizes the wrapped container to contain a given number of elements.
|
|
|
|
|
|
|
+ * @brief Resizes a container to contain a given number of elements.
|
|
|
* @param sz The new size of the container.
|
|
* @param sz The new size of the container.
|
|
|
* @return True in case of success, false otherwise.
|
|
* @return True in case of success, false otherwise.
|
|
|
*/
|
|
*/
|
|
@@ -1902,7 +1891,7 @@ inline bool meta_sequence_container::resize(size_type sz) {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Clears the content of the wrapped container.
|
|
|
|
|
|
|
+ * @brief Clears the content of a container.
|
|
|
* @return True in case of success, false otherwise.
|
|
* @return True in case of success, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
inline bool meta_sequence_container::clear() {
|
|
inline bool meta_sequence_container::clear() {
|
|
@@ -1911,8 +1900,8 @@ inline bool meta_sequence_container::clear() {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns a meta iterator to the first element of the wrapped container.
|
|
|
|
|
- * @return A meta iterator to the first element of the wrapped container.
|
|
|
|
|
|
|
+ * @brief Returns an iterator to the first element of a container.
|
|
|
|
|
+ * @return An iterator to the first element of the container.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] inline meta_sequence_container::iterator meta_sequence_container::begin() {
|
|
[[nodiscard]] inline meta_sequence_container::iterator meta_sequence_container::begin() {
|
|
|
return begin_fn(storage);
|
|
return begin_fn(storage);
|
|
@@ -1920,10 +1909,8 @@ inline bool meta_sequence_container::clear() {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns a meta iterator that is past the last element of the wrapped
|
|
|
|
|
- * container.
|
|
|
|
|
- * @return A meta iterator that is past the last element of the wrapped
|
|
|
|
|
- * container.
|
|
|
|
|
|
|
+ * @brief Returns an iterator that is past the last element of a container.
|
|
|
|
|
+ * @return An iterator that is past the last element of the container.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] inline meta_sequence_container::iterator meta_sequence_container::end() {
|
|
[[nodiscard]] inline meta_sequence_container::iterator meta_sequence_container::end() {
|
|
|
return end_fn(storage);
|
|
return end_fn(storage);
|
|
@@ -1931,11 +1918,11 @@ inline bool meta_sequence_container::clear() {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Inserts an element at a specified location of the wrapped container.
|
|
|
|
|
- * @param it Meta iterator before which the element will be inserted.
|
|
|
|
|
|
|
+ * @brief Inserts an element at a specified location of a container.
|
|
|
|
|
+ * @param it Iterator before which the element will be inserted.
|
|
|
* @param value Element value to insert.
|
|
* @param value Element value to insert.
|
|
|
- * @return A pair consisting of a meta iterator to the inserted element (in
|
|
|
|
|
- * case of success) and a bool denoting whether the insertion took place.
|
|
|
|
|
|
|
+ * @return A pair consisting of an iterator to the inserted element (in case of
|
|
|
|
|
+ * success) and a bool denoting whether the insertion took place.
|
|
|
*/
|
|
*/
|
|
|
inline std::pair<meta_sequence_container::iterator, bool> meta_sequence_container::insert(iterator it, meta_any value) {
|
|
inline std::pair<meta_sequence_container::iterator, bool> meta_sequence_container::insert(iterator it, meta_any value) {
|
|
|
return insert_fn(storage, it, value);
|
|
return insert_fn(storage, it, value);
|
|
@@ -1943,11 +1930,10 @@ inline std::pair<meta_sequence_container::iterator, bool> meta_sequence_containe
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Removes the specified element from the wrapped container.
|
|
|
|
|
- * @param it Meta iterator to the element to remove.
|
|
|
|
|
- * @return A pair consisting of a meta iterator following the last removed
|
|
|
|
|
- * element (in case of success) and a bool denoting whether the insertion
|
|
|
|
|
- * took place.
|
|
|
|
|
|
|
+ * @brief Removes a given element from a container.
|
|
|
|
|
+ * @param it Iterator to the element to remove.
|
|
|
|
|
+ * @return A pair consisting of an iterator following the last removed element
|
|
|
|
|
+ * (in case of success) and a bool denoting whether the insertion took place.
|
|
|
*/
|
|
*/
|
|
|
inline std::pair<meta_sequence_container::iterator, bool> meta_sequence_container::erase(iterator it) {
|
|
inline std::pair<meta_sequence_container::iterator, bool> meta_sequence_container::erase(iterator it) {
|
|
|
return erase_fn(storage, it);
|
|
return erase_fn(storage, it);
|
|
@@ -1955,8 +1941,8 @@ inline std::pair<meta_sequence_container::iterator, bool> meta_sequence_containe
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns a reference to the element at a specified location of the
|
|
|
|
|
- * wrapped container (no bounds checking is performed).
|
|
|
|
|
|
|
+ * @brief Returns a reference to the element at a given location of a container
|
|
|
|
|
+ * (no bounds checking is performed).
|
|
|
* @param pos The position of the element to return.
|
|
* @param pos The position of the element to return.
|
|
|
* @return A reference to the requested element properly wrapped.
|
|
* @return A reference to the requested element properly wrapped.
|
|
|
*/
|
|
*/
|
|
@@ -1974,7 +1960,7 @@ inline std::pair<meta_sequence_container::iterator, bool> meta_sequence_containe
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
-/*! @brief Opaque iterator for meta associative containers. */
|
|
|
|
|
|
|
+/*! @brief Opaque iterator for associative containers. */
|
|
|
class meta_associative_container::meta_iterator {
|
|
class meta_associative_container::meta_iterator {
|
|
|
enum operation { INCR, DEREF };
|
|
enum operation { INCR, DEREF };
|
|
|
|
|
|
|
@@ -2012,9 +1998,8 @@ public:
|
|
|
meta_iterator() ENTT_NOEXCEPT = default;
|
|
meta_iterator() ENTT_NOEXCEPT = default;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Constructs a meta iterator from a given iterator.
|
|
|
|
|
- * @tparam KeyOnly True if the associative container is also key-only, false
|
|
|
|
|
- * otherwise.
|
|
|
|
|
|
|
+ * @brief Constructs an meta iterator from a given iterator.
|
|
|
|
|
+ * @tparam KeyOnly True if the container is also key-only, false otherwise.
|
|
|
* @tparam It Type of actual iterator with which to build the meta iterator.
|
|
* @tparam It Type of actual iterator with which to build the meta iterator.
|
|
|
* @param iter The actual iterator with which to build the meta iterator.
|
|
* @param iter The actual iterator with which to build the meta iterator.
|
|
|
*/
|
|
*/
|
|
@@ -2036,20 +2021,18 @@ public:
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Checks if two meta iterators refer to the same element.
|
|
|
|
|
- * @param other The meta iterator with which to compare.
|
|
|
|
|
- * @return True if the two meta iterators refer to the same element, false
|
|
|
|
|
- * otherwise.
|
|
|
|
|
|
|
+ * @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 {
|
|
[[nodiscard]] bool operator==(const meta_iterator &other) const ENTT_NOEXCEPT {
|
|
|
return handle == other.handle;
|
|
return handle == other.handle;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Checks if two meta iterators refer to the same element.
|
|
|
|
|
- * @param other The meta iterator with which to compare.
|
|
|
|
|
- * @return False if the two meta iterators refer to the same element, true
|
|
|
|
|
- * otherwise.
|
|
|
|
|
|
|
+ * @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 {
|
|
[[nodiscard]] bool operator!=(const meta_iterator &other) const ENTT_NOEXCEPT {
|
|
|
return !(*this == other);
|
|
return !(*this == other);
|
|
@@ -2057,7 +2040,7 @@ public:
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @brief Indirection operator.
|
|
* @brief Indirection operator.
|
|
|
- * @return The element to which the meta pointer points.
|
|
|
|
|
|
|
+ * @return The element to which the iterator points.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] reference operator*() const {
|
|
[[nodiscard]] reference operator*() const {
|
|
|
reference other;
|
|
reference other;
|
|
@@ -2164,8 +2147,7 @@ struct meta_associative_container::meta_associative_container_proxy {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns true if the associative container is also key-only, false
|
|
|
|
|
- * otherwise.
|
|
|
|
|
|
|
+ * @brief Returns true if a container is also key-only, false otherwise.
|
|
|
* @return True if the associative container is also key-only, false otherwise.
|
|
* @return True if the associative container is also key-only, false otherwise.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] inline bool meta_associative_container::key_only() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] inline bool meta_associative_container::key_only() const ENTT_NOEXCEPT {
|
|
@@ -2174,8 +2156,8 @@ struct meta_associative_container::meta_associative_container_proxy {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the key meta type of the wrapped container type.
|
|
|
|
|
- * @return The key meta type of the wrapped container type.
|
|
|
|
|
|
|
+ * @brief Returns the meta key type of a container.
|
|
|
|
|
+ * @return The meta key type of the a container.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] inline meta_type meta_associative_container::key_type() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] inline meta_type meta_associative_container::key_type() const ENTT_NOEXCEPT {
|
|
|
return key_type_fn();
|
|
return key_type_fn();
|
|
@@ -2183,8 +2165,8 @@ struct meta_associative_container::meta_associative_container_proxy {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns the mapped meta type of the wrapped container type.
|
|
|
|
|
- * @return The mapped meta type of the wrapped container type.
|
|
|
|
|
|
|
+ * @brief Returns the meta mapped type of a container.
|
|
|
|
|
+ * @return The meta mapped type of the a container.
|
|
|
*/
|
|
*/
|
|
|
[[nodiscard]] inline meta_type meta_associative_container::mapped_type() const ENTT_NOEXCEPT {
|
|
[[nodiscard]] inline meta_type meta_associative_container::mapped_type() const ENTT_NOEXCEPT {
|
|
|
return mapped_type_fn();
|
|
return mapped_type_fn();
|
|
@@ -2222,7 +2204,7 @@ inline bool meta_associative_container::clear() {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Inserts an element (a key/value pair) into the wrapped container.
|
|
|
|
|
|
|
+ * @brief Inserts an element (a key/value pair) into a container.
|
|
|
* @param key The key of the element to insert.
|
|
* @param key The key of the element to insert.
|
|
|
* @param value The value of the element to insert.
|
|
* @param value The value of the element to insert.
|
|
|
* @return A bool denoting whether the insertion took place.
|
|
* @return A bool denoting whether the insertion took place.
|
|
@@ -2233,7 +2215,7 @@ inline bool meta_associative_container::insert(meta_any key, meta_any value = {}
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Removes the specified element from the wrapped container.
|
|
|
|
|
|
|
+ * @brief Removes the specified element from a container.
|
|
|
* @param key The key of the element to remove.
|
|
* @param key The key of the element to remove.
|
|
|
* @return A bool denoting whether the removal took place.
|
|
* @return A bool denoting whether the removal took place.
|
|
|
*/
|
|
*/
|
|
@@ -2243,8 +2225,7 @@ inline bool meta_associative_container::erase(meta_any key) {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @brief Returns an iterator to the element with key equivalent to a given
|
|
|
|
|
- * one, if any.
|
|
|
|
|
|
|
+ * @brief Returns an iterator to the element with a given key, if any.
|
|
|
* @param key The key of the element to search.
|
|
* @param key The key of the element to search.
|
|
|
* @return An iterator to the element with the given key, if any.
|
|
* @return An iterator to the element with the given key, if any.
|
|
|
*/
|
|
*/
|