New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
predicate.hpp in vendors/XIOS/current/extern/boost/include/boost/algorithm/string/detail – NEMO

source: vendors/XIOS/current/extern/boost/include/boost/algorithm/string/detail/predicate.hpp @ 3428

Last change on this file since 3428 was 3428, checked in by rblod, 12 years ago

importing initial XIOS vendor drop

File size: 2.4 KB
Line 
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
17namespace 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            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                ForwardIterator1T it=End;
36                ForwardIterator2T pit=SubEnd;
37                for(;it!=Begin && pit!=SubBegin;)
38                {
39                    if( !(Comp(*(--it),*(--pit))) )
40                        return false;
41                }
42
43                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
Note: See TracBrowser for help on using the repository browser.