Просмотр исходного кода

meta_func: remove overload that accepts meta_any* (wip)

skypjack 2 недель назад
Родитель
Сommit
6c8dce8833
2 измененных файлов с 3 добавлено и 17 удалено
  1. 1 2
      TODO
  2. 2 15
      src/entt/meta/meta.hpp

+ 1 - 2
TODO

@@ -38,6 +38,5 @@ TODO:
 * meta_data should check arity on set/get
 * refine arg and arity on meta_data
 * remove meta invoke/set/get that take meta_any *const args
-* meta: support more args than expected on invoke
-* meta: try to route the meta object path to invoke in meta_setter
+* remove meta construct that takes meta_any *const args
 * meta: meta_data set/get_arity and set/get_arg or similar

+ 2 - 15
src/entt/meta/meta.hpp

@@ -876,7 +876,7 @@ struct meta_data: meta_object<internal::meta_data_node> {
     template<typename Instance = meta_handle>
     // NOLINTNEXTLINE(modernize-use-nodiscard)
     bool set(Instance &&instance, auto &&...args) const {
-        return (arity() <= sizeof...(args)) && node_or_assert().set(meta_handle{*ctx, stl::forward<Instance>(instance)}, stl::array<meta_any, sizeof...(args)>{meta_any{*ctx, stl::forward<decltype(args)>(args)}...}.data());
+        return (sizeof...(args) == arity()) && node_or_assert().set(meta_handle{*ctx, stl::forward<Instance>(instance)}, stl::array<meta_any, sizeof...(args)>{meta_any{*ctx, stl::forward<decltype(args)>(args)}...}.data());
     }
 
     /**
@@ -971,25 +971,12 @@ struct meta_func: meta_object<internal::meta_func_node> {
      * @tparam Instance Type of instance to operate on.
      * @param instance An instance that fits the underlying type.
      * @param args Parameters to use to invoke the function.
-     * @param sz Number of parameters to use to invoke the function.
-     * @return A wrapper containing the returned value, if any.
-     */
-    template<typename Instance = meta_handle>
-    meta_any invoke(Instance &&instance, meta_any *const args, const size_type sz) const {
-        return (sz == arity()) ? node_or_assert().invoke(meta_handle{*ctx, stl::forward<Instance>(instance)}, args) : meta_any{meta_ctx_arg, *ctx};
-    }
-
-    /**
-     * @copybrief invoke
-     * @tparam Instance Type of instance to operate on.
-     * @param instance An instance that fits the underlying type.
-     * @param args Parameters to use to invoke the function.
      * @return A wrapper containing the returned value, if any.
      */
     template<typename Instance = meta_handle>
     // NOLINTNEXTLINE(modernize-use-nodiscard)
     meta_any invoke(Instance &&instance, auto &&...args) const {
-        return invoke(stl::forward<Instance>(instance), stl::array<meta_any, sizeof...(args)>{meta_any{*ctx, stl::forward<decltype(args)>(args)}...}.data(), sizeof...(args));
+        return (sizeof...(args) == arity()) ? node_or_assert().invoke(meta_handle{*ctx, stl::forward<Instance>(instance)}, stl::array<meta_any, sizeof...(args)>{meta_any{*ctx, stl::forward<decltype(args)>(args)}...}.data()) : meta_any{meta_ctx_arg, *ctx};
     }
 
     /*! @copydoc meta_data::traits */