Browse Source

Add move semantics (constructor, assignment) to `StringName`.

Lukas Tenbrink 10 months ago
parent
commit
8c4e674770
1 changed files with 14 additions and 0 deletions
  1. 14 0
      core/string/string_name.h

+ 14 - 0
core/string/string_name.h

@@ -188,8 +188,22 @@ public:
 	};
 
 	StringName &operator=(const StringName &p_name);
+	StringName &operator=(StringName &&p_name) {
+		if (_data == p_name._data) {
+			return *this;
+		}
+
+		unref();
+		_data = p_name._data;
+		p_name._data = nullptr;
+		return *this;
+	}
 	StringName(const char *p_name, bool p_static = false);
 	StringName(const StringName &p_name);
+	StringName(StringName &&p_name) {
+		_data = p_name._data;
+		p_name._data = nullptr;
+	}
 	StringName(const String &p_name, bool p_static = false);
 	StringName(const StaticCString &p_static_string, bool p_static = false);
 	StringName() {}