12 #ifndef ZYPP_BASE_ITERATOR_H
13 #define ZYPP_BASE_ITERATOR_H
18 #include <boost/functional.hpp>
19 #include <boost/iterator/filter_iterator.hpp>
20 #include <boost/iterator/transform_iterator.hpp>
21 #include <boost/function_output_iterator.hpp>
93 using boost::filter_iterator;
94 using boost::make_filter_iterator;
97 template<
class _Filter,
class _Container>
101 return make_filter_iterator( f, c.begin(), c.end() );
105 template<
class _Filter,
class _Container>
109 return make_filter_iterator( _Filter(), c.begin(), c.end() );
113 template<
class _Filter,
class _Container>
117 return make_filter_iterator( f, c.end(), c.end() );
121 template<
class _Filter,
class _Container>
125 return make_filter_iterator( _Filter(), c.end(), c.end() );
146 using boost::transform_iterator;
147 using boost::make_transform_iterator;
152 template<
class _Pair>
153 struct GetPairFirst :
public std::unary_function<_Pair, const typename _Pair::first_type &>
155 const typename _Pair::first_type &
operator()(
const _Pair & pair_r )
const
156 {
return pair_r.first; }
162 template<
class _Pair>
163 struct GetPairSecond :
public std::unary_function<_Pair, const typename _Pair::second_type &>
165 const typename _Pair::second_type &
operator()(
const _Pair & pair_r )
const
166 {
return pair_r.second; }
215 typedef transform_iterator<GetPairFirst<typename MapType::value_type>,
220 typedef transform_iterator<GetPairSecond<typename MapType::value_type>,
278 using boost::function_output_iterator;
279 using boost::make_function_output_iterator;
285 #endif // ZYPP_BASE_ITERATOR_H