From 3d00d04ffbf40845058f6ede4da2592bb27a255d Mon Sep 17 00:00:00 2001
From: Kevin Smith <git@kismith.co.uk>
Date: Fri, 19 Jul 2019 14:01:51 +0100
Subject: Add copy/move ctors for JIDs

Test-Information:
Unit tests still pass.

Change-Id: I4e5b63104e482a79a933f337082c579db7bb8cff

diff --git a/Swiften/JID/JID.cpp b/Swiften/JID/JID.cpp
index a584b79..eb72014 100644
--- a/Swiften/JID/JID.cpp
+++ b/Swiften/JID/JID.cpp
@@ -72,6 +72,33 @@ JID::JID(const std::string& node, const std::string& domain, const std::string&
     nameprepAndSetComponents(node, domain, resource);
 }
 
+JID::JID(const JID& other) {
+    this->operator=(other);
+}
+
+JID::JID(JID&& other) {
+    this->operator=(std::move(other));
+}
+
+JID& JID::operator=(const JID& other) {
+    valid_ = other.valid_;
+    node_ = other.node_;
+    domain_ = other.domain_;
+    hasResource_ = other.hasResource_;
+    resource_ = other.resource_;
+    return *this;
+}
+
+JID& JID::operator=(JID&& other) {
+    valid_ = other.valid_;
+    other.valid_ = false;
+    node_ = std::move(other.node_);
+    domain_ = std::move(other.domain_);
+    hasResource_ = other.hasResource_;
+    resource_ = std::move(other.resource_);
+    return *this;
+}
+
 void JID::initializeFromString(const std::string& jid) {
     if (String::beginsWith(jid, '@')) {
         valid_ = false;
diff --git a/Swiften/JID/JID.h b/Swiften/JID/JID.h
index e98b796..aecc7cb 100644
--- a/Swiften/JID/JID.h
+++ b/Swiften/JID/JID.h
@@ -75,6 +75,11 @@ namespace Swift {
              */
             JID(const std::string& node, const std::string& domain, const std::string& resource);
 
+            JID(const JID& other);
+            JID(JID&& other);
+            JID& operator=(const JID& other);
+            JID& operator=(JID&& other);
+
             /**
              * @return Is a correctly-formatted JID.
              */
-- 
cgit v0.10.2-6-g49f6