You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kvirc/src/kvirc/kvs/kvi_kvs_eventtriggers.h

290 lines
8.6 KiB

#ifndef _KVI_KVS_EVENTTRIGGERS_H_
#define _KVI_KVS_EVENTTRIGGERS_H_
//=============================================================================
//
// File : kvi_kvs_eventtriggers.h
// Created on Thu Oct 22 2005 04:57:12 by Szymon Stefanek
//
// This file is part of the KVIrc IRC client distribution
// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
//
// This program is FREE software. You can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your opinion) any later version.
//
// This program is distributed in the HOPE that it will be USEFUL,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, write to the Free Software Foundation,
// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
//=============================================================================
#include "kvi_settings.h"
#include "kvi_kvs_eventtable.h"
#include "kvi_kvs_eventmanager.h"
#include "kvi_kvs_variantlist.h"
//
// KVS Macros for triggering events
//
// KviKvsVariantList vParams;
// vParams.append(bSomething);
// vParams.append(iSomething);
// vParams.append(szSomething);
// KVS_TRIGGER_EVENT(KviEvent_OnSomething,pSomeWindow,&vParams)
//
// if(KVS_TRIGGER_EVENT_HALTED(KviEvent_OnSomething,pSomeWindow,&vParams))
// msg->haltOutput()
//
//
// THESE TWO ARE SLOW, but allow reusing the params
#define KVS_TRIGGER_EVENT(__idx,__wnd,__parms) \
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
KviKvsEventManager::instance()->trigger(__idx,__wnd,__parms);
#define KVS_TRIGGER_EVENT_HALTED(__idx,__wnd,__parms) \
(KviKvsEventManager::instance()->hasAppHandlers(__idx) ? \
KviKvsEventManager::instance()->trigger(__idx,__wnd,__parms) : false)
// FAST CALLING MACROS
#define KVS_TRIGGER_EVENT_0(__idx,__wnd) \
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList; \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
#define KVS_TRIGGER_EVENT_1(__idx,__wnd,__param1) \
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
new KviKvsVariant(__param1) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
#define KVS_TRIGGER_EVENT_2(__idx,__wnd,__param1,__param2) \
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
new KviKvsVariant(__param1), \
new KviKvsVariant(__param2) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
#define KVS_TRIGGER_EVENT_3(__idx,__wnd,__param1,__param2,__param3) \
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
new KviKvsVariant(__param1), \
new KviKvsVariant(__param2), \
new KviKvsVariant(__param3) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
#define KVS_TRIGGER_EVENT_4(__idx,__wnd,__param1,__param2,__param3,__param4) \
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
new KviKvsVariant(__param1), \
new KviKvsVariant(__param2), \
new KviKvsVariant(__param3), \
new KviKvsVariant(__param4) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
#define KVS_TRIGGER_EVENT_5(__idx,__wnd,__param1,__param2,__param3,__param4,__param5) \
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
new KviKvsVariant(__param1), \
new KviKvsVariant(__param2), \
new KviKvsVariant(__param3), \
new KviKvsVariant(__param4), \
new KviKvsVariant(__param5) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
#define KVS_TRIGGER_EVENT_6(__idx,__wnd,__param1,__param2,__param3,__param4,__param5,__param6) \
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
new KviKvsVariant(__param1), \
new KviKvsVariant(__param2), \
new KviKvsVariant(__param3), \
new KviKvsVariant(__param4), \
new KviKvsVariant(__param5), \
new KviKvsVariant(__param6) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
#define KVS_TRIGGER_EVENT_7(__idx,__wnd,__param1,__param2,__param3,__param4,__param5,__param6,__param7) \
if(KviKvsEventManager::instance()->hasAppHandlers(__idx)) \
{ \
KviKvsVariantList _vLocalParamList( \
new KviKvsVariant(__param1), \
new KviKvsVariant(__param2), \
new KviKvsVariant(__param3), \
new KviKvsVariant(__param4), \
new KviKvsVariant(__param5), \
new KviKvsVariant(__param6), \
new KviKvsVariant(__param7) \
); \
KviKvsEventManager::instance()->trigger(__idx,__wnd,&_vLocalParamList); \
}
#define KVS_TRIGGER_EVENT_0_HALTED(__idx,__wnd) \
( \
KviKvsEventManager::instance()->hasAppHandlers(__idx) \
? \
KviKvsEventManager::instance()->triggerDeleteParams( \
__idx, \
__wnd, \
new KviKvsVariantList() \
) \
: \
false \
)
#define KVS_TRIGGER_EVENT_1_HALTED(__idx,__wnd,__param1) \
( \
KviKvsEventManager::instance()->hasAppHandlers(__idx) \
? \
KviKvsEventManager::instance()->triggerDeleteParams( \
__idx, \
__wnd, \
new KviKvsVariantList( \
new KviKvsVariant(__param1) \
) \
) \
: \
false \
)
#define KVS_TRIGGER_EVENT_2_HALTED(__idx,__wnd,__param1,__param2) \
( \
KviKvsEventManager::instance()->hasAppHandlers(__idx) \
? \
KviKvsEventManager::instance()->triggerDeleteParams( \
__idx, \
__wnd, \
new KviKvsVariantList( \
new KviKvsVariant(__param1), \
new KviKvsVariant(__param2) \
) \
) \
: \
false \
)
#define KVS_TRIGGER_EVENT_3_HALTED(__idx,__wnd,__param1,__param2,__param3) \
( \
KviKvsEventManager::instance()->hasAppHandlers(__idx) \
? \
KviKvsEventManager::instance()->triggerDeleteParams( \
__idx, \
__wnd, \
new KviKvsVariantList( \
new KviKvsVariant(__param1), \
new KviKvsVariant(__param2), \
new KviKvsVariant(__param3) \
) \
) \
: \
false \
)
#define KVS_TRIGGER_EVENT_4_HALTED(__idx,__wnd,__param1,__param2,__param3,__param4) \
( \
KviKvsEventManager::instance()->hasAppHandlers(__idx) \
? \
KviKvsEventManager::instance()->triggerDeleteParams( \
__idx, \
__wnd, \
new KviKvsVariantList( \
new KviKvsVariant(__param1), \
new KviKvsVariant(__param2), \
new KviKvsVariant(__param3), \
new KviKvsVariant(__param4) \
) \
) \
: \
false \
)
#define KVS_TRIGGER_EVENT_5_HALTED(__idx,__wnd,__param1,__param2,__param3,__param4,__param5) \
( \
KviKvsEventManager::instance()->hasAppHandlers(__idx) \
? \
KviKvsEventManager::instance()->triggerDeleteParams( \
__idx, \
__wnd, \
new KviKvsVariantList( \
new KviKvsVariant(__param1), \
new KviKvsVariant(__param2), \
new KviKvsVariant(__param3), \
new KviKvsVariant(__param4), \
new KviKvsVariant(__param5) \
) \
) \
: \
false \
)
#define KVS_TRIGGER_EVENT_6_HALTED(__idx,__wnd,__param1,__param2,__param3,__param4,__param5,__param6) \
( \
KviKvsEventManager::instance()->hasAppHandlers(__idx) \
? \
KviKvsEventManager::instance()->triggerDeleteParams( \
__idx, \
__wnd, \
new KviKvsVariantList( \
new KviKvsVariant(__param1), \
new KviKvsVariant(__param2), \
new KviKvsVariant(__param3), \
new KviKvsVariant(__param4), \
new KviKvsVariant(__param5), \
new KviKvsVariant(__param6) \
) \
) \
: \
false \
)
#define KVS_TRIGGER_EVENT_7_HALTED(__idx,__wnd,__param1,__param2,__param3,__param4,__param5,__param6,__param7) \
( \
KviKvsEventManager::instance()->hasAppHandlers(__idx) \
? \
KviKvsEventManager::instance()->triggerDeleteParams( \
__idx, \
__wnd, \
new KviKvsVariantList( \
new KviKvsVariant(__param1), \
new KviKvsVariant(__param2), \
new KviKvsVariant(__param3), \
new KviKvsVariant(__param4), \
new KviKvsVariant(__param5), \
new KviKvsVariant(__param6), \
new KviKvsVariant(__param7) \
) \
) \
: \
false \
)
#endif //!_KVI_KVS_EVENTTRIGGERS_H_