summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--binding_generator.py5
-rw-r--r--test/project/main.gd3
-rw-r--r--test/src/example.cpp5
-rw-r--r--test/src/example.h1
4 files changed, 13 insertions, 1 deletions
diff --git a/binding_generator.py b/binding_generator.py
index 42307c8..3a00049 100644
--- a/binding_generator.py
+++ b/binding_generator.py
@@ -1799,7 +1799,10 @@ def generate_utility_functions(api, output_dir):
arguments.append(arg_name)
function_call += ", ".join(arguments)
else:
- source.append("\tVariant ret;")
+ if has_return:
+ source.append(f'\t{get_gdextension_type(correct_type(function["return_type"]))} ret;')
+ else:
+ source.append("\tVariant ret;")
function_call += "___function(&ret, reinterpret_cast<GDExtensionConstVariantPtr *>(args), arg_count"
function_call += ");"
diff --git a/test/project/main.gd b/test/project/main.gd
index 5abe864..bad2501 100644
--- a/test/project/main.gd
+++ b/test/project/main.gd
@@ -79,6 +79,9 @@ func _ready():
# String += operator
assert_equal(example.test_string_ops(), "ABCĎE")
+ # UtilityFunctions::str()
+ assert_equal(example.test_str_utility(), "Hello, World! The answer is 42")
+
# PackedArray iterators
assert_equal(example.test_vector_ops(), 105)
diff --git a/test/src/example.cpp b/test/src/example.cpp
index e605a45..6c5e736 100644
--- a/test/src/example.cpp
+++ b/test/src/example.cpp
@@ -127,6 +127,7 @@ void Example::_bind_methods() {
ClassDB::bind_method(D_METHOD("test_dictionary"), &Example::test_dictionary);
ClassDB::bind_method(D_METHOD("test_node_argument"), &Example::test_node_argument);
ClassDB::bind_method(D_METHOD("test_string_ops"), &Example::test_string_ops);
+ ClassDB::bind_method(D_METHOD("test_str_utility"), &Example::test_str_utility);
ClassDB::bind_method(D_METHOD("test_vector_ops"), &Example::test_vector_ops);
ClassDB::bind_method(D_METHOD("test_bitfield", "flags"), &Example::test_bitfield);
@@ -280,6 +281,10 @@ String Example::test_string_ops() const {
return s;
}
+String Example::test_str_utility() const {
+ return UtilityFunctions::str("Hello, ", "World", "! The answer is ", 42);
+}
+
int Example::test_vector_ops() const {
PackedInt32Array arr;
arr.push_back(10);
diff --git a/test/src/example.h b/test/src/example.h
index 8c8b250..7f1b5b2 100644
--- a/test/src/example.h
+++ b/test/src/example.h
@@ -115,6 +115,7 @@ public:
Dictionary test_dictionary() const;
Example *test_node_argument(Example *p_node) const;
String test_string_ops() const;
+ String test_str_utility() const;
int test_vector_ops() const;
BitField<Flags> test_bitfield(BitField<Flags> flags);