Packets: Fix annotation unit-test on 64bit architectures
[senf.git] / senf / Utils / Range.cti
index 38744c3..389b404 100644 (file)
@@ -1,6 +1,6 @@
 // $Id$
 //
-// Copyright (C) 2008 
+// Copyright (C) 2008
 // Fraunhofer Institute for Open Communication Systems (FOKUS)
 // Competence Center NETwork research (NET), St. Augustin, GERMANY
 //     Stefan Bund <g0dil@berlios.de>
@@ -31,7 +31,7 @@
 ///////////////////////////////cti.p///////////////////////////////////////
 
 template <class Range, class Fn>
-prefix_ boost::iterator_range< 
+prefix_ boost::iterator_range<
         boost::transform_iterator< Fn,
                                    typename boost::range_const_iterator<Range>::type > >
 senf::make_transform_range(Range const & range, Fn const & fn)
@@ -42,7 +42,7 @@ senf::make_transform_range(Range const & range, Fn const & fn)
 }
 
 template <class Range, class Fn>
-prefix_ boost::iterator_range< 
+prefix_ boost::iterator_range<
         boost::transform_iterator< Fn,
                                    typename boost::range_iterator<Range>::type > >
 senf::make_transform_range(Range & range, Fn const & fn)
@@ -52,6 +52,24 @@ senf::make_transform_range(Range & range, Fn const & fn)
         boost::make_transform_iterator(boost::end(range), fn) );
 }
 
+template <class Range, class Iterator>
+prefix_ void senf::copy_range(Range const & range, Iterator const & i)
+{
+    std::copy(boost::begin(range), boost::end(range), i);
+}
+
+template <class Range, class Iterator>
+prefix_ void senf::copy_range(Range & range, Iterator const & i)
+{
+    std::copy(boost::begin(range), boost::end(range), i);
+}
+
+template <class Range>
+prefix_ bool senf::has_one_elt(Range r)
+{
+    return ! r.empty() && boost::next(r.begin()) == r.end();
+}
+
 ///////////////////////////////cti.e///////////////////////////////////////
 #undef prefix_