diff options
Diffstat (limited to 'contrib/src/boost/algorithm/string/detail/trim.hpp')
-rw-r--r-- | contrib/src/boost/algorithm/string/detail/trim.hpp | 190 |
1 files changed, 95 insertions, 95 deletions
diff --git a/contrib/src/boost/algorithm/string/detail/trim.hpp b/contrib/src/boost/algorithm/string/detail/trim.hpp index b53072c..1233e49 100644 --- a/contrib/src/boost/algorithm/string/detail/trim.hpp +++ b/contrib/src/boost/algorithm/string/detail/trim.hpp @@ -1,95 +1,95 @@ -// 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 <boost/detail/iterator.hpp>
-
-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 boost::detail::
- 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
+// 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 <boost/detail/iterator.hpp> + +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 boost::detail:: + 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 |