Refactored module hook calling macros into one master macro

git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@708 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
prozacx
2006-03-22 08:02:37 +00:00
parent bbe30f689c
commit b740d7cc36
7 changed files with 83 additions and 149 deletions
+6 -6
View File
@@ -195,7 +195,7 @@ void CChan::ModeChange(const CString& sModes, const CString& sOpNick) {
CNick* pOpNick = FindNick(sOpNick);
if (pOpNick) {
VOIDMODULECALL(OnRawMode(*pOpNick, *this, sModeArg, sArgs));
MODULECALL(OnRawMode(*pOpNick, *this, sModeArg, sArgs), m_pUser, NULL, );
}
#endif
@@ -234,19 +234,19 @@ void CChan::ModeChange(const CString& sModes, const CString& sOpNick) {
bool bNoChange = (pNick->HasPerm(uPerm) == bAdd);
if (uMode && pOpNick) {
VOIDMODULECALL(OnChanPermission(*pOpNick, *pNick, *this, uMode, bAdd, bNoChange));
MODULECALL(OnChanPermission(*pOpNick, *pNick, *this, uMode, bAdd, bNoChange), m_pUser, NULL, );
if (uMode == CChan::M_Op) {
if (bAdd) {
VOIDMODULECALL(OnOp(*pOpNick, *pNick, *this, bNoChange));
MODULECALL(OnOp(*pOpNick, *pNick, *this, bNoChange), m_pUser, NULL, );
} else {
VOIDMODULECALL(OnDeop(*pOpNick, *pNick, *this, bNoChange));
MODULECALL(OnDeop(*pOpNick, *pNick, *this, bNoChange), m_pUser, NULL, );
}
} else if (uMode == CChan::M_Voice) {
if (bAdd) {
VOIDMODULECALL(OnVoice(*pOpNick, *pNick, *this, bNoChange));
MODULECALL(OnVoice(*pOpNick, *pNick, *this, bNoChange), m_pUser, NULL, );
} else {
VOIDMODULECALL(OnDevoice(*pOpNick, *pNick, *this, bNoChange));
MODULECALL(OnDevoice(*pOpNick, *pNick, *this, bNoChange), m_pUser, NULL, );
}
}
}
+11 -33
View File
@@ -18,9 +18,7 @@ void CClient::ReadLine(const CString& sData) {
#ifdef _MODULES
if (m_bAuthed) {
CZNC::Get().GetModules().SetClient(this);
MODULECALLRET(OnUserRaw(sLine));
CZNC::Get().GetModules().SetClient(NULL);
MODULECALL(OnUserRaw(sLine), m_pUser, this, return);
}
#endif
@@ -133,9 +131,7 @@ void CClient::ReadLine(const CString& sData) {
for (unsigned int a = 0; a < vChans.size(); a++) {
CString sChannel = vChans[a];
#ifdef _MODULES
CZNC::Get().GetModules().SetClient(this);
MODULECALLCONT(OnUserJoin(sChannel, sKey));
CZNC::Get().GetModules().SetClient(NULL);
MODULECALL(OnUserJoin(sChannel, sKey), m_pUser, this, continue);
#endif
CChan* pChan = m_pUser->FindChan(sChannel);
@@ -169,9 +165,7 @@ void CClient::ReadLine(const CString& sData) {
}
#ifdef _MODULES
CZNC::Get().GetModules().SetClient(this);
MODULECALLRET(OnUserPart(sChan, sMessage));
CZNC::Get().GetModules().SetClient(NULL);
MODULECALL(OnUserPart(sChan, sMessage), m_pUser, this, return);
#endif
if (m_pUser) {
@@ -242,15 +236,11 @@ void CClient::ReadLine(const CString& sData) {
sCTCP.LeftChomp();
sCTCP.RightChomp();
CZNC::Get().GetModules().SetClient(this);
MODULECALLRET(OnUserCTCPReply(sTarget, sCTCP));
CZNC::Get().GetModules().SetClient(NULL);
MODULECALL(OnUserCTCPReply(sTarget, sCTCP), m_pUser, this, return);
sMsg = "\001" + sCTCP + "\001";
} else {
CZNC::Get().GetModules().SetClient(this);
MODULECALLRET(OnUserNotice(sTarget, sMsg));
CZNC::Get().GetModules().SetClient(NULL);
MODULECALL(OnUserNotice(sTarget, sMsg), m_pUser, this, return);
}
#endif
@@ -320,9 +310,7 @@ void CClient::ReadLine(const CString& sData) {
}
#ifdef _MODULES
} else {
CZNC::Get().GetModules().SetClient(this);
MODULECALLRET(OnDCCUserSend(sTarget, uLongIP, uPort, sFile, uFileSize));
CZNC::Get().GetModules().SetClient(NULL);
MODULECALL(OnDCCUserSend(sTarget, uLongIP, uPort, sFile, uFileSize), m_pUser, this, return);
#endif
}
} else {
@@ -395,9 +383,7 @@ void CClient::ReadLine(const CString& sData) {
}
#ifdef _MODULES
} else {
CZNC::Get().GetModules().SetClient(this);
MODULECALLRET(OnUserCTCP(sTarget, sCTCP));
CZNC::Get().GetModules().SetClient(NULL);
MODULECALL(OnUserCTCP(sTarget, sCTCP), m_pUser, this, return);
#endif
}
@@ -407,9 +393,7 @@ void CClient::ReadLine(const CString& sData) {
if ((m_pUser) && (sTarget.CaseCmp(CString(m_pUser->GetStatusPrefix() + "status")) == 0)) {
#ifdef _MODULES
CZNC::Get().GetModules().SetClient(this);
MODULECALLRET(OnStatusCommand(sMsg));
CZNC::Get().GetModules().SetClient(NULL);
MODULECALL(OnStatusCommand(sMsg), m_pUser, this, return);
#endif
UserCommand(sMsg);
return;
@@ -445,9 +429,7 @@ void CClient::ReadLine(const CString& sData) {
}
#ifdef _MODULES
CZNC::Get().GetModules().SetClient(this);
MODULECALLRET(OnUserMsg(sTarget, sMsg));
CZNC::Get().GetModules().SetClient(NULL);
MODULECALL(OnUserMsg(sTarget, sMsg), m_pUser, this, return);
#endif
CChan* pChan = m_pUser->FindChan(sTarget);
@@ -1272,9 +1254,7 @@ void CClient::AcceptLogin(CUser& User) {
SendMotd();
#ifdef _MODULES
CZNC::Get().GetModules().SetClient(this);
VOIDMODULECALL(OnUserAttached());
CZNC::Get().GetModules().SetClient(NULL);
MODULECALL(OnUserAttached(), m_pUser, this, );
#endif
}
@@ -1295,9 +1275,7 @@ void CClient::Disconnected() {
m_pIRCSock = NULL;
#ifdef _MODULES
CZNC::Get().GetModules().SetClient(this);
VOIDMODULECALL(OnUserDetached());
CZNC::Get().GetModules().SetClient(NULL);
MODULECALL(OnUserDetached(), m_pUser, this, );
#endif
}
+15 -20
View File
@@ -59,12 +59,7 @@ void CIRCSock::ReadLine(const CString& sData) {
DEBUG_ONLY(cout << "(" << m_pUser->GetUserName() << ") IRC -> ZNC [" << sLine << "]" << endl);
#ifdef _MODULES
CGlobalModules& GMods = CZNC::Get().GetModules();
GMods.SetUser(m_pUser);
if (GMods.OnRaw(sLine) || m_pUser->GetModules().OnRaw(sLine)) {
return;
}
GMods.SetUser(NULL);
MODULECALL(OnRaw(sLine), m_pUser, NULL, return);
#endif
if (strncasecmp(sLine.c_str(), "PING ", 5) == 0) {
@@ -86,7 +81,7 @@ void CIRCSock::ReadLine(const CString& sData) {
m_pUser->StartAwayNickTimer();
VOIDMODULECALL(OnIRCConnected());
MODULECALL(OnIRCConnected(), m_pUser, NULL, );
m_bAuthed = true;
m_pUser->PutStatus("Connected!");
@@ -390,7 +385,7 @@ void CIRCSock::ReadLine(const CString& sData) {
KeepNick(true);
}
VOIDMODULECALL(OnNick(Nick, sNewNick, vFoundChans));
MODULECALL(OnNick(Nick, sNewNick, vFoundChans), m_pUser, NULL, );
if (!bIsVisible) {
return;
@@ -424,7 +419,7 @@ void CIRCSock::ReadLine(const CString& sData) {
KeepNick(true);
}
VOIDMODULECALL(OnQuit(Nick, sMessage, vFoundChans));
MODULECALL(OnQuit(Nick, sMessage, vFoundChans), m_pUser, NULL, );
if (!bIsVisible) {
return;
@@ -443,7 +438,7 @@ void CIRCSock::ReadLine(const CString& sData) {
CChan* pChan = m_pUser->FindChan(sChan);
if (pChan) {
pChan->AddNick(Nick.GetNickMask());
VOIDMODULECALL(OnJoin(Nick.GetNickMask(), *pChan));
MODULECALL(OnJoin(Nick.GetNickMask(), *pChan), m_pUser, NULL, );
if (pChan->IsDetached()) {
return;
@@ -458,7 +453,7 @@ void CIRCSock::ReadLine(const CString& sData) {
CChan* pChan = m_pUser->FindChan(sChan);
if (pChan) {
pChan->RemNick(Nick.GetNick());
VOIDMODULECALL(OnPart(Nick.GetNickMask(), *pChan));
MODULECALL(OnPart(Nick.GetNickMask(), *pChan), m_pUser, NULL, );
}
// Todo: use nick compare function
@@ -492,7 +487,7 @@ void CIRCSock::ReadLine(const CString& sData) {
if (pChan) {
pChan->RemNick(sKickedNick);
VOIDMODULECALL(OnKick(Nick.GetNickMask(), sKickedNick, *pChan, sMsg));
MODULECALL(OnKick(Nick.GetNickMask(), sKickedNick, *pChan, sMsg), m_pUser, NULL, );
}
if (GetNick().CaseCmp(sKickedNick) == 0) {
@@ -614,13 +609,13 @@ void CIRCSock::KeepNick(bool bForce) {
}
bool CIRCSock::OnCTCPReply(CNick& Nick, CString& sMessage) {
MODULECALL(OnCTCPReply(Nick, sMessage));
MODULECALL(OnCTCPReply(Nick, sMessage), m_pUser, NULL, return true);
return false;
}
bool CIRCSock::OnPrivCTCP(CNick& Nick, CString& sMessage) {
MODULECALL(OnPrivCTCP(Nick, sMessage));
MODULECALL(OnPrivCTCP(Nick, sMessage), m_pUser, NULL, return true);
if (strncasecmp(sMessage.c_str(), "DCC ", 4) == 0 && m_pUser && m_pUser->BounceDCCs()) {
// DCC CHAT chat 2453612361 44592
@@ -692,7 +687,7 @@ bool CIRCSock::OnPrivCTCP(CNick& Nick, CString& sMessage) {
}
bool CIRCSock::OnPrivNotice(CNick& Nick, CString& sMessage) {
MODULECALL(OnPrivNotice(Nick, sMessage));
MODULECALL(OnPrivNotice(Nick, sMessage), m_pUser, NULL, return true);
if (!m_pUser->IsUserAttached()) {
// If the user is detached, add to the buffer
@@ -703,7 +698,7 @@ bool CIRCSock::OnPrivNotice(CNick& Nick, CString& sMessage) {
}
bool CIRCSock::OnPrivMsg(CNick& Nick, CString& sMessage) {
MODULECALL(OnPrivMsg(Nick, sMessage));
MODULECALL(OnPrivMsg(Nick, sMessage), m_pUser, NULL, return true);
if (!m_pUser->IsUserAttached()) {
// If the user is detached, add to the buffer
@@ -720,7 +715,7 @@ bool CIRCSock::OnChanCTCP(CNick& Nick, const CString& sChan, CString& sMessage)
if (sMessage.Token(0).CaseCmp("ACTION") == 0 && (pChan->KeepBuffer() || !m_pUser->IsUserAttached())) {
pChan->AddBuffer(":" + Nick.GetNickMask() + " PRIVMSG " + sChan + " :\001" + sMessage + "\001");
} else {
MODULECALL(OnChanCTCP(Nick, *pChan, sMessage));
MODULECALL(OnChanCTCP(Nick, *pChan, sMessage), m_pUser, NULL, return true);
}
}
@@ -730,7 +725,7 @@ bool CIRCSock::OnChanCTCP(CNick& Nick, const CString& sChan, CString& sMessage)
bool CIRCSock::OnChanNotice(CNick& Nick, const CString& sChan, CString& sMessage) {
CChan* pChan = m_pUser->FindChan(sChan);
if (pChan) {
MODULECALL(OnChanNotice(Nick, *pChan, sMessage));
MODULECALL(OnChanNotice(Nick, *pChan, sMessage), m_pUser, NULL, return true);
if ((pChan->KeepBuffer()) || (!m_pUser->IsUserAttached())) {
pChan->AddBuffer(":" + Nick.GetNickMask() + " NOTICE " + sChan + " :" + sMessage);
@@ -743,7 +738,7 @@ bool CIRCSock::OnChanNotice(CNick& Nick, const CString& sChan, CString& sMessage
bool CIRCSock::OnChanMsg(CNick& Nick, const CString& sChan, CString& sMessage) {
CChan* pChan = m_pUser->FindChan(sChan);
if (pChan) {
MODULECALL(OnChanMsg(Nick, *pChan, sMessage));
MODULECALL(OnChanMsg(Nick, *pChan, sMessage), m_pUser, NULL, return true);
if (pChan->KeepBuffer() || !m_pUser->IsUserAttached()) {
pChan->AddBuffer(":" + Nick.GetNickMask() + " PRIVMSG " + sChan + " :" + sMessage);
@@ -776,7 +771,7 @@ void CIRCSock::Connected() {
}
void CIRCSock::Disconnected() {
VOIDMODULECALL(OnIRCDisconnected());
MODULECALL(OnIRCDisconnected(), m_pUser, NULL, );
DEBUG_ONLY(cout << GetSockName() << " == Disconnected()" << endl);
if (!m_pUser->IsBeingDeleted()) {
+18 -18
View File
@@ -551,20 +551,20 @@ bool CModules::OnBoot() {
return true;
}
void CModules::OnIRCConnected() { MODUNLOADCHK(OnIRCConnected()); }
bool CModules::OnIRCConnected() { MODUNLOADCHK(OnIRCConnected()); return false; }
bool CModules::OnBroadcast(CString& sMessage) { MODHALTCHK(OnBroadcast(sMessage)); }
void CModules::OnIRCDisconnected() { MODUNLOADCHK(OnIRCDisconnected()); }
bool CModules::OnIRCDisconnected() { MODUNLOADCHK(OnIRCDisconnected()); return false; }
bool CModules::OnDCCUserSend(const CNick& RemoteNick, unsigned long uLongIP, unsigned short uPort, const CString& sFile, unsigned long uFileSize) { MODHALTCHK(OnDCCUserSend(RemoteNick, uLongIP, uPort, sFile, uFileSize)); }
void CModules::OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) { MODUNLOADCHK(OnChanPermission(OpNick, Nick, Channel, uMode, bAdded, bNoChange)); }
void CModules::OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnOp(OpNick, Nick, Channel, bNoChange)); }
void CModules::OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnDeop(OpNick, Nick, Channel, bNoChange)); }
void CModules::OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnVoice(OpNick, Nick, Channel, bNoChange)); }
void CModules::OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnDevoice(OpNick, Nick, Channel, bNoChange)); }
void CModules::OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) { MODUNLOADCHK(OnRawMode(OpNick, Channel, sModes, sArgs)); }
bool CModules::OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) { MODUNLOADCHK(OnChanPermission(OpNick, Nick, Channel, uMode, bAdded, bNoChange)); return false; }
bool CModules::OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnOp(OpNick, Nick, Channel, bNoChange)); return false; }
bool CModules::OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnDeop(OpNick, Nick, Channel, bNoChange)); return false; }
bool CModules::OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnVoice(OpNick, Nick, Channel, bNoChange)); return false; }
bool CModules::OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnDevoice(OpNick, Nick, Channel, bNoChange)); return false; }
bool CModules::OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) { MODUNLOADCHK(OnRawMode(OpNick, Channel, sModes, sArgs)); return false; }
bool CModules::OnRaw(CString& sLine) { MODHALTCHK(OnRaw(sLine)); }
void CModules::OnUserAttached() { MODUNLOADCHK(OnUserAttached()); }
void CModules::OnUserDetached() { MODUNLOADCHK(OnUserDetached()); }
bool CModules::OnUserAttached() { MODUNLOADCHK(OnUserAttached()); return false; }
bool CModules::OnUserDetached() { MODUNLOADCHK(OnUserDetached()); return false; }
bool CModules::OnUserRaw(CString& sLine) { MODHALTCHK(OnUserRaw(sLine)); }
bool CModules::OnUserCTCPReply(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserCTCPReply(sTarget, sMessage)); }
bool CModules::OnUserCTCP(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserCTCP(sTarget, sMessage)); }
@@ -573,11 +573,11 @@ bool CModules::OnUserNotice(CString& sTarget, CString& sMessage) { MODHALTCHK(On
bool CModules::OnUserJoin(CString& sChannel, CString& sKey) { MODHALTCHK(OnUserJoin(sChannel, sKey)); }
bool CModules::OnUserPart(CString& sChannel, CString& sMessage) { MODHALTCHK(OnUserPart(sChannel, sMessage)); }
void CModules::OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans) { MODUNLOADCHK(OnQuit(Nick, sMessage, vChans)); }
void CModules::OnNick(const CNick& Nick, const CString& sNewNick, const vector<CChan*>& vChans) { MODUNLOADCHK(OnNick(Nick, sNewNick, vChans)); }
void CModules::OnKick(const CNick& Nick, const CString& sKickedNick, CChan& Channel, const CString& sMessage) { MODUNLOADCHK(OnKick(Nick, sKickedNick, Channel, sMessage)); }
void CModules::OnJoin(const CNick& Nick, CChan& Channel) { MODUNLOADCHK(OnJoin(Nick, Channel)); }
void CModules::OnPart(const CNick& Nick, CChan& Channel) { MODUNLOADCHK(OnPart(Nick, Channel)); }
bool CModules::OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans) { MODUNLOADCHK(OnQuit(Nick, sMessage, vChans)); return false; }
bool CModules::OnNick(const CNick& Nick, const CString& sNewNick, const vector<CChan*>& vChans) { MODUNLOADCHK(OnNick(Nick, sNewNick, vChans)); return false; }
bool CModules::OnKick(const CNick& Nick, const CString& sKickedNick, CChan& Channel, const CString& sMessage) { MODUNLOADCHK(OnKick(Nick, sKickedNick, Channel, sMessage)); return false; }
bool CModules::OnJoin(const CNick& Nick, CChan& Channel) { MODUNLOADCHK(OnJoin(Nick, Channel)); return false; }
bool CModules::OnPart(const CNick& Nick, CChan& Channel) { MODUNLOADCHK(OnPart(Nick, Channel)); return false; }
bool CModules::OnCTCPReply(CNick& Nick, CString& sMessage) { MODHALTCHK(OnCTCPReply(Nick, sMessage)); }
bool CModules::OnPrivCTCP(CNick& Nick, CString& sMessage) { MODHALTCHK(OnPrivCTCP(Nick, sMessage)); }
bool CModules::OnChanCTCP(CNick& Nick, CChan& Channel, CString& sMessage) { MODHALTCHK(OnChanCTCP(Nick, Channel, sMessage)); }
@@ -586,9 +586,9 @@ bool CModules::OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage) { MODHA
bool CModules::OnPrivNotice(CNick& Nick, CString& sMessage) { MODHALTCHK(OnPrivNotice(Nick, sMessage)); }
bool CModules::OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage) { MODHALTCHK(OnChanNotice(Nick, Channel, sMessage)); }
bool CModules::OnStatusCommand(const CString& sCommand) { MODHALTCHK(OnStatusCommand(sCommand)); }
void CModules::OnModCommand(const CString& sCommand) { MODUNLOADCHK(OnModCommand(sCommand)); }
void CModules::OnModNotice(const CString& sMessage) { MODUNLOADCHK(OnModNotice(sMessage)); }
void CModules::OnModCTCP(const CString& sMessage) { MODUNLOADCHK(OnModCTCP(sMessage)); }
bool CModules::OnModCommand(const CString& sCommand) { MODUNLOADCHK(OnModCommand(sCommand)); return false; }
bool CModules::OnModNotice(const CString& sMessage) { MODUNLOADCHK(OnModNotice(sMessage)); return false; }
bool CModules::OnModCTCP(const CString& sMessage) { MODUNLOADCHK(OnModCTCP(sMessage)); return false; }
////////////////////
// CGlobalModules //
+18 -18
View File
@@ -326,34 +326,34 @@ public:
void UnloadAll();
virtual bool OnBoot(); // Return false to abort
virtual void OnIRCDisconnected();
virtual void OnIRCConnected();
virtual bool OnIRCDisconnected();
virtual bool OnIRCConnected();
virtual bool OnBroadcast(CString& sMessage);
virtual bool OnDCCUserSend(const CNick& RemoteNick, unsigned long uLongIP, unsigned short uPort, const CString& sFile, unsigned long uFileSize);
virtual void OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange);
virtual void OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange);
virtual void OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange);
virtual void OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange);
virtual void OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange);
virtual void OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs);
virtual bool OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange);
virtual bool OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange);
virtual bool OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange);
virtual bool OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange);
virtual bool OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange);
virtual bool OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs);
virtual bool OnRaw(CString& sLine);
virtual bool OnStatusCommand(const CString& sCommand);
virtual void OnModCommand(const CString& sCommand);
virtual void OnModNotice(const CString& sMessage);
virtual void OnModCTCP(const CString& sMessage);
virtual bool OnModCommand(const CString& sCommand);
virtual bool OnModNotice(const CString& sMessage);
virtual bool OnModCTCP(const CString& sMessage);
virtual void OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans);
virtual void OnNick(const CNick& Nick, const CString& sNewNick, const vector<CChan*>& vChans);
virtual void OnKick(const CNick& Nick, const CString& sOpNick, CChan& Channel, const CString& sMessage);
virtual void OnJoin(const CNick& Nick, CChan& Channel);
virtual void OnPart(const CNick& Nick, CChan& Channel);
virtual bool OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans);
virtual bool OnNick(const CNick& Nick, const CString& sNewNick, const vector<CChan*>& vChans);
virtual bool OnKick(const CNick& Nick, const CString& sOpNick, CChan& Channel, const CString& sMessage);
virtual bool OnJoin(const CNick& Nick, CChan& Channel);
virtual bool OnPart(const CNick& Nick, CChan& Channel);
virtual void OnUserAttached();
virtual void OnUserDetached();
virtual bool OnUserAttached();
virtual bool OnUserDetached();
virtual bool OnUserRaw(CString& sLine);
virtual bool OnUserCTCPReply(CString& sTarget, CString& sMessage);
virtual bool OnUserCTCP(CString& sTarget, CString& sMessage);
+14 -52
View File
@@ -8,62 +8,24 @@
#endif
#ifdef _MODULES
#define VOIDMODULECALL(func) \
if (m_pUser) { \
CGlobalModules& GMods = CZNC::Get().GetModules(); \
GMods.SetUser(m_pUser); \
GMods.func; \
m_pUser->GetModules().func; \
GMods.SetUser(NULL); \
#define MODULECALL(macFUNC, macUSER, macCLIENT, macEXITER) \
if (macUSER) { \
CGlobalModules& GMods = CZNC::Get().GetModules(); \
CModules& UMods = macUSER->GetModules(); \
GMods.SetUser(macUSER); GMods.SetClient(macCLIENT); \
UMods.SetClient(macCLIENT); \
if (GMods.macFUNC || UMods.macFUNC) { \
GMods.SetUser(NULL); GMods.SetClient(NULL); \
UMods.SetClient(NULL); \
macEXITER; \
} \
GMods.SetUser(NULL); GMods.SetClient(NULL); \
UMods.SetClient(NULL); \
}
#else
#define VOIDMODULECALL(func)
#define MODULECALL(macFUNC, macUSER, macCLIENT, macEXITER)
#endif
#ifdef _MODULES
#define MODULECALLRET(func) \
if (m_pUser) { \
CGlobalModules& GMods = CZNC::Get().GetModules(); \
GMods.SetUser(m_pUser); \
if (GMods.func || m_pUser->GetModules().func) { \
GMods.SetUser(NULL); \
return; \
} \
GMods.SetUser(NULL); \
}
#else
#define MODULECALLRET(func)
#endif
#ifdef _MODULES
#define MODULECALLCONT(func) \
if (m_pUser) { \
CGlobalModules& GMods = CZNC::Get().GetModules(); \
GMods.SetUser(m_pUser); \
if (GMods.func || m_pUser->GetModules().func) { \
GMods.SetUser(NULL); \
continue; \
} \
GMods.SetUser(NULL); \
}
#else
#define MODULECALLCONT(func)
#endif
#ifdef _MODULES
#define MODULECALL(func) \
if (m_pUser) { \
CGlobalModules& GMods = CZNC::Get().GetModules(); \
GMods.SetUser(m_pUser); \
if (GMods.func || m_pUser->GetModules().func) { \
GMods.SetUser(NULL); \
return true; \
} \
GMods.SetUser(NULL); \
}
#else
#define MODULECALL(func)
#endif
#ifndef CS_STRING
#define CS_STRING CString
+1 -2
View File
@@ -1152,8 +1152,7 @@ void CZNC::Broadcast(const CString& sMessage, CUser* pUser) {
if (a->second != pUser) {
CString sMsg = sMessage;
#ifdef _MODULES
CUser* m_pUser = a->second; // This is a semi-hack because MODULECALLCONT below expects the user to be stored in m_pUser
MODULECALLCONT(OnBroadcast(sMsg));
MODULECALL(OnBroadcast(sMsg), a->second, NULL, continue);
#endif
a->second->PutStatusNotice("*** " + sMsg);
}