PageRenderTime 18ms CodeModel.GetById 12ms app.highlight 3ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/algorithm/string/detail/find_iterator.hpp

http://hadesmem.googlecode.com/
C++ Header | 87 lines | 52 code | 17 blank | 18 comment | 1 complexity | de2c9111a739c9dd85d8522c98caf342 MD5 | raw file
 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