[Scummvm-git-logs] scummvm master -> a55361b65d5b948cc5c42a386f4412b74bdd56c6

bluegr noreply at scummvm.org
Sun Dec 18 21:36:11 UTC 2022


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
a55361b65d COMMON: Add Common::Array::swap()


Commit: a55361b65d5b948cc5c42a386f4412b74bdd56c6
    https://github.com/scummvm/scummvm/commit/a55361b65d5b948cc5c42a386f4412b74bdd56c6
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2022-12-18T23:36:09+02:00

Commit Message:
COMMON: Add Common::Array::swap()

Changed paths:
    common/array.h
    engines/ultima/shared/std/containers.h
    test/common/array.h


diff --git a/common/array.h b/common/array.h
index bcdda8a9067..7e50f2cfec5 100644
--- a/common/array.h
+++ b/common/array.h
@@ -391,6 +391,12 @@ public:
 			*dst++ = *first++;
 	}
 
+	void swap(Array &arr) {
+		SWAP(this->_capacity, arr._capacity);
+		SWAP(this->_size, arr._size);
+		SWAP(this->_storage, arr._storage);
+	}
+
 protected:
 	/** Round up capacity to the next power of 2.
 	  * A minimal capacity of 8 is used.
diff --git a/engines/ultima/shared/std/containers.h b/engines/ultima/shared/std/containers.h
index 84b7d79dfc2..4e903e723c8 100644
--- a/engines/ultima/shared/std/containers.h
+++ b/engines/ultima/shared/std/containers.h
@@ -98,12 +98,6 @@ public:
 		resize(newSize, elem);
 	}
 
-	void swap(vector &arr) {
-		SWAP(this->_capacity, arr._capacity);
-		SWAP(this->_size, arr._size);
-		SWAP(this->_storage, arr._storage);
-	}
-
 	reverse_iterator rbegin() {
 		return reverse_iterator(this, (int)Common::Array<T>::size() - 1);
 	}
@@ -143,17 +137,8 @@ class set {
 			return a == b;
 		}
 	};
-
-	class Items : public Common::Array<T> {
-	public:
-		void swap(Items &arr) {
-			SWAP(this->_capacity, arr._capacity);
-			SWAP(this->_size, arr._size);
-			SWAP(this->_storage, arr._storage);
-		}
-	};
 private:
-	Items _items;
+	Common::Array<T> _items;
 	Comparitor _comparitor;
 public:
 	typedef T *iterator;
diff --git a/test/common/array.h b/test/common/array.h
index 56378c7beee..5cf352cad4b 100644
--- a/test/common/array.h
+++ b/test/common/array.h
@@ -418,6 +418,34 @@ class ArrayTestSuite : public CxxTest::TestSuite
 		TS_ASSERT_EQUALS(array[1], 163);
 	}
 
+	void test_swap() {
+		Common::Array<int> array1, array2;
+
+		array1.push_back(-3);
+		array1.push_back(163);
+		array1.push_back(17);
+		array2.push_back(5);
+		array2.push_back(9);
+
+		TS_ASSERT_EQUALS(array1.size(), 3);
+		TS_ASSERT_EQUALS(array1[0], -3);
+		TS_ASSERT_EQUALS(array1[1], 163);
+		TS_ASSERT_EQUALS(array1[2], 17);
+		TS_ASSERT_EQUALS(array2.size(), 2);
+		TS_ASSERT_EQUALS(array2[0], 5);
+		TS_ASSERT_EQUALS(array2[1], 9);
+
+		array1.swap(array2);
+
+		TS_ASSERT_EQUALS(array1.size(), 2);
+		TS_ASSERT_EQUALS(array1[0], 5);
+		TS_ASSERT_EQUALS(array1[1], 9);
+		TS_ASSERT_EQUALS(array2.size(), 3);
+		TS_ASSERT_EQUALS(array2[0], -3);
+		TS_ASSERT_EQUALS(array2[1], 163);
+		TS_ASSERT_EQUALS(array2[2], 17);
+	}
+
 };
 
 struct ListElement {




More information about the Scummvm-git-logs mailing list