From 0c2055d15d000f9e7070d401ff9e03d4bb2b339e Mon Sep 17 00:00:00 2001 From: Ricardo Buring Date: Tue, 20 Sep 2022 22:32:46 +0200 Subject: Callable: add callv method This method can be called from GDExtension. --- core/variant/callable.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'core/variant/callable.cpp') diff --git a/core/variant/callable.cpp b/core/variant/callable.cpp index 28efb43fc5..b35e2f004b 100644 --- a/core/variant/callable.cpp +++ b/core/variant/callable.cpp @@ -63,6 +63,21 @@ void Callable::callp(const Variant **p_arguments, int p_argcount, Variant &r_ret } } +Variant Callable::callv(const Array &p_arguments) const { + int argcount = p_arguments.size(); + const Variant **argptrs = nullptr; + if (argcount) { + argptrs = (const Variant **)alloca(sizeof(Variant *) * argcount); + for (int i = 0; i < argcount; i++) { + argptrs[i] = &p_arguments[i]; + } + } + CallError ce; + Variant ret; + callp(argptrs, argcount, ret, ce); + return ret; +} + Error Callable::rpcp(int p_id, const Variant **p_arguments, int p_argcount, CallError &r_call_error) const { if (is_null()) { r_call_error.error = CallError::CALL_ERROR_INSTANCE_IS_NULL; -- cgit v1.2.3