#ifndef _COMMON_CALLBACKPOINTER_HPP_ #define _COMMON_CALLBACKPOINTER_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_PURECALLBACK_HPP_ #include #endif template class CallbackPointer { public: CallbackPointer(void); CallbackPointer(PureCallback *lpCallback); CallbackPointer(const CallbackPointer &someCallbackPointer); virtual ~CallbackPointer(); void operator=(CallbackPointer &someCallbackPointer); WORD operator==(const CallbackPointer &someCallbackPointer)const; LONG callback(CallbackData &someCallbackData); bool isOkay(void)const; private: PureCallback *mlpCallback; }; template inline CallbackPointer::CallbackPointer(void) : mlpCallback(0) { } template inline CallbackPointer::CallbackPointer(PureCallback *lpCallback) : mlpCallback(lpCallback) { } template inline CallbackPointer::CallbackPointer(const CallbackPointer &someCallbackPointer) : mlpCallback(someCallbackPointer.mlpCallback) { } template inline CallbackPointer::~CallbackPointer() { } template inline void CallbackPointer::operator=(CallbackPointer &someCallbackPointer) { mlpCallback=someCallbackPointer.mlpCallback; } template inline WORD CallbackPointer::operator==(const CallbackPointer &someCallbackPointer)const { return (mlpCallback==someCallbackPointer.mlpCallback); } template inline LONG CallbackPointer::callback(CallbackData &someCallbackData) { if(!mlpCallback)return (LONG)0; return mlpCallback->operator*(someCallbackData); } template inline bool CallbackPointer::isOkay(void)const { return mlpCallback?true:false; } #endif