Files
Work/thread/TCALLBCK.TPP
2024-08-07 09:16:27 -04:00

75 lines
1.7 KiB
C++

#ifndef _THREAD_THREADCALLBACK_HPP_
#error TCALLBCK.HPP MUST PRECEDE TCALLBCK.TPP
#endif
template <class T>
ThreadCallback<T>::ThreadCallback(void)
: mlpObject(0), mlpMethod(0)
{
}
template <class T>
ThreadCallback<T>::ThreadCallback(const ThreadCallback<T> &someThreadCallback)
: mlpObject(someThreadCallback.mlpObject), mlpMethod(someThreadCallback.mlpMethod)
{
}
template <class T>
ThreadCallback<T>::ThreadCallback(T *lpObject,LPFNMETHOD lpMethod)
: mlpObject(lpObject), mlpMethod(lpMethod)
{
}
template <class T>
ThreadCallback<T>::~ThreadCallback()
{
}
template <class T>
WORD ThreadCallback<T>::operator==(const ThreadCallback<T> &someThreadCallback)const
{
return (mlpObject==someThreadCallback.mlpObject && mlpMethod==someThreadCallback.mlpMethod);
}
template <class T>
void ThreadCallback<T>::operator=(const ThreadCallback<T> &someThreadCallback)
{
mlpObject=someThreadCallback.mlpObject;
mlpMethod=someThreadCallback.mlpMethod;
}
template <class T>
void ThreadCallback<T>::setObject(T *lpObject)
{
mlpObject=lpObject;
}
template <class T>
void ThreadCallback<T>::setMethod(LPFNMETHOD lpMethod)
{
mlpMethod=lpMethod;
}
template <class T>
void ThreadCallback<T>::setCallback(T *lpObject,LPFNMETHOD lpMethod)
{
mlpObject=lpObject;
mlpMethod=lpMethod;
}
#if defined(_MSC_VER)
template <class T>
DWORD ThreadCallback<T>::operator*(ThreadMessage &someThreadMessage)
{
DWORD (T::*lpMethod)(ThreadMessage &someThreadMessage)=0;
if((lpMethod==mlpMethod)||!mlpObject)return 0L;
return (mlpObject->*mlpMethod)(someThreadMessage);
}
#else
template <class T>
DWORD ThreadCallback<T>::operator*(ThreadMessage &someThreadMessage)
{
if(!mlpObject||!mlpMethod)return 0L;
return (mlpObject->*mlpMethod)(someThreadMessage);
}
#endif