#ifndef DPFUNC2PROCESS_HEADER #define DPFUNC2PROCESS_HEADER 1 /////////////////////////////////////////////// //! docentry="Data Processing" //! lib=DataProc //! rcsid="$Id: Func2Proc.hh,v 1.7 1999/09/16 13:30:16 ees1cg Exp $" //! file="amma/StdType/DataProc/Func2Proc.hh" //! author="Charles Galambos" //! date="09/07/98" #include "amma/DP/Process.hh" ///////////////////////////// //! userlevel=Develop //: Function body. template class DPFunc2ProcBodyC : public DPProcessBodyC { public: typedef OutT (*FuncT)(const InT &); DPFunc2ProcBodyC(FuncT nfunc) : func(nfunc) {} //: Constructor. virtual OutT Apply(const InT &dat) { return func(dat); } //: Apply operation. virtual BooleanT IsStateless() const { return TRUE; } //: Is operation stateless ? protected: FuncT func; }; /////////////////////////////// //! userlevel=Develop //: Function handle. template class DPFunc2ProcC : public DPProcessC { public: DPFunc2ProcC(DPFunc2ProcBodyC::FuncT func) : DPProcessC(*new DPFunc2ProcBodyC(func)) {} //: Default constructor. }; namespace StdDP { template DPFunc2ProcC Process(OutT (*func)(const InT &)) { return DPFunc2ProcC(func); } //: Turn a function into a process. } #endif