[Scummvm-cvs-logs] CVS: scummvm/gui util.h,1.4,1.5

Max Horn fingolfin at users.sourceforge.net
Wed Jul 17 10:23:06 CEST 2002


Update of /cvsroot/scummvm/scummvm/gui
In directory usw-pr-cvs1:/tmp/cvs-serv2770

Modified Files:
	util.h 
Log Message:
added copy constructo and assignment operator for List<T> template

Index: util.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/util.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- util.h	16 Jul 2002 10:52:48 -0000	1.4
+++ util.h	17 Jul 2002 17:22:48 -0000	1.5
@@ -40,7 +40,11 @@
 	List<T>() : _capacity(0), _size(0), _data(0) {}
 	List<T>(const List<T>& list) : _capacity(0), _size(0), _data(0)
 	{
-		error("EEEEK! List copy constructor called");
+		_size = list._size;
+		_capacity = _size + 32;
+		_data = new T[_capacity];
+		for (int i = 0; i < _size; i++)
+			_data[i] = list._data[i];
 	}
 	
 	~List<T>()
@@ -69,9 +73,30 @@
 		return _data[idx];
 	}
 
+	List<T>& operator  =(const List<T>& list)
+	{
+		if (_data)
+			delete [] _data;
+		_size = list._size;
+		_capacity = _size + 32;
+		_data = new T[_capacity];
+		for (int i = 0; i < _size; i++)
+			_data[i] = list._data[i];
+
+		return *this;
+	}
+
 	int size() const	{ return _size; }
 
-	void clear()		{ _size = 0; }
+	void clear()
+	{
+		if (_data) {
+			delete [] _data;
+			_data = 0;
+		}
+		_size = 0;
+		_capacity = 0;
+	}
 
 protected:
 	void ensureCapacity(int new_len)





More information about the Scummvm-git-logs mailing list