void Module::AddHandler(AHandler* pHandler)
{
POSITION pos = m_AHandlerPtrList.Find(pHandler);
if (pos != NULL) return;
m_AHandlerPtrList.AddTail(pHandler);
}
void Module::RemoveHandler(AHandler* pHandler)
{
POSITION pos = m_AHandlerPtrList.Find(pHandler);
if (pos != NULL) return;
m_AHandlerPtrList.RemoveAt(pos);
}
void Module::AddHandler(BANMHandler* pHandler)
{
POSITION pos = m_BHandlerPtrList.Find(pHandler);
if (pos != NULL) return;
m_BHandlerPtrList.AddTail(pHandler);
}
void Module::RemoveHandler(BANMHandler* pHandler)
{
POSITION pos = m_BHandlerPtrList.Find(pHandler);
if (pos != NULL) return;
m_BHandlerPtrList.RemoveAt(pos);
}
이걸 쉽게 하려면
디파인 하나 선언해서 사용해
이런식으로.
#define Check(handlerlist , handler) \\
POSITION pos = handlerlist.Find(handler); \\
if(pos!=NULL)\\
return;
사용법은.
이걸 쉽게 하려면
디파인 하나 선언해서 사용해
이런식으로.
#define Check(handlerlist , handler) \\
POSITION pos = handlerlist.Find(handler); \\
if(pos!=NULL)\\
return;
사용법은.
void Module::AddHandler(AHandler* pHandler)
{
Check(m_AHandlerPtrList , pHandler);
m_AHandlerPtrList.AddTail(pHandler);
m_AHandlerPtrList.AddTail(pHandler);
}
void Module::RemoveHandler(AHandler* pHandler)
{
Check(m_AHandlerPtrList , pHandler);
m_AHandlerPtrList.RemoveAt(pos);
}
void Module::AddHandler(BANMHandler* pHandler)
{
Check(m_BHandlerPtrList, pHandler);
m_BHandlerPtrList.AddTail(pHandler);
}
void Module::RemoveHandler(BANMHandler* pHandler)
{
Check(m_BHandlerPtrList, pHandler);
m_BHandlerPtrList.RemoveAt(pos);
}
간단하지?
간단하지?
더 간단하게 하려면 응용해서 디파인 두개만들고. m_BHandlerPtrList.AddTail(pHandler); m_BHandlerPtrList.RemoveAt(pos); 이것까지 줄여버리던가.
으헑 매크로는 뭔가 안습임 -ㅅ-;;