diff --git a/include/core/String.hpp b/include/core/String.hpp index 7c11ac78..2dea8458 100644 --- a/include/core/String.hpp +++ b/include/core/String.hpp @@ -40,6 +40,7 @@ public: String(const wchar_t *contents); String(const wchar_t c); String(const String &other); + String(String &&other); ~String(); @@ -55,6 +56,7 @@ public: wchar_t operator[](const int idx) const; void operator=(const String &s); + void operator=(String &&s); bool operator==(const String &s) const; bool operator!=(const String &s) const; String operator+(const String &s) const; diff --git a/src/core/String.cpp b/src/core/String.cpp index c1efee54..7564572e 100644 --- a/src/core/String.cpp +++ b/src/core/String.cpp @@ -73,6 +73,10 @@ String::String(const String &other) { godot::api->godot_string_new_copy(&_godot_string, &other._godot_string); } +String::String(String &&other) { + godot::api->godot_string_new_copy(&_godot_string, &other._godot_string); +} + String::~String() { godot::api->godot_string_destroy(&_godot_string); } @@ -94,6 +98,11 @@ void String::operator=(const String &s) { godot::api->godot_string_new_copy(&_godot_string, &s._godot_string); } +void String::operator=(String &&s) { + godot::api->godot_string_destroy(&_godot_string); + godot::api->godot_string_new_copy(&_godot_string, &s._godot_string); +} + bool String::operator==(const String &s) const { return godot::api->godot_string_operator_equal(&_godot_string, &s._godot_string); }