21 #ifndef __mia_fifofilter_hh
22 #define __mia_fifofilter_hh
27 #include <boost/call_traits.hpp>
30 #ifndef EXPORT_HANDLER
32 #define EXPORT_HANDLER __declspec(dllimport)
34 #define EXPORT_HANDLER
56 typedef std::shared_ptr<TFifoFilter >
Pointer;
66 TFifoFilter(
size_t width,
size_t min_fill,
size_t read_start);
72 void push(typename ::boost::call_traits<T>::param_type x);
82 void append_filter(
Pointer last);
85 size_t get_pos()
const;
88 size_t get_buffer_size()
const;
91 size_t get_start()
const;
94 size_t get_end()
const;
104 virtual void do_initialize(typename ::boost::call_traits<T>::param_type x);
111 virtual void do_push(typename ::boost::call_traits<T>::param_type x) = 0;
117 virtual T do_filter();
122 virtual void post_finalize();
128 virtual void shift_buffer();
135 virtual void evaluate(
size_t slice);
142 size_t m_start_slice;
156 template <
typename T>
163 typedef std::shared_ptr< TFifoFilterSink<T> >
Pointer;
175 virtual void do_push(typename ::boost::call_traits<T>::param_type x);
190 template <
typename T>
191 struct __copy_create_ptr {
192 static std::shared_ptr<T > apply (typename ::boost::call_traits<T>::param_type x){
193 return std::shared_ptr<T >(
new T(x));