Browse Source

Merge pull request #26130 from karroffel/gdnative-dictionary-fix

added godot_dictionary_get_with_default to GDNative
Rémi Verschelde 6 years ago
parent
commit
c700d714bb

+ 14 - 0
modules/gdnative/gdnative/dictionary.cpp

@@ -155,12 +155,26 @@ godot_string GDAPI godot_dictionary_to_json(const godot_dictionary *p_self) {
 	return raw_dest;
 }
 
+// GDNative core 1.1
+
 godot_bool GDAPI godot_dictionary_erase_with_return(godot_dictionary *p_self, const godot_variant *p_key) {
 	Dictionary *self = (Dictionary *)p_self;
 	const Variant *key = (const Variant *)p_key;
 	return self->erase(*key);
 }
 
+godot_variant GDAPI godot_dictionary_get_with_default(const godot_dictionary *p_self, const godot_variant *p_key, const godot_variant *p_default) {
+	const Dictionary *self = (const Dictionary *)p_self;
+	const Variant *key = (const Variant *)p_key;
+	const Variant *def = (const Variant *)p_default;
+
+	godot_variant raw_dest;
+	Variant *dest = (Variant *)&raw_dest;
+	memnew_placement(dest, Variant(self->get(*key, *def)));
+
+	return raw_dest;
+}
+
 #ifdef __cplusplus
 }
 #endif

+ 17 - 8
modules/gdnative/gdnative_api.json

@@ -106,6 +106,23 @@
             ["const godot_real", "p_t"]
           ]
         },
+        {
+          "name": "godot_dictionary_get_with_default",
+          "return_type": "godot_variant",
+          "arguments": [
+            ["const godot_dictionary *", "p_self"],
+            ["const godot_variant *", "p_key"],
+            ["const godot_variant *", "p_default"]
+          ]
+        },
+        {
+          "name": "godot_dictionary_erase_with_return",
+          "return_type": "bool",
+          "arguments": [
+            ["godot_dictionary *", "p_self"],
+            ["const godot_variant *", "p_key"]
+          ]
+        },
         {
           "name": "godot_node_path_get_as_property_path",
           "return_type": "godot_node_path",
@@ -233,14 +250,6 @@
             ["const godot_vector3 *", "p_scale"]
           ]
         },
-        {
-          "name": "godot_dictionary_erase_with_return",
-          "return_type": "bool",
-          "arguments": [
-            ["godot_dictionary *", "p_self"],
-            ["const godot_variant *", "p_key"]
-          ]
-        },
         {
           "name": "godot_is_instance_valid",
           "return_type": "bool",

+ 4 - 0
modules/gdnative/include/gdnative/dictionary.h

@@ -94,8 +94,12 @@ godot_bool GDAPI godot_dictionary_operator_equal(const godot_dictionary *p_self,
 
 godot_string GDAPI godot_dictionary_to_json(const godot_dictionary *p_self);
 
+// GDNative core 1.1
+
 godot_bool GDAPI godot_dictionary_erase_with_return(godot_dictionary *p_self, const godot_variant *p_key);
 
+godot_variant GDAPI godot_dictionary_get_with_default(const godot_dictionary *p_self, const godot_variant *p_key, const godot_variant *p_default);
+
 #ifdef __cplusplus
 }
 #endif