// Boost string_algo library find_iterator.hpp header file ---------------------------// | |
// Copyright Pavol Droba 2002-2003. | |
// | |
// Distributed under the Boost Software License, Version 1.0. | |
// (See accompanying file LICENSE_1_0.txt or copy at | |
// http://www.boost.org/LICENSE_1_0.txt) | |
// See http://www.boost.org/ for updates, documentation, and revision history. | |
#ifndef BOOST_STRING_FIND_ITERATOR_DETAIL_HPP | |
#define BOOST_STRING_FIND_ITERATOR_DETAIL_HPP | |
#include <boost/algorithm/string/config.hpp> | |
#include <boost/range/iterator_range.hpp> | |
#include <boost/iterator/iterator_facade.hpp> | |
#include <boost/iterator/iterator_categories.hpp> | |
#include <boost/function.hpp> | |
namespace boost { | |
namespace algorithm { | |
namespace detail { | |
// find_iterator base -----------------------------------------------// | |
// Find iterator base | |
template<typename IteratorT> | |
class find_iterator_base | |
{ | |
protected: | |
// typedefs | |
typedef IteratorT input_iterator_type; | |
typedef iterator_range<IteratorT> match_type; | |
typedef function2< | |
match_type, | |
input_iterator_type, | |
input_iterator_type> finder_type; | |
protected: | |
// Protected construction/destruction | |
// Default constructor | |
find_iterator_base() {}; | |
// Copy construction | |
find_iterator_base( const find_iterator_base& Other ) : | |
m_Finder(Other.m_Finder) {} | |
// Constructor | |
template<typename FinderT> | |
find_iterator_base( FinderT Finder, int ) : | |
m_Finder(Finder) {} | |
// Destructor | |
~find_iterator_base() {} | |
// Find operation | |
match_type do_find( | |
input_iterator_type Begin, | |
input_iterator_type End ) const | |
{ | |
if (!m_Finder.empty()) | |
{ | |
return m_Finder(Begin,End); | |
} | |
else | |
{ | |
return match_type(End,End); | |
} | |
} | |
// Check | |
bool is_null() const | |
{ | |
return m_Finder.empty(); | |
} | |
private: | |
// Finder | |
finder_type m_Finder; | |
}; | |
} // namespace detail | |
} // namespace algorithm | |
} // namespace boost | |
#endif // BOOST_STRING_FIND_ITERATOR_DETAIL_HPP |