Skip to content

Commit b9ba650

Browse files
committed
Refactor LuaFunction calls (more DRY)
1 parent 09268b1 commit b9ba650

File tree

2 files changed

+14
-21
lines changed

2 files changed

+14
-21
lines changed

src/LuaFunction.cpp

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,16 @@
2929

3030
namespace luagdextension {
3131

32+
static Variant result_value(const sol::protected_function_result& result, bool return_lua_error) {
33+
if (!return_lua_error && !result.valid()) {
34+
ERR_PRINT(LuaError::extract_message(result));
35+
return Variant();
36+
}
37+
else {
38+
return to_variant(result);
39+
}
40+
}
41+
3242
LuaFunction::LuaFunction() : LuaObjectSubclass() {}
3343
LuaFunction::LuaFunction(sol::protected_function&& function) : LuaObjectSubclass(function) {}
3444
LuaFunction::LuaFunction(const sol::protected_function& function) : LuaObjectSubclass(function) {}
@@ -64,37 +74,19 @@ Variant LuaFunction::invoke_method(LuaScriptInstance *self, const Variant **args
6474
Variant LuaFunction::invoke_lua(const sol::protected_function& f, const Variant **args, GDExtensionInt arg_count, bool return_lua_error) {
6575
lua_State *L = f.lua_state();
6676
sol::protected_function_result result = f.call(VariantArguments(args, arg_count));
67-
if (!return_lua_error && !result.valid()) {
68-
ERR_PRINT(LuaError::extract_message(result));
69-
return Variant();
70-
}
71-
else {
72-
return to_variant(result);
73-
}
77+
return result_value(result, return_lua_error);
7478
}
7579

7680
Variant LuaFunction::invoke_method_lua(const sol::protected_function& f, const Variant& self, const Variant **args, GDExtensionInt arg_count, bool return_lua_error) {
7781
lua_State *L = f.lua_state();
7882
sol::protected_function_result result = f.call(VariantArguments(self, args, arg_count));
79-
if (!return_lua_error && !result.valid()) {
80-
ERR_PRINT(LuaError::extract_message(result));
81-
return Variant();
82-
}
83-
else {
84-
return to_variant(result);
85-
}
83+
return result_value(result, return_lua_error);
8684
}
8785

8886
Variant LuaFunction::invokev_lua(const sol::protected_function& f, const Array& args, bool return_lua_error) {
8987
lua_State *L = f.lua_state();
9088
sol::protected_function_result result = f.call(VariantArguments(args));
91-
if (!return_lua_error && !result.valid()) {
92-
ERR_PRINT(LuaError::extract_message(result));
93-
return Variant();
94-
}
95-
else {
96-
return to_variant(result);
97-
}
89+
return result_value(result, return_lua_error);
9890
}
9991

10092
Callable LuaFunction::to_callable() const {

src/utils/VariantArguments.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class VariantArguments {
3939
Vector<const Variant *> variant_pointers;
4040

4141
public:
42+
VariantArguments() = default;
4243
VariantArguments(const Array& args);
4344
VariantArguments(const Variant **argv, GDExtensionInt argc);
4445
VariantArguments(const Variant& self, const Variant **argv, GDExtensionInt argc);

0 commit comments

Comments
 (0)