Files
CPP/common/cbptr.hpp
2025-08-14 12:47:10 -04:00

81 lines
1.8 KiB
C++
Executable File

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