LCOV - code coverage report
Current view: top level - usr/include/boost/algorithm/string/detail - trim.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 11 13 84.6 %
Date: 2022-12-08 13:48:47 Functions: 6 6 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //  Boost string_algo library trim.hpp header file  ---------------------------//
       2             : 
       3             : //  Copyright Pavol Droba 2002-2003.
       4             : //
       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)
       8             : 
       9             : //  See http://www.boost.org/ for updates, documentation, and revision history.
      10             : 
      11             : #ifndef BOOST_STRING_TRIM_DETAIL_HPP
      12             : #define BOOST_STRING_TRIM_DETAIL_HPP
      13             : 
      14             : #include <boost/algorithm/string/config.hpp>
      15             : #include <boost/detail/iterator.hpp>
      16             : 
      17             : namespace boost {
      18             :     namespace algorithm {
      19             :         namespace detail {
      20             : 
      21             : //  trim iterator helper -----------------------------------------------//
      22             : 
      23             :             template< typename ForwardIteratorT, typename PredicateT >
      24             :             inline ForwardIteratorT trim_end_iter_select( 
      25             :                 ForwardIteratorT InBegin, 
      26             :                 ForwardIteratorT InEnd, 
      27             :                 PredicateT IsSpace,
      28             :                 std::forward_iterator_tag )
      29             :             {
      30             :                 ForwardIteratorT TrimIt=InBegin;
      31             : 
      32             :                 for( ForwardIteratorT It=InBegin; It!=InEnd; ++It )
      33             :                 {
      34             :                     if ( !IsSpace(*It) ) 
      35             :                     {
      36             :                         TrimIt=It;
      37             :                         ++TrimIt;
      38             :                     }
      39             :                 }
      40             : 
      41             :                 return TrimIt;
      42             :             }
      43             : 
      44             :             template< typename ForwardIteratorT, typename PredicateT >
      45        1069 :             inline ForwardIteratorT trim_end_iter_select( 
      46             :                 ForwardIteratorT InBegin, 
      47             :                 ForwardIteratorT InEnd, 
      48             :                 PredicateT IsSpace,
      49             :                 std::bidirectional_iterator_tag )
      50             :             {
      51        1069 :                 for( ForwardIteratorT It=InEnd; It!=InBegin;  )
      52             :                 {
      53        1069 :                     if ( !IsSpace(*(--It)) )
      54        1069 :                         return ++It;
      55             :                 }
      56             : 
      57           0 :                 return InBegin;
      58             :             }
      59             :    // Search for first non matching character from the beginning of the sequence
      60             :             template< typename ForwardIteratorT, typename PredicateT >
      61        1069 :             inline ForwardIteratorT trim_begin( 
      62             :                 ForwardIteratorT InBegin, 
      63             :                 ForwardIteratorT InEnd, 
      64             :                 PredicateT IsSpace )
      65             :             {
      66        1069 :                 ForwardIteratorT It=InBegin;
      67        1069 :                 for(; It!=InEnd; ++It )
      68             :                 {
      69        1069 :                     if (!IsSpace(*It))
      70        1069 :                         return It;
      71             :                 }
      72             : 
      73           0 :                 return It;
      74             :             }
      75             : 
      76             :             // Search for first non matching character from the end of the sequence
      77             :             template< typename ForwardIteratorT, typename PredicateT >
      78        1069 :             inline ForwardIteratorT trim_end( 
      79             :                 ForwardIteratorT InBegin, 
      80             :                 ForwardIteratorT InEnd, 
      81             :                 PredicateT IsSpace )
      82             :             {
      83             :                 typedef BOOST_STRING_TYPENAME boost::detail::
      84             :                     iterator_traits<ForwardIteratorT>::iterator_category category;
      85             : 
      86        2138 :                 return ::boost::algorithm::detail::trim_end_iter_select( InBegin, InEnd, IsSpace, category() );
      87             :             }
      88             : 
      89             : 
      90             :         } // namespace detail
      91             :     } // namespace algorithm
      92             : } // namespace boost
      93             : 
      94             : 
      95             : #endif  // BOOST_STRING_TRIM_DETAIL_HPP

Generated by: LCOV version 1.14