$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r54622 - in sandbox/cloneable: boost/cloneable/detail libs/cloneable/test
From: christian.schladetsch_at_[hidden]
Date: 2009-07-03 18:45:08
Author: cschladetsch
Date: 2009-07-03 18:45:07 EDT (Fri, 03 Jul 2009)
New Revision: 54622
URL: http://svn.boost.org/trac/boost/changeset/54622
Log:
added relational operators for associtive_container_base<>
Text files modified: 
   sandbox/cloneable/boost/cloneable/detail/associative_container_base.hpp |    13 +++++++++++++                           
   sandbox/cloneable/boost/cloneable/detail/container_base.hpp             |    14 ++++++++++----                          
   sandbox/cloneable/boost/cloneable/detail/sequence_container_base.hpp    |    13 +++++++------                           
   sandbox/cloneable/libs/cloneable/test/tests.cpp                         |    11 +++++++----                             
   4 files changed, 37 insertions(+), 14 deletions(-)
Modified: sandbox/cloneable/boost/cloneable/detail/associative_container_base.hpp
==============================================================================
--- sandbox/cloneable/boost/cloneable/detail/associative_container_base.hpp	(original)
+++ sandbox/cloneable/boost/cloneable/detail/associative_container_base.hpp	2009-07-03 18:45:07 EDT (Fri, 03 Jul 2009)
@@ -16,6 +16,7 @@
         {
                 namespace detail
                 {
+			/// common base for associative containers
                         template <class Cont, class Pred, class Base, class Alloc>
                         struct associative_container_base 
                                 : container_base<Cont,Base,Alloc>
@@ -96,6 +97,18 @@
 
                         };
 
+			template <class Cont, class Pred, class Base, class Alloc>
+			bool operator==(const associative_container_base<Cont,Pred,Base,Alloc> &left, const associative_container_base<Cont,Pred,Base,Alloc> &right)
+			{
+				return left.size() == right.size() && std::equal(left.begin(), left.end(), right.begin());
+			}
+
+			template <class Cont, class Pred, class Base, class Alloc>
+			bool operator<(const associative_container_base<Cont,Pred,Base,Alloc> &left, const associative_container_base<Cont,Pred,Base,Alloc> &right)
+			{
+				return std::lexicographical_compare(left.begin(), left.end(), right.begin(), right.end());
+			}
+
                 } // namespace detail
 
         } // namespace cloneable
Modified: sandbox/cloneable/boost/cloneable/detail/container_base.hpp
==============================================================================
--- sandbox/cloneable/boost/cloneable/detail/container_base.hpp	(original)
+++ sandbox/cloneable/boost/cloneable/detail/container_base.hpp	2009-07-03 18:45:07 EDT (Fri, 03 Jul 2009)
@@ -55,11 +55,15 @@
                                         : cloneable::instance<Derived, Base, Alloc, typename traits<Derived>::construction_tag>
                                 {
                                         typedef cloneable::instance<Derived, Base, Alloc, typename traits<Derived>::construction_tag> parent_type;
+					
                                         instance(allocator_type &a) : parent_type(a) { }
+					
                                         template <class A0>
                                         instance(allocator_type &a, A0 a0) : parent_type(a, a0) { }
+					
                                         template <class A0, class A1>
                                         instance(allocator_type &a, A0 a0, A1 a1) : parent_type(a, a0, a1) { }
+					
                                         template <class A0, class A1, class A2>
                                         instance(allocator_type &a, A0 a0, A1 a1, A2 a2) : parent_type(a, a0, a1, a2) { }
                                 };
@@ -68,7 +72,6 @@
                                 allocator_type alloc;
 
                         protected:
-
                                 template <class U>
                                 instance<U> new_instance()
                                 {
@@ -91,9 +94,13 @@
                                 }
 
                         public:
-				container_base() { }
+				container_base() 
+				{ 
+				}
                                 container_base(allocator_type &a)
-					: alloc(a) { }
+					: alloc(a) 
+				{ 
+				}
 
                                 const allocator_type &get_allocator() const
                                 {
@@ -106,7 +113,6 @@
 
                         };
 
-
                 } // namespace detail
 
         } // namespace cloneable
Modified: sandbox/cloneable/boost/cloneable/detail/sequence_container_base.hpp
==============================================================================
--- sandbox/cloneable/boost/cloneable/detail/sequence_container_base.hpp	(original)
+++ sandbox/cloneable/boost/cloneable/detail/sequence_container_base.hpp	2009-07-03 18:45:07 EDT (Fri, 03 Jul 2009)
@@ -16,6 +16,7 @@
         {
                 namespace detail
                 {
+			/// common base for sequence containers
                         template <class Cont, class Base, class Alloc>
                         struct sequence_container_base : container_base<Cont,Base,Alloc>
                         {
@@ -56,11 +57,6 @@
                                 {
                                 }
 
-				size_t size() const
-				{
-					return container.size();
-				}
-
                                 template <class Ty, class Fun>
                                 Fun for_each(Fun fun)
                                 {
@@ -87,6 +83,11 @@
                                         return fun;
                                 }
 
+				size_t size() const
+				{
+					return container.size();
+				}
+
                                 bool empty() const
                                 {
                                         return impl().empty();
@@ -190,7 +191,6 @@
                                 }
                         };
 
-
                         template <class Cont, class Base, class Alloc>
                         bool operator==(const sequence_container_base<Cont,Base,Alloc> &left, const sequence_container_base<Cont,Base,Alloc> &right)
                         {
@@ -202,6 +202,7 @@
                         {
                                 return std::lexicographical_compare(left.begin(), left.end(), right.begin(), right.end());
                         }
+
                 } // namespace detail
 
         } // namespace cloneable
Modified: sandbox/cloneable/libs/cloneable/test/tests.cpp
==============================================================================
--- sandbox/cloneable/libs/cloneable/test/tests.cpp	(original)
+++ sandbox/cloneable/libs/cloneable/test/tests.cpp	2009-07-03 18:45:07 EDT (Fri, 03 Jul 2009)
@@ -582,9 +582,13 @@
         {
                 int number;
                 set_base(int n = 0) : number(n) { }
-		bool operator<(const set_base &other) const
+		friend bool operator==(const set_base &left, const set_base &right)
                 {
-			return number < other.number;
+			return left.number == right.number;
+		}
+		friend bool operator<(const set_base &left, const set_base &right)
+		{
+			return left.number < right.number;
                 }
         };
         struct S0 : base<S0, set_base> 
@@ -627,6 +631,7 @@
         BOOST_ASSERT(set.find<set_base>(1) != set.end());
 
         Set copy = set;
+	BOOST_ASSERT(copy == set);
 
         BOOST_ASSERT(copy.size() == 4);
         BOOST_ASSERT(copy.find<S0>(1) != copy.end());
@@ -638,8 +643,6 @@
         BOOST_ASSERT(&*found == s0);
 }
 
-
 //EOF
 
-
  
\ No newline at end of file