forked from boostorg/algorithm
		
	This header is deprecated in favor of <iterator> and will be removed in a future release. This silences deprecation warnings.
		
			
				
	
	
		
			96 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //  Boost string_algo library trim.hpp header file  ---------------------------//
 | |
| 
 | |
| //  Copyright Pavol Droba 2002-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/ for updates, documentation, and revision history.
 | |
| 
 | |
| #ifndef BOOST_STRING_TRIM_DETAIL_HPP
 | |
| #define BOOST_STRING_TRIM_DETAIL_HPP
 | |
| 
 | |
| #include <boost/algorithm/string/config.hpp>
 | |
| #include <iterator>
 | |
| 
 | |
| namespace boost {
 | |
|     namespace algorithm {
 | |
|         namespace detail {
 | |
| 
 | |
| //  trim iterator helper -----------------------------------------------//
 | |
| 
 | |
|             template< typename ForwardIteratorT, typename PredicateT >
 | |
|             inline ForwardIteratorT trim_end_iter_select( 
 | |
|                 ForwardIteratorT InBegin, 
 | |
|                 ForwardIteratorT InEnd, 
 | |
|                 PredicateT IsSpace,
 | |
|                 std::forward_iterator_tag )
 | |
|             {
 | |
|                 ForwardIteratorT TrimIt=InBegin;
 | |
| 
 | |
|                 for( ForwardIteratorT It=InBegin; It!=InEnd; ++It )
 | |
|                 {
 | |
|                     if ( !IsSpace(*It) ) 
 | |
|                     {
 | |
|                         TrimIt=It;
 | |
|                         ++TrimIt;
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return TrimIt;
 | |
|             }
 | |
| 
 | |
|             template< typename ForwardIteratorT, typename PredicateT >
 | |
|             inline ForwardIteratorT trim_end_iter_select( 
 | |
|                 ForwardIteratorT InBegin, 
 | |
|                 ForwardIteratorT InEnd, 
 | |
|                 PredicateT IsSpace,
 | |
|                 std::bidirectional_iterator_tag )
 | |
|             {
 | |
|                 for( ForwardIteratorT It=InEnd; It!=InBegin;  )
 | |
|                 {
 | |
|                     if ( !IsSpace(*(--It)) )
 | |
|                         return ++It;
 | |
|                 }
 | |
| 
 | |
|                 return InBegin;
 | |
|             }
 | |
|    // Search for first non matching character from the beginning of the sequence
 | |
|             template< typename ForwardIteratorT, typename PredicateT >
 | |
|             inline ForwardIteratorT trim_begin( 
 | |
|                 ForwardIteratorT InBegin, 
 | |
|                 ForwardIteratorT InEnd, 
 | |
|                 PredicateT IsSpace )
 | |
|             {
 | |
|                 ForwardIteratorT It=InBegin;
 | |
|                 for(; It!=InEnd; ++It )
 | |
|                 {
 | |
|                     if (!IsSpace(*It))
 | |
|                         return It;
 | |
|                 }
 | |
| 
 | |
|                 return It;
 | |
|             }
 | |
| 
 | |
|             // Search for first non matching character from the end of the sequence
 | |
|             template< typename ForwardIteratorT, typename PredicateT >
 | |
|             inline ForwardIteratorT trim_end( 
 | |
|                 ForwardIteratorT InBegin, 
 | |
|                 ForwardIteratorT InEnd, 
 | |
|                 PredicateT IsSpace )
 | |
|             {
 | |
|                 typedef BOOST_STRING_TYPENAME
 | |
|                     std::iterator_traits<ForwardIteratorT>::iterator_category category;
 | |
| 
 | |
|                 return ::boost::algorithm::detail::trim_end_iter_select( InBegin, InEnd, IsSpace, category() );
 | |
|             }
 | |
| 
 | |
| 
 | |
|         } // namespace detail
 | |
|     } // namespace algorithm
 | |
| } // namespace boost
 | |
| 
 | |
| 
 | |
| #endif  // BOOST_STRING_TRIM_DETAIL_HPP
 |