src/types.h

changeset 498
791c831c8020
parent 494
bd005c78a089
child 500
cad8cdc42a64
--- a/src/types.h	Sat Oct 05 12:51:13 2013 +0300
+++ b/src/types.h	Sat Oct 05 15:18:47 2013 +0300
@@ -28,8 +28,6 @@
 
 typedef QChar qchar;
 typedef QString str;
-template<class T> class ConstListReverser;
-template<class T> using c_rev = ConstListReverser<T>;
 class StringConfig;
 class IntConfig;
 class FloatConfig;
@@ -217,7 +215,7 @@
 		{	return m_vect.crend();
 		}
 
-		void erase (ulong pos)
+		void erase (int pos)
 		{	assert (pos < size());
 			m_vect.erase (m_vect.begin() + pos);
 		}
@@ -256,8 +254,8 @@
 		List<T> reverse() const
 		{	List<T> rev;
 
-			for (const T& val : c_rev<T> (*this))
-				rev << val;
+			for (auto it = end() - 1; it != begin(); --it)
+				rev << *it;
 
 			return rev;
 		}
@@ -266,7 +264,7 @@
 		{	m_vect.clear();
 		}
 
-		void insert (ulong pos, const T& value)
+		void insert (int pos, const T& value)
 		{	m_vect.insert (m_vect.begin() + pos, value);
 		}
 
@@ -278,16 +276,16 @@
 			resize (std::distance (begin(), pos));
 		}
 
-		ulong size() const
+		int size() const
 		{	return m_vect.size();
 		}
 
-		T& operator[] (ulong n)
+		T& operator[] (int n)
 		{	assert (n < size());
 			return m_vect[n];
 		}
 
-		const T& operator[] (ulong n) const
+		const T& operator[] (int n) const
 		{	assert (n < size());
 			return m_vect[n];
 		}
@@ -300,17 +298,17 @@
 		{	std::sort (begin(), end());
 		}
 
-		ulong find (const T& needle)
-		{	ulong i = 0;
+		int find (const T& needle)
+		{	int i = 0;
 
-		for (const T & hay : *this)
+			for (const T & hay : *this)
 			{	if (hay == needle)
 					return i;
 
 				i++;
 			}
 
-			return -1u;
+			return -1;
 		}
 
 	private:
@@ -320,63 +318,6 @@
 // =============================================================================
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 // =============================================================================
-// ListReverser (aka rev)
-//
-// Helper class used to reverse-iterate Lists in range-for-loops.
-// =============================================================================
-template<class T> class ListReverser
-{	public:
-		typedef typename List<T>::ReverseIterator Iterator;
-
-		ListReverser (List<T>& vect)
-		{	m_vect = &vect;
-		}
-
-		Iterator begin()
-		{	return m_vect->rbegin();
-		}
-
-		Iterator end()
-		{	return m_vect->rend();
-		}
-
-	private:
-		List<T>* m_vect;
-};
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
-// ConstListReverser (aka c_rev)
-//
-// Like ListReverser, except works on const Lists.
-// =============================================================================
-template<class T> class ConstListReverser
-{	public:
-		typedef typename List<T>::ConstReverseIterator Iterator;
-
-		ConstListReverser (const List<T>& vect)
-		{	m_vect = &vect;
-		}
-
-		Iterator begin() const
-		{	return m_vect->crbegin();
-		}
-
-		Iterator end() const
-		{	return m_vect->crend();
-		}
-
-	private:
-		const List<T>* m_vect;
-};
-
-template<class T> using rev = ListReverser<T>;
-template<class T> using c_rev = ConstListReverser<T>;
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
 // StringFormatArg
 //
 // Converts a given value into a string that can be retrieved with ::value().
@@ -416,9 +357,9 @@
 		template<class T> StringFormatArg (const List<T>& v)
 		{	m_val = "{ ";
 
-			uint i = 0;
+			int i = 0;
 
-		for (const T & it : v)
+			for (const T& it : v)
 			{	if (i++)
 					m_val += ", ";
 

mercurial