[uClibc-cvs] CVS uClibc++/include

CVS User gkajmowi gkajmowi at codepoet.org
Thu Jan 6 00:03:07 UTC 2005


Update of /var/cvs/uClibc++/include
In directory nail:/tmp/cvs-serv26653

Modified Files:
	ios iterator_base map set 
Log Message:
Fix map iterator overloading class definion
Fix map iterator returning value not reference
Change tests to check changes
Change ios::operator() to return 1 instead of this.  This deals with a situation where the object is const.

--- /var/cvs/uClibc++/include/ios	2005/01/05 21:48:38	1.9
+++ /var/cvs/uClibc++/include/ios	2005/01/06 00:03:06	1.10
@@ -290,7 +290,7 @@
 			if(fail() ){
 				return 0;
 			}
-			return this;	//Must return a non-NULL pointer (though it can be *any* pointer)
+			return (void *)(1);	//Must return a non-NULL pointer (though it can be *any* pointer)
 		}
 
 		bool operator!() const{
--- /var/cvs/uClibc++/include/iterator_base	2004/09/10 04:27:17	1.2
+++ /var/cvs/uClibc++/include/iterator_base	2005/01/06 00:03:06	1.3
@@ -141,16 +141,16 @@
 
 		Iterator base() const { return current; }        // explicit
 
-		typename iterator_traits<Iterator>::reference operator*() const { Iterator tmp = current; return *--tmp;}
-		typename iterator_traits<Iterator>::pointer   operator->() const { Iterator tmp = current; return *--tmp;}
+		typename iterator_traits<Iterator>::reference operator*() const { Iterator tmp = current; return *--tmp; }
+		typename iterator_traits<Iterator>::pointer   operator->() const { return &(operator*()); }
 		typename iterator_traits<Iterator>::reference operator[](typename iterator_traits<Iterator>::difference_type n) const{
 			return current[-n-1];
 		}
 
 		reverse_iterator& operator++(){ --current; return *this;	}
-		reverse_iterator  operator++(int) {reverse_iterator tmp = *this; --current; return tmp; }
+		reverse_iterator  operator++(int) {reverse_iterator tmp = current; --current; return tmp; }
 		reverse_iterator& operator--() { ++ current; return *this; }
-		reverse_iterator  operator--(int) {reverse_iterator tmp = *this; ++current; return tmp; }
+		reverse_iterator  operator--(int) {reverse_iterator tmp = current; ++current; return tmp; }
 
 		reverse_iterator  operator+ (typename iterator_traits<Iterator>::difference_type n) const{
 			reverse_iterator retval( *this );
--- /var/cvs/uClibc++/include/map	2005/01/03 16:28:46	1.6
+++ /var/cvs/uClibc++/include/map	2005/01/06 00:03:06	1.7
@@ -114,10 +114,10 @@
 	template<class Key, class T, class Compare, class Allocator> class __map_iter
 		: public std::iterator<
 			bidirectional_iterator_tag,
-			T,
+			std::pair<Key, T>,
 			typename Allocator::difference_type,
-			typename Allocator::pointer,
-			typename Allocator::reference
+			std::pair<Key, T>*,
+			std::pair<Key, T>&
 		>
 	{
 	protected:
@@ -140,7 +140,7 @@
 			: element(e), container(c) {  }
 		~__map_iter() {  }
 		
-		typename Map::value_type operator*(){
+		typename Map::value_type & operator*(){
 			return container->data[element];
 		}
 		typename Map::value_type * operator->(){
@@ -182,10 +182,10 @@
 	template<class Key, class T, class Compare, class Allocator> class __map_citer
 		: public std::iterator<
 			bidirectional_iterator_tag,
-			T,
+			std::pair<Key, T>,
 			typename Allocator::difference_type,
-			typename Allocator::pointer,
-			typename Allocator::reference
+			std::pair<Key, T>*,
+			std::pair<Key, T>&
 		>
 	{
 	protected:
@@ -208,7 +208,7 @@
 			: element(e), container(c) {  }
 		~__map_citer() {  }
 		
-		typename Map::value_type operator*(){
+		typename Map::value_type & operator*(){
 			return container->data[element];
 		}
 		const typename Map::value_type * operator->(){
--- /var/cvs/uClibc++/include/set	2005/01/03 16:28:46	1.4
+++ /var/cvs/uClibc++/include/set	2005/01/06 00:03:06	1.5
@@ -138,7 +138,7 @@
 			: element(e), container(c) {  }
 		~__set_iter() {  }
 		
-		typename Set::value_type operator*(){
+		typename Set::value_type & operator*(){
 			return container->data[element];
 		}
 		typename Set::value_type * operator->(){
@@ -206,7 +206,7 @@
 			: element(e), container(c) {  }
 		~__set_citer() {  }
 		
-		typename Set::value_type operator*(){
+		typename Set::value_type & operator*(){
 			return container->data[element];
 		}
 		const typename Set::value_type * operator->(){



More information about the uClibc-cvs mailing list