summaryrefslogtreecommitdiff
path: root/modules/gdnative/godot/godot_dictionary.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gdnative/godot/godot_dictionary.cpp')
-rw-r--r--modules/gdnative/godot/godot_dictionary.cpp140
1 files changed, 75 insertions, 65 deletions
diff --git a/modules/gdnative/godot/godot_dictionary.cpp b/modules/gdnative/godot/godot_dictionary.cpp
index 16d08e58e2..12c40f0564 100644
--- a/modules/gdnative/godot/godot_dictionary.cpp
+++ b/modules/gdnative/godot/godot_dictionary.cpp
@@ -28,109 +28,119 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "godot_dictionary.h"
+#include "core/variant.h"
#include "core/dictionary.h"
-
-#include "core/os/memory.h"
-
#include "core/io/json.h"
#ifdef __cplusplus
extern "C" {
#endif
-void _dictionary_api_anchor() {
+void _dictionary_api_anchor() {}
+
+void GDAPI godot_dictionary_new(godot_dictionary *r_dest) {
+ Dictionary *dest = (Dictionary *)r_dest;
+ memnew_placement(dest, Dictionary);
}
-void GDAPI godot_dictionary_new(godot_dictionary *p_dict) {
- Dictionary *dict = (Dictionary *)p_dict;
- memnew_placement(dict, Dictionary);
+void GDAPI godot_dictionary_new_copy(godot_dictionary *r_dest, const godot_dictionary *p_src) {
+ Dictionary *dest = (Dictionary *)r_dest;
+ const Dictionary *src = (const Dictionary *)p_src;
+ memnew_placement(dest, Dictionary(*src));
}
-void GDAPI godot_dictionary_clear(godot_dictionary *p_dict) {
- Dictionary *dict = (Dictionary *)p_dict;
- dict->clear();
+void GDAPI godot_dictionary_destroy(godot_dictionary *p_self) {
+ Dictionary *self = (Dictionary *)p_self;
+ self->~Dictionary();
}
-godot_bool GDAPI godot_dictionary_empty(const godot_dictionary *p_dict) {
- const Dictionary *dict = (const Dictionary *)p_dict;
- return dict->empty();
+godot_int GDAPI godot_dictionary_size(const godot_dictionary *p_self) {
+ const Dictionary *self = (const Dictionary *)p_self;
+ return self->size();
}
-void GDAPI godot_dictionary_erase(godot_dictionary *p_dict, const godot_variant *p_key) {
- Dictionary *dict = (Dictionary *)p_dict;
- Variant *key = (Variant *)p_key;
- dict->erase(*key);
+godot_bool GDAPI godot_dictionary_empty(const godot_dictionary *p_self) {
+ const Dictionary *self = (const Dictionary *)p_self;
+ return self->empty();
}
-godot_bool GDAPI godot_dictionary_has(const godot_dictionary *p_dict, const godot_variant *p_key) {
- const Dictionary *dict = (const Dictionary *)p_dict;
+void GDAPI godot_dictionary_clear(godot_dictionary *p_self) {
+ Dictionary *self = (Dictionary *)p_self;
+ self->clear();
+}
+
+godot_bool GDAPI godot_dictionary_has(const godot_dictionary *p_self, const godot_variant *p_key) {
+ const Dictionary *self = (const Dictionary *)p_self;
const Variant *key = (const Variant *)p_key;
- return dict->has(*key);
+ return self->has(*key);
}
-godot_bool GDAPI godot_dictionary_has_all(const godot_dictionary *p_dict, const godot_array *p_keys) {
- const Dictionary *dict = (const Dictionary *)p_dict;
+godot_bool GDAPI godot_dictionary_has_all(const godot_dictionary *p_self, const godot_array *p_keys) {
+ const Dictionary *self = (const Dictionary *)p_self;
const Array *keys = (const Array *)p_keys;
- return dict->has_all(*keys);
+ return self->has_all(*keys);
}
-uint32_t GDAPI godot_dictionary_hash(const godot_dictionary *p_dict) {
- const Dictionary *dict = (const Dictionary *)p_dict;
- return dict->hash();
+void GDAPI godot_dictionary_erase(godot_dictionary *p_self, const godot_variant *p_key) {
+ Dictionary *self = (Dictionary *)p_self;
+ const Variant *key = (const Variant *)p_key;
+ self->erase(*key);
}
-godot_array GDAPI godot_dictionary_keys(const godot_dictionary *p_dict) {
- godot_array a;
- godot_array_new(&a);
- const Dictionary *dict = (const Dictionary *)p_dict;
- Array *array = (Array *)&a;
- *array = dict->keys();
- return a;
+godot_int GDAPI godot_dictionary_hash(const godot_dictionary *p_self) {
+ const Dictionary *self = (const Dictionary *)p_self;
+ return self->hash();
}
-godot_int GDAPI godot_dictionary_parse_json(godot_dictionary *p_dict, const godot_string *p_json) {
- Dictionary *dict = (Dictionary *)p_dict;
- const String *json = (const String *)p_json;
- Variant ret;
- int err_line;
- String err_str;
- int err = (int)JSON::parse(*json, ret, err_str, err_line);
- *dict = ret;
- return err;
+godot_array GDAPI godot_dictionary_keys(const godot_dictionary *p_self) {
+ godot_array dest;
+ const Dictionary *self = (const Dictionary *)p_self;
+ memnew_placement(&dest, Array(self->keys()));
+ return dest;
}
-godot_variant GDAPI *godot_dictionary_operator_index(godot_dictionary *p_dict, const godot_variant *p_key) {
- Dictionary *dict = (Dictionary *)p_dict;
- Variant *key = (Variant *)p_key;
- return (godot_variant *)&dict->operator[](*key);
+godot_array GDAPI godot_dictionary_values(const godot_dictionary *p_self) {
+ godot_array dest;
+ const Dictionary *self = (const Dictionary *)p_self;
+ memnew_placement(&dest, Array(self->values()));
+ return dest;
}
-godot_int GDAPI godot_dictionary_size(const godot_dictionary *p_dict) {
- const Dictionary *dict = (const Dictionary *)p_dict;
- return dict->size();
+godot_variant GDAPI godot_dictionary_get(const godot_dictionary *p_self, const godot_variant *p_key) {
+ godot_variant raw_dest;
+ Variant *dest = (Variant *)&raw_dest;
+ const Dictionary *self = (const Dictionary *)p_self;
+ const Variant *key = (const Variant *)p_key;
+ memnew_placement(dest, Variant(self->operator[](*key)));
+ return raw_dest;
}
-godot_string GDAPI godot_dictionary_to_json(const godot_dictionary *p_dict) {
- const Dictionary *dict = (const Dictionary *)p_dict;
- godot_string str;
- godot_string_new(&str);
- String *s = (String *)&str;
- *s = JSON::print(Variant(*dict));
- return str;
+void GDAPI godot_dictionary_set(godot_dictionary *p_self, const godot_variant *p_key, const godot_variant *p_value) {
+ Dictionary *self = (Dictionary *)p_self;
+ const Variant *key = (const Variant *)p_key;
+ const Variant *value = (const Variant *)p_value;
+ self->operator[](*key) = *value;
+}
+
+godot_variant GDAPI *godot_dictionary_operator_index(godot_dictionary *p_self, const godot_variant *p_key) {
+ Array *self = (Array *)p_self;
+ const Variant *key = (const Variant *)p_key;
+ return (godot_variant *)&self->operator[](*key);
}
-godot_array GDAPI godot_dictionary_values(const godot_dictionary *p_dict) {
- godot_array a;
- godot_array_new(&a);
- const Dictionary *dict = (const Dictionary *)p_dict;
- Array *array = (Array *)&a;
- *array = dict->values();
- return a;
+godot_bool GDAPI godot_dictionary_operator_equal(const godot_dictionary *p_self, const godot_dictionary *p_b) {
+ const Dictionary *self = (const Dictionary *)p_self;
+ const Dictionary *b = (const Dictionary *)p_b;
+ return *self == *b;
}
-void GDAPI godot_dictionary_destroy(godot_dictionary *p_dict) {
- ((Dictionary *)p_dict)->~Dictionary();
+godot_string GDAPI godot_dictionary_to_json(const godot_dictionary *p_self) {
+ godot_string raw_dest;
+ String *dest = (String *)&raw_dest;
+ const Dictionary *self = (const Dictionary *)p_self;
+ memnew_placement(dest, String(JSON::print(Variant(*self))));
+ return raw_dest;
}
#ifdef __cplusplus