Danbias/Input/InputSubscribe.cpp

143 lines
1.9 KiB
C++

#include "RawInput.h"
template<typename FNC, typename PARAM, typename OBJECT_PARAM>
void SUBSCRIBE(SubscribeList<FNC, PARAM>* l, FNC _fnc, OBJECT_PARAM p)
{
SubscribeList<FNC, PARAM>* t = new SubscribeList<FNC, PARAM>();
t->param = p;
t->fnc = _fnc;
t->next = l;
l = t;
}
template<typename FNC, typename PARAM>
void UNSUBSCRIBE(SubscribeList<FNC, PARAM>* l, FNC fnc)
{
SubscribeList<FNC, PARAM>* w = l;
SubscribeList<FNC, PARAM>* p = 0;
while (w)
{
if(w->fnc == fnc)
{
if(p)
p->next = w->next;
delete w;
w = 0;
}
else
{
p = w;
w = w->next;
}
}
}
void RawInput_Impl::Input_Subscribe (IN INPUT_CALLBACK fnc)
{
//SUBSCRIBE(this->_procInput, fnc, &this->_procCollection.id);
}
void RawInput_Impl::Input_Unsubscribe (IN INPUT_CALLBACK fnc)
{
//UNSUBSCRIBE(this->_procSystemKey, fnc);
}
/*
void RawInput::Subscribe (RAW_KEY_PROC fnc)
{
KeyboardProcList* t = new KeyboardProcList();
t->fnc = fnc;
t->next = 0;
KeyboardProcList* w = this->_keyProcList;
KeyboardProcList* prev = this->_keyProcList;
while (w)
{
prev = w;
w = w->next;
}
prev->next = t;
}
void RawInput::Subscribe (RAW_MOUSE_PROC fnc)
{
MouseProcList* t = new MouseProcList();
t->fnc = fnc;
t->next = 0;
MouseProcList* w = this->_mouseProcList;
MouseProcList* prev = this->_mouseProcList;
while (w)
{
prev = w;
w = w->next;
}
prev->next = t;
}
void RawInput::Unsubscribe (RAW_KEY_PROC fnc)
{
KeyboardProcList* w = this->_keyProcList;
KeyboardProcList* prev = 0;
while (w)
{
if(w->fnc == fnc)
{
if(prev)
prev->next = w->next;
delete w;
w = 0;
}
else
{
prev = w;
w = w->next;
}
}
}
void RawInput::Unsubscribe (RAW_MOUSE_PROC fnc)
{
MouseProcList* w = this->_mouseProcList;
MouseProcList* prev = 0;
while (w)
{
if(w->fnc == fnc)
{
if(prev)
prev->next = w->next;
delete w;
w = 0;
}
else
{
prev = w;
w = w->next;
}
}
}
*/