1 // Boost string_algo library trim.hpp header file ---------------------------//
3 // Copyright Pavol Droba 2002-2003.
5 // Distributed under the Boost Software License, Version 1.0.
6 // (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
9 // See http://www.boost.org/ for updates, documentation, and revision history.
11 #ifndef BOOST_STRING_TRIM_DETAIL_HPP
12 #define BOOST_STRING_TRIM_DETAIL_HPP
14 #include <boost/algorithm/string/config.hpp>
15 #include <boost/detail/iterator.hpp>
21 // trim iterator helper -----------------------------------------------//
23 template< typename ForwardIteratorT, typename PredicateT >
24 inline ForwardIteratorT trim_end_iter_select(
25 ForwardIteratorT InBegin,
26 ForwardIteratorT InEnd,
28 std::forward_iterator_tag )
30 ForwardIteratorT TrimIt=InBegin;
32 for( ForwardIteratorT It=InBegin; It!=InEnd; ++It )
44 template< typename ForwardIteratorT, typename PredicateT >
45 inline ForwardIteratorT trim_end_iter_select(
46 ForwardIteratorT InBegin,
47 ForwardIteratorT InEnd,
49 std::bidirectional_iterator_tag )
51 for( ForwardIteratorT It=InEnd; It!=InBegin; )
53 if ( !IsSpace(*(--It)) )
59 // Search for first non matching character from the beginning of the sequence
60 template< typename ForwardIteratorT, typename PredicateT >
61 inline ForwardIteratorT trim_begin(
62 ForwardIteratorT InBegin,
63 ForwardIteratorT InEnd,
66 ForwardIteratorT It=InBegin;
67 for(; It!=InEnd; ++It )
76 // Search for first non matching character from the end of the sequence
77 template< typename ForwardIteratorT, typename PredicateT >
78 inline ForwardIteratorT trim_end(
79 ForwardIteratorT InBegin,
80 ForwardIteratorT InEnd,
83 typedef BOOST_STRING_TYPENAME boost::detail::
84 iterator_traits<ForwardIteratorT>::iterator_category category;
86 return ::boost::algorithm::detail::trim_end_iter_select( InBegin, InEnd, IsSpace, category() );
91 } // namespace algorithm
95 #endif // BOOST_STRING_TRIM_DETAIL_HPP