Go to the documentation of this file.00001 #ifndef vipl_monadic_h_
00002 #define vipl_monadic_h_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include <vipl/filter/vipl_filter_2d.h>
00032
00033
00034 template <class ImgIn,class ImgOut,class DataIn,class DataOut, VCL_DFL_TYPE_PARAM_STLDECL(PixelItr, vipl_trivial_pixeliter) >
00035 class vipl_monadic : public vipl_filter_2d<ImgIn,ImgOut,DataIn,DataOut,PixelItr>
00036 {
00037 public:
00038 typedef DataOut (*MonadicFunction)(DataIn const&);
00039
00040 private: MonadicFunction func_;
00041 public: MonadicFunction func() const { return func_; }
00042
00043
00044 public:
00045 inline vipl_monadic(MonadicFunction f)
00046 : vipl_filter_2d<ImgIn,ImgOut,DataIn,DataOut,PixelItr>(), func_(f) {}
00047 inline vipl_monadic(vipl_monadic const& A)
00048 : vipl_filter_2d<ImgIn,ImgOut,DataIn,DataOut,PixelItr>(A), func_(A.func()) {}
00049 inline ~vipl_monadic() {}
00050
00051
00052 bool section_applyop();
00053 };
00054
00055 #ifdef INSTANTIATE_TEMPLATES
00056 #include "vipl_monadic.txx"
00057 #endif
00058
00059 #endif // vipl_monadic_h_