📄 trigger.cpp
字号:
#include "GKL.h"
using namespace GKL;
Trigger::Trigger(bool needDelete/* = true*/, bool isList/* = false*/):
mNeedDelete(needDelete),
mpTriggerList(NULL),
mpParentTrigger(NULL),
mState(TRIGGER_STATE_NORMAL)
{
if(isList)
mpTriggerList = new list<Trigger*>;
}
Trigger::~Trigger(void)
{
if(mpTriggerList != NULL)
{
clearTriggerList();
delete mpTriggerList;
}
}
void Trigger::addTrigger(Trigger *pTrigger)
{
alert(mpTriggerList == NULL);
mpTriggerList->push_back(pTrigger);
pTrigger->mpParentTrigger = this;
}
void Trigger::removeTrigger(Trigger *pTrigger)
{
alert(mpTriggerList == NULL);
list<Trigger*>::iterator itor;
itor = find(mpTriggerList->begin(), mpTriggerList->end(), pTrigger);
alert(itor == mpTriggerList->end());
if(pTrigger->mNeedDelete)
delete *itor;
else
(*itor)->mpParentTrigger = NULL;
mpTriggerList->erase(itor);
}
void Trigger::clearTriggerList(void)
{
alert(mpTriggerList == NULL);
list<Trigger*>::iterator itor;
for(itor = mpTriggerList->begin(); itor != mpTriggerList->end(); itor++)
{
if((*itor)->mNeedDelete)
delete *itor;
else
(*itor)->mpParentTrigger = NULL;
}
mpTriggerList->clear();
}
void Trigger::pause(void)
{
mState = TRIGGER_STATE_PAUSE;
}
void Trigger::resume(void)
{
mState = TRIGGER_STATE_NORMAL;
}
void Trigger::remove(void)
{
alert(mpParentTrigger == NULL);
mpParentTrigger->removeTrigger(this);
}
int Trigger::trigger(void *pParam/* = NULL*/)
{
if(mState == TRIGGER_STATE_PAUSE)
return 0;
if(mpTriggerList == NULL)
return onTrigger(pParam);
else
{
int retVal = 0;
list<Trigger*>::iterator itor;
for(itor = mpTriggerList->begin(); itor != mpTriggerList->end(); )
{
retVal = (*itor++)->trigger(pParam);
if(retVal < 0)
break;
}
return retVal;
}
}
int Trigger::onTrigger(void *pParam)
{
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -