source: vendor/nemo/current/NEMOGCM/EXTERNAL/XIOS/extern/boost/include/boost/algorithm/string/detail/find_iterator.hpp @ 44

Last change on this file since 44 was 44, checked in by cholod, 12 years ago

Load NEMO_TMP into vendor/nemo/current.

File size: 2.7 KB
Line 
1//  Boost string_algo library find_iterator.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_FIND_ITERATOR_DETAIL_HPP
12#define BOOST_STRING_FIND_ITERATOR_DETAIL_HPP
13
14#include <boost/algorithm/string/config.hpp>
15#include <boost/range/iterator_range.hpp>
16#include <boost/iterator/iterator_facade.hpp>
17#include <boost/iterator/iterator_categories.hpp>
18#include <boost/function.hpp>
19
20namespace boost {
21    namespace algorithm { 
22        namespace detail {
23
24//  find_iterator base -----------------------------------------------//
25
26            // Find iterator base
27            template<typename IteratorT>
28            class find_iterator_base
29            {
30            protected:
31                // typedefs
32                typedef IteratorT input_iterator_type;
33                typedef iterator_range<IteratorT> match_type;
34                typedef function2<
35                    match_type, 
36                    input_iterator_type, 
37                    input_iterator_type> finder_type;
38               
39            protected:
40            // Protected construction/destruction
41
42                // Default constructor
43                find_iterator_base() {};
44                // Copy construction
45                find_iterator_base( const find_iterator_base& Other ) :
46                    m_Finder(Other.m_Finder) {}
47               
48                // Constructor
49                template<typename FinderT>
50                find_iterator_base( FinderT Finder, int ) :
51                    m_Finder(Finder) {}
52
53                // Destructor
54                ~find_iterator_base() {}
55
56                // Find operation
57                match_type do_find( 
58                    input_iterator_type Begin,
59                    input_iterator_type End ) const
60                {
61                    if (!m_Finder.empty())
62                    {
63                        return m_Finder(Begin,End);
64                    }
65                    else
66                    {
67                        return match_type(End,End);
68                    }
69                }
70
71                // Check
72                bool is_null() const
73                {
74                    return m_Finder.empty();
75                }
76
77            private:
78                // Finder
79                finder_type m_Finder;
80            };
81
82       } // namespace detail
83    } // namespace algorithm
84} // namespace boost
85
86
87#endif  // BOOST_STRING_FIND_ITERATOR_DETAIL_HPP
Note: See TracBrowser for help on using the repository browser.