27 #ifndef SHORE_PROCESSING_FILTER_HPP__
28 #define SHORE_PROCESSING_FILTER_HPP__
33 #include <boost/function.hpp>
44 template<
typename T,
typename U=T>
52 void append(
const T &obj)
59 template<
typename T,
typename U=T>
62 T & operator()(T & dst,
const U & src)
const
69 template<
typename T,
typename U=T,
typename Converter=conversion<T,U> >
86 void append(
const T & obj)
107 typedef boost::function<bool (const T&)> functor_t;
111 std::vector<functor_t> m_ops;
115 typedef T current_type;
116 typedef T append_type;
120 void add_op(functor_t func)
122 m_ops.push_back(func);
125 bool has_data()
const
130 const T& current()
const
140 void append(
const T& obj)
143 throw std::logic_error(
"filter::append: filter is full");
145 for(
size_t i=0;i<m_ops.size();++i)
157 return m_ops.empty();
170 typedef boost::function<bool (const T&)> functor_t;
172 std::vector<functor_t> m_ops;
177 void append(
const T &obj)
179 for(
size_t i=0;i<m_ops.size();++i)
202 void add_op(functor_t func)
204 m_ops.push_back(func);
209 return m_ops.empty();
215 #endif // SHORE_PROCESSING_FILTER_HPP__