]> git.lyx.org Git - lyx.git/blobdiff - boost/boost/next_prior.hpp
thinko: if we have requires, do not test package
[lyx.git] / boost / boost / next_prior.hpp
index d23676653272f5c390ecd962a3101f43491c4666..e1d2e42891976c678a5bd5fe1f1ba86526346e7d 100644 (file)
@@ -1,16 +1,19 @@
 //  Boost next_prior.hpp header file  ---------------------------------------//
 
-//  (C) Copyright Boost.org 1999-2003. Permission to copy, use, modify, sell
-//  and distribute this software is granted provided this copyright
-//  notice appears in all copies. This software is provided "as is" without
-//  express or implied warranty, and with no claim as to its suitability for
-//  any purpose.
+//  (C) Copyright Dave Abrahams and Daniel Walker 1999-2003. Distributed under 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)
 
 //  See http://www.boost.org/libs/utility for documentation.
 
+//  Revision History
+//  13 Dec 2003  Added next(x, n) and prior(x, n) (Daniel Walker)
+
 #ifndef BOOST_NEXT_PRIOR_HPP_INCLUDED
 #define BOOST_NEXT_PRIOR_HPP_INCLUDED
 
+#include <iterator>
+
 namespace boost {
 
 //  Helper functions for classes like bidirectional iterators not supporting
@@ -19,15 +22,30 @@ namespace boost {
 //  Usage:
 //    const std::list<T>::iterator p = get_some_iterator();
 //    const std::list<T>::iterator prev = boost::prior(p);
+//    const std::list<T>::iterator next = boost::next(prev, 2);
 
 //  Contributed by Dave Abrahams
 
 template <class T>
 inline T next(T x) { return ++x; }
 
+template <class T, class Distance>
+inline T next(T x, Distance n)
+{
+    std::advance(x, n);
+    return x;
+}
+
 template <class T>
 inline T prior(T x) { return --x; }
 
+template <class T, class Distance>
+inline T prior(T x, Distance n)
+{
+    std::advance(x, -n);
+    return x;
+}
+
 } // namespace boost
 
 #endif  // BOOST_NEXT_PRIOR_HPP_INCLUDED