| 
									
										
										
										
											2003-02-17 06:20:57 +00:00
										 |  |  | //  Boost next_prior.hpp header file  ---------------------------------------//
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-08-15 10:13:49 +00:00
										 |  |  | //  (C) Copyright Dave Abrahams and Daniel Walker 1999-2003. Distributed under the Boost
 | 
					
						
							| 
									
										
										
										
											2004-08-10 12:53:34 +00:00
										 |  |  | //  Software License, Version 1.0. (See accompanying file
 | 
					
						
							|  |  |  | //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | 
					
						
							| 
									
										
										
										
											2003-02-17 06:20:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | //  See http://www.boost.org/libs/utility for documentation.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-23 14:59:59 +00:00
										 |  |  | //  Revision History
 | 
					
						
							|  |  |  | //  13 Dec 2003  Added next(x, n) and prior(x, n) (Daniel Walker)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-02-17 06:20:57 +00:00
										 |  |  | #ifndef BOOST_NEXT_PRIOR_HPP_INCLUDED
 | 
					
						
							|  |  |  | #define BOOST_NEXT_PRIOR_HPP_INCLUDED
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-23 14:59:59 +00:00
										 |  |  | #include <iterator>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-02-17 06:20:57 +00:00
										 |  |  | namespace boost { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //  Helper functions for classes like bidirectional iterators not supporting
 | 
					
						
							|  |  |  | //  operator+ and operator-
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //  Usage:
 | 
					
						
							|  |  |  | //    const std::list<T>::iterator p = get_some_iterator();
 | 
					
						
							|  |  |  | //    const std::list<T>::iterator prev = boost::prior(p);
 | 
					
						
							| 
									
										
										
										
											2003-12-23 14:59:59 +00:00
										 |  |  | //    const std::list<T>::iterator next = boost::next(prev, 2);
 | 
					
						
							| 
									
										
										
										
											2003-02-17 06:20:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | //  Contributed by Dave Abrahams
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | template <class T> | 
					
						
							|  |  |  | inline T next(T x) { return ++x; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-23 14:59:59 +00:00
										 |  |  | template <class T, class Distance> | 
					
						
							|  |  |  | inline T next(T x, Distance n) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::advance(x, n); | 
					
						
							|  |  |  |     return x; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-02-17 06:20:57 +00:00
										 |  |  | template <class T> | 
					
						
							|  |  |  | inline T prior(T x) { return --x; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-23 14:59:59 +00:00
										 |  |  | template <class T, class Distance> | 
					
						
							|  |  |  | inline T prior(T x, Distance n) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     std::advance(x, -n); | 
					
						
							|  |  |  |     return x; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-02-17 06:20:57 +00:00
										 |  |  | } // namespace boost
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif  // BOOST_NEXT_PRIOR_HPP_INCLUDED
 |