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

          Line data    Source code
       1             : //  Boost string_algo library predicate.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_PREDICATE_DETAIL_HPP
      12             : #define BOOST_STRING_PREDICATE_DETAIL_HPP
      13             : 
      14             : #include <iterator>
      15             : #include <boost/algorithm/string/find.hpp>
      16             : 
      17             : namespace boost {
      18             :     namespace algorithm {
      19             :         namespace detail {
      20             : 
      21             : //  ends_with predicate implementation ----------------------------------//
      22             : 
      23             :             template< 
      24             :                 typename ForwardIterator1T, 
      25             :                 typename ForwardIterator2T,
      26             :                 typename PredicateT>
      27           0 :             inline bool ends_with_iter_select( 
      28             :                 ForwardIterator1T Begin, 
      29             :                 ForwardIterator1T End, 
      30             :                 ForwardIterator2T SubBegin,
      31             :                 ForwardIterator2T SubEnd,
      32             :                 PredicateT Comp,
      33             :                 std::bidirectional_iterator_tag)
      34             :             {
      35           0 :                 ForwardIterator1T it=End;
      36           0 :                 ForwardIterator2T pit=SubEnd;
      37           0 :                 for(;it!=Begin && pit!=SubBegin;)
      38             :                 {
      39           0 :                     if( !(Comp(*(--it),*(--pit))) )
      40             :                         return false;
      41             :                 }
      42             : 
      43           0 :                 return pit==SubBegin;
      44             :             }
      45             : 
      46             :             template< 
      47             :                 typename ForwardIterator1T, 
      48             :                 typename ForwardIterator2T,
      49             :                 typename PredicateT>
      50             :             inline bool ends_with_iter_select( 
      51             :                 ForwardIterator1T Begin, 
      52             :                 ForwardIterator1T End, 
      53             :                 ForwardIterator2T SubBegin,
      54             :                 ForwardIterator2T SubEnd,
      55             :                 PredicateT Comp,
      56             :                 std::forward_iterator_tag)
      57             :             {
      58             :                 if ( SubBegin==SubEnd )
      59             :                 {
      60             :                     // empty subsequence check
      61             :                     return true;
      62             :                 }
      63             : 
      64             :                 iterator_range<ForwardIterator1T> Result
      65             :                     =last_finder( 
      66             :                         ::boost::make_iterator_range(SubBegin, SubEnd),
      67             :                         Comp)(Begin, End);
      68             : 
      69             :                 return !Result.empty() && Result.end()==End;
      70             :             }
      71             : 
      72             :         } // namespace detail
      73             :     } // namespace algorithm
      74             : } // namespace boost
      75             : 
      76             : 
      77             : #endif  // BOOST_STRING_PREDICATE_DETAIL_HPP

Generated by: LCOV version 1.14