diff options
Diffstat (limited to 'core/variant/callable_bind.cpp')
-rw-r--r-- | core/variant/callable_bind.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/core/variant/callable_bind.cpp b/core/variant/callable_bind.cpp index 9a6380a55f..d82aa3583d 100644 --- a/core/variant/callable_bind.cpp +++ b/core/variant/callable_bind.cpp @@ -91,6 +91,14 @@ const Callable *CallableCustomBind::get_base_comparator() const { return callable.get_base_comparator(); } +int CallableCustomBind::get_argument_count(bool &r_is_valid) const { + int ret = callable.get_argument_count(&r_is_valid); + if (r_is_valid) { + return ret - binds.size(); + } + return 0; +} + int CallableCustomBind::get_bound_arguments_count() const { return callable.get_bound_arguments_count() + binds.size(); } @@ -133,7 +141,7 @@ void CallableCustomBind::get_bound_arguments(Vector<Variant> &r_arguments, int & } void CallableCustomBind::call(const Variant **p_arguments, int p_argcount, Variant &r_return_value, Callable::CallError &r_call_error) const { - const Variant **args = (const Variant **)alloca(sizeof(const Variant **) * (binds.size() + p_argcount)); + const Variant **args = (const Variant **)alloca(sizeof(Variant *) * (binds.size() + p_argcount)); for (int i = 0; i < p_argcount; i++) { args[i] = (const Variant *)p_arguments[i]; } @@ -145,7 +153,7 @@ void CallableCustomBind::call(const Variant **p_arguments, int p_argcount, Varia } Error CallableCustomBind::rpc(int p_peer_id, const Variant **p_arguments, int p_argcount, Callable::CallError &r_call_error) const { - const Variant **args = (const Variant **)alloca(sizeof(const Variant **) * (binds.size() + p_argcount)); + const Variant **args = (const Variant **)alloca(sizeof(Variant *) * (binds.size() + p_argcount)); for (int i = 0; i < p_argcount; i++) { args[i] = (const Variant *)p_arguments[i]; } @@ -225,6 +233,14 @@ const Callable *CallableCustomUnbind::get_base_comparator() const { return callable.get_base_comparator(); } +int CallableCustomUnbind::get_argument_count(bool &r_is_valid) const { + int ret = callable.get_argument_count(&r_is_valid); + if (r_is_valid) { + return ret + argcount; + } + return 0; +} + int CallableCustomUnbind::get_bound_arguments_count() const { return callable.get_bound_arguments_count() - argcount; } |