--- trunk/OOPSE/libmdtools/Functor.hpp 2004/02/04 22:26:00 1023 +++ trunk/OOPSE/libmdtools/Functor.hpp 2004/02/06 18:58:06 1031 @@ -100,4 +100,48 @@ class ClassMemObjFunctor1 : public ObjFunctor1{ TClass* ptrClass; }; + +class OutputFunctor{ + public: + + virtual ~OutputFunctor() {} + virtual void operator()(vector&, int)=0; + +}; + +class PtrOutputFunctor : public OutputFunctor{ + + public: + + PtrOutputFunctor(void (*thePtrFunc)(vector&, int)){ + ptrFunc = thePtrFunc; + } + + virtual void operator()(vector& arg1, int arg2){ + return (*ptrFunc)(arg1, arg2); + }; + + protected: + void (*ptrFunc)(vector&, int); +}; + + +//ClassMemObjFunctor class wraps a pointer pointing to a member function of a class +// +template +class ClassMemOutputFunctor : public OutputFunctor{ + public: + ClassMemOutputFunctor(TClass* thePtrClass, void (TClass::*thePtrFunc)(vector&, int)){ + ptrClass = thePtrClass; + ptrFunc = thePtrFunc; + } + + void operator()(vector& arg1, int arg2){ + return (*ptrClass.*ptrFunc)(arg1, arg2); + } + protected: + + void (TClass::*ptrFunc)(vector&, int); + TClass* ptrClass; +}; #endif