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>
95 using boost::filter_iterator;
96 using boost::make_filter_iterator;
99 template<
class TFilter,
class TContainer>
103 return make_filter_iterator( f, c.begin(), c.end() );
107 template<
class TFilter,
class TContainer>
111 return make_filter_iterator( TFilter(), c.begin(), c.end() );
115 template<
class TFilter,
class TContainer>
119 return make_filter_iterator( f, c.end(), c.end() );
123 template<
class TFilter,
class TContainer>
127 return make_filter_iterator( TFilter(), c.end(), c.end() );
148 using boost::transform_iterator;
149 using boost::make_transform_iterator;
154 template<
class TPair>
155 struct GetPairFirst :
public std::unary_function<TPair, const typename TPair::first_type &>
157 const typename TPair::first_type &
operator()(
const TPair & pair_r )
const
158 {
return pair_r.first; }
164 template<
class TPair>
165 struct GetPairSecond :
public std::unary_function<TPair, const typename TPair::second_type &>
167 const typename TPair::second_type &
operator()(
const TPair & pair_r )
const
168 {
return pair_r.second; }
217 typedef transform_iterator<GetPairFirst<typename MapType::value_type>,
222 typedef transform_iterator<GetPairSecond<typename MapType::value_type>,
280 using boost::function_output_iterator;
281 using boost::make_function_output_iterator;
287 #endif // ZYPP_BASE_ITERATOR_H