Statistics
| Revision:

root / tmp / org.txm.statsengine.r.core.win32 / res / win32 / library / BH / include / boost / algorithm / string / detail / find_iterator.hpp @ 2486

History | View | Annotate | Download (2.7 kB)

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_core.hpp>
16
#include <boost/iterator/iterator_facade.hpp>
17
#include <boost/iterator/iterator_categories.hpp>
18
#include <boost/function.hpp>
19

    
20
namespace 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