mirror of
https://github.com/yuzu-emu/ext-boost.git
synced 2024-12-23 12:55:30 +00:00
88 lines
2.7 KiB
C++
88 lines
2.7 KiB
C++
// 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_core.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
|