Dictionary.cpp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #include "Dictionary.hpp"
  2. #include "Array.hpp"
  3. #include "GodotGlobal.hpp"
  4. #include "Variant.hpp"
  5. namespace godot {
  6. Dictionary::Dictionary() {
  7. godot::api->godot_dictionary_new(&_godot_dictionary);
  8. }
  9. Dictionary::Dictionary(const Dictionary &other) {
  10. godot::api->godot_dictionary_new_copy(&_godot_dictionary, &other._godot_dictionary);
  11. }
  12. Dictionary &Dictionary::operator=(const Dictionary &other) {
  13. godot::api->godot_dictionary_destroy(&_godot_dictionary);
  14. godot::api->godot_dictionary_new_copy(&_godot_dictionary, &other._godot_dictionary);
  15. return *this;
  16. }
  17. void Dictionary::clear() {
  18. godot::api->godot_dictionary_clear(&_godot_dictionary);
  19. }
  20. bool Dictionary::empty() const {
  21. return godot::api->godot_dictionary_empty(&_godot_dictionary);
  22. }
  23. void Dictionary::erase(const Variant &key) {
  24. godot::api->godot_dictionary_erase(&_godot_dictionary, (godot_variant *)&key);
  25. }
  26. bool Dictionary::has(const Variant &key) const {
  27. return godot::api->godot_dictionary_has(&_godot_dictionary, (godot_variant *)&key);
  28. }
  29. bool Dictionary::has_all(const Array &keys) const {
  30. return godot::api->godot_dictionary_has_all(&_godot_dictionary, (godot_array *)&keys);
  31. }
  32. uint32_t Dictionary::hash() const {
  33. return godot::api->godot_dictionary_hash(&_godot_dictionary);
  34. }
  35. Array Dictionary::keys() const {
  36. godot_array a = godot::api->godot_dictionary_keys(&_godot_dictionary);
  37. return Array(a);
  38. }
  39. Variant &Dictionary::operator[](const Variant &key) {
  40. godot_variant *v = godot::api->godot_dictionary_operator_index(&_godot_dictionary, (godot_variant *)&key);
  41. return *reinterpret_cast<Variant *>(v);
  42. }
  43. const Variant &Dictionary::operator[](const Variant &key) const {
  44. // oops I did it again
  45. godot_variant *v = godot::api->godot_dictionary_operator_index((godot_dictionary *)&_godot_dictionary, (godot_variant *)&key);
  46. return *reinterpret_cast<Variant *>(v);
  47. }
  48. int Dictionary::size() const {
  49. return godot::api->godot_dictionary_size(&_godot_dictionary);
  50. }
  51. String Dictionary::to_json() const {
  52. godot_string s = godot::api->godot_dictionary_to_json(&_godot_dictionary);
  53. return String(s);
  54. }
  55. Array Dictionary::values() const {
  56. godot_array a = godot::api->godot_dictionary_values(&_godot_dictionary);
  57. return Array(a);
  58. }
  59. Dictionary::~Dictionary() {
  60. godot::api->godot_dictionary_destroy(&_godot_dictionary);
  61. }
  62. } // namespace godot