$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r61345 - in trunk: boost/range libs/range/test
From: neil_at_[hidden]
Date: 2010-04-17 17:02:30
Author: neilgroves
Date: 2010-04-17 17:02:28 EDT (Sat, 17 Apr 2010)
New Revision: 61345
URL: http://svn.boost.org/trac/boost/changeset/61345
Log:
Boost.Range corrected istream_range implementation. Added the missing istream_range unit test. Removed the untested and undocumented unbounded_range for this release.
Added:
   trunk/libs/range/test/istream_range.cpp   (contents, props changed)
Removed:
   trunk/boost/range/unbounded_range.hpp
Text files modified: 
   trunk/boost/range/istream_range.hpp |    23 ++++++++++++++---------                 
   trunk/libs/range/test/Jamfile.v2    |     1 +                                       
   2 files changed, 15 insertions(+), 9 deletions(-)
Modified: trunk/boost/range/istream_range.hpp
==============================================================================
--- trunk/boost/range/istream_range.hpp	(original)
+++ trunk/boost/range/istream_range.hpp	2010-04-17 17:02:28 EDT (Sat, 17 Apr 2010)
@@ -16,19 +16,24 @@
  */
 
 #include <iterator>
+#include <istream>
 #include <boost/config.hpp>
-#include <boost/range/range.hpp>
+#include <boost/range/iterator_range.hpp>
 
 namespace boost
 {
-	template<class Type, class Elem, class Traits> inline
-		range<std::istream_iterator<Type, Elem, Traits> >
-	istream_range(std::basic_istream<Elem, Traits>& in)
-	{
-		return range<std::istream_iterator<Type, Elem, Traits> >(
-			std::istream_iterator<Type>(in),
-			std::istream_iterator<Type>());
-	}
+    namespace range
+    {
+        template<class Type, class Elem, class Traits> inline
+            iterator_range<std::istream_iterator<Type, Elem, Traits> >
+        istream_range(std::basic_istream<Elem, Traits>& in)
+        {
+            return iterator_range<std::istream_iterator<Type, Elem, Traits> >(
+                std::istream_iterator<Type>(in),
+                std::istream_iterator<Type>());
+        }
+    } // namespace range
+    using range::istream_range;
 } // namespace boost
 
 #endif // include guard
Deleted: trunk/boost/range/unbounded_range.hpp
==============================================================================
--- trunk/boost/range/unbounded_range.hpp	2010-04-17 17:02:28 EDT (Sat, 17 Apr 2010)
+++ (empty file)
@@ -1,73 +0,0 @@
-#ifndef BOOST_RANGE_UNBOUNDED_RANGE_HPP
-#define BOOST_RANGE_UNBOUNDED_RANGE_HPP
-
-#include <boost/range/iterator_range.hpp>
-#include <boost/config.hpp>
-
-namespace boost
-{
-    template< class Iter >
-    struct unbounded_iterator_range : iterator_range<Iter>
-    {
-        explicit unbounded_iterator_range( Iter r ) 
-          : iterator_range<Iter>( r, r ) 
-        {
-            //
-            // Remark: by storing the same iterator
-            // twice, we can still allow
-            // comparison to execute without leading to
-            // operations on singular iterators 
-            //
-        }
-        
-    private:
-
-        bool empty() const
-        {
-            return false;
-        }
-        //
-        // Hide members that are illegal to use.
-        //
-        /*
-        void end() const;
-        void size() const;
-        void empty() const;
-        void equal() const;
-        operator bool() const;
-        bool operator==( unbounded_iterator_range );
-        bool operator!=( unbounded_iterator_range );
-        template< class S >
-        void operator[]( S s ) const;
-        template< class D >
-        void advance_end( D d ) const;
-        void back() const;
-        */
-    };
-
-    template< class Iter >
-    inline unbounded_iterator_range<Iter> unbounded_range( Iter r )
-    {
-        return unbounded_iterator_range<Iter>(r);
-    }
-
-    namespace detail
-    {
-        char is_unbounded_range( ... );
-        template< class Iter >
-        long is_unbounded_range( const unbounded_iterator_range<Iter>* );
-    }
-
-    template< class T >
-    struct is_unbounded_range
-    {
-    private:
-        static T* ptr_;
-        
-    public:
-        BOOST_STATIC_CONSTANT( bool, 
-              value = sizeof(long) == sizeof(detail::is_unbounded_range(ptr_) ) ); 
-    };
-}
-
-#endif
Modified: trunk/libs/range/test/Jamfile.v2
==============================================================================
--- trunk/libs/range/test/Jamfile.v2	(original)
+++ trunk/libs/range/test/Jamfile.v2	2010-04-17 17:02:28 EDT (Sat, 17 Apr 2010)
@@ -128,6 +128,7 @@
         [ range-test counting_range ]
         [ range-test extension_mechanism ]
         [ range-test irange ]
+	[ range-test istream_range ]
         [ range-test iterator_pair ]
         [ range-test iterator_range ]
 #   	[ range-test mfc : <include>$(VC71_ROOT)/atlmfc/include ]
Added: trunk/libs/range/test/istream_range.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/range/test/istream_range.cpp	2010-04-17 17:02:28 EDT (Sat, 17 Apr 2010)
@@ -0,0 +1,51 @@
+// Boost.Range library
+//
+//  Copyright Neil Groves 2010. Use, modification and
+//  distribution is subject to the Boost Software License, Version
+//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
+//  http://www.boost.org/LICENSE_1_0.txt)
+//
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+#include <boost/range/istream_range.hpp>
+#include <boost/range/algorithm_ext.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/test/test_tools.hpp>
+#include <boost/test/unit_test.hpp>
+#include <sstream>
+#include <vector>
+
+namespace
+{
+    // Test an integer range with a step size of 1.
+    void test_istream_range()
+    {
+        std::stringstream s;
+        std::vector<int> reference;
+        for (int i = 0; i < 10; ++i)
+        {
+            reference.push_back(i);
+            s << i << " ";
+        }
+
+        std::vector<int> target;
+        boost::push_back(target, boost::range::istream_range<int>(s));
+
+        BOOST_CHECK_EQUAL_COLLECTIONS( reference.begin(), reference.end(),
+            target.begin(), target.end() );
+    }
+
+} // namespace anonymous namespace
+
+boost::unit_test::test_suite*
+init_unit_test_suite(int argc, char* argv[])
+{
+    boost::unit_test::test_suite* test
+        = BOOST_TEST_SUITE( "RangeTestSuite.istream_range" );
+
+    test->add(BOOST_TEST_CASE( &test_istream_range ));
+
+    return test;
+}