mirror of
https://github.com/znc/znc.git
synced 2026-08-06 08:52:57 +02:00
Add a ModHandle typedef instead of using void* directly
This makes it clearer what this variable is and it makes porting to windows easier, because we can just change the typedef to HMODULE. git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1344 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
+8
-8
@@ -189,7 +189,7 @@ void CSocket::SetModule(CModule* p) { m_pModule = p; }
|
||||
CModule* CSocket::GetModule() const { return m_pModule; }
|
||||
/////////////////// !Socket ///////////////////
|
||||
|
||||
CModule::CModule(void* pDLL, CUser* pUser, const CString& sModName, const CString& sDataDir) {
|
||||
CModule::CModule(ModHandle pDLL, CUser* pUser, const CString& sModName, const CString& sDataDir) {
|
||||
m_bFake = false;
|
||||
m_bGlobal = false;
|
||||
m_pDLL = pDLL;
|
||||
@@ -205,7 +205,7 @@ CModule::CModule(void* pDLL, CUser* pUser, const CString& sModName, const CStrin
|
||||
}
|
||||
}
|
||||
|
||||
CModule::CModule(void* pDLL, const CString& sModName, const CString& sDataDir) {
|
||||
CModule::CModule(ModHandle pDLL, const CString& sModName, const CString& sDataDir) {
|
||||
m_bFake = false;
|
||||
m_pDLL = pDLL;
|
||||
m_pManager = &(CZNC::Get().GetManager());
|
||||
@@ -519,7 +519,7 @@ CModule::EModRet CModule::OnChanNotice(CNick& Nick, CChan& Channel, CString& sMe
|
||||
CModule::EModRet CModule::OnTopic(CNick& Nick, CChan& Channel, CString& sTopic) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnTimerAutoJoin(CChan& Channel) { return CONTINUE; }
|
||||
|
||||
void* CModule::GetDLL() { return m_pDLL; }
|
||||
ModHandle CModule::GetDLL() { return m_pDLL; }
|
||||
bool CModule::PutIRC(const CString& sLine) {
|
||||
return (m_pUser) ? m_pUser->PutIRC(sLine) : false;
|
||||
}
|
||||
@@ -726,7 +726,7 @@ bool CModules::LoadModule(const CString& sModule, const CString& sArgs, CUser* p
|
||||
unsigned int uDLFlags = RTLD_NOW;
|
||||
uDLFlags |= (pUser) ? RTLD_LOCAL : RTLD_GLOBAL;
|
||||
|
||||
void* p = dlopen((sModPath).c_str(), uDLFlags);
|
||||
ModHandle p = dlopen((sModPath).c_str(), uDLFlags);
|
||||
|
||||
if (!p) {
|
||||
sRetMsg = "Unable to load module [" + sModule + "] [" + dlerror() + "]";
|
||||
@@ -778,7 +778,7 @@ bool CModules::LoadModule(const CString& sModule, const CString& sArgs, CUser* p
|
||||
CModule* pModule = NULL;
|
||||
|
||||
if (pUser) {
|
||||
typedef CModule* (*fp)(void*, CUser* pUser,
|
||||
typedef CModule* (*fp)(ModHandle, CUser* pUser,
|
||||
const CString& sModName, const CString& sDataPath);
|
||||
fp Load = (fp) dlsym(p, "Load");
|
||||
|
||||
@@ -790,7 +790,7 @@ bool CModules::LoadModule(const CString& sModule, const CString& sArgs, CUser* p
|
||||
|
||||
pModule = Load(p, pUser, sModule, sDataPath);
|
||||
} else {
|
||||
typedef CModule* (*fp)(void*, const CString& sModName,
|
||||
typedef CModule* (*fp)(ModHandle, const CString& sModName,
|
||||
const CString& sDataPath);
|
||||
fp Load = (fp) dlsym(p, "Load");
|
||||
|
||||
@@ -866,7 +866,7 @@ bool CModules::UnloadModule(const CString& sModule, CString& sRetMsg) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void* p = pModule->GetDLL();
|
||||
ModHandle p = pModule->GetDLL();
|
||||
|
||||
if (p) {
|
||||
typedef void (*fp)(CModule*);
|
||||
@@ -929,7 +929,7 @@ bool CModules::GetModInfo(CModInfo& ModInfo, const CString& sModule) {
|
||||
|
||||
unsigned int uDLFlags = RTLD_LAZY | RTLD_LOCAL;
|
||||
|
||||
void* p = dlopen((sModPath).c_str(), uDLFlags);
|
||||
ModHandle p = dlopen((sModPath).c_str(), uDLFlags);
|
||||
|
||||
if (!p) {
|
||||
return false;
|
||||
|
||||
@@ -36,19 +36,21 @@ class CClient;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
typedef void* ModHandle;
|
||||
|
||||
#define MODCONSTRUCTOR(CLASS) \
|
||||
CLASS(void *pDLL, CUser* pUser, const CString& sModName, \
|
||||
CLASS(ModHandle pDLL, CUser* pUser, const CString& sModName, \
|
||||
const CString& sModPath) \
|
||||
: CModule(pDLL, pUser, sModName, sModPath)
|
||||
#define MODULEDEFS(CLASS, DESCRIPTION) \
|
||||
extern "C" { \
|
||||
CString GetDescription() { return DESCRIPTION; } \
|
||||
bool IsGlobal() { return false; } \
|
||||
CModule* Load(void* p, CUser* pUser, const CString& sModName, \
|
||||
CModule* Load(ModHandle p, CUser* pUser, const CString& sModName, \
|
||||
const CString& sModPath); \
|
||||
void Unload(CModule* pMod); double GetVersion(); } \
|
||||
double GetVersion() { return VERSION; } \
|
||||
CModule* Load(void* p, CUser* pUser, const CString& sModName, \
|
||||
CModule* Load(ModHandle p, CUser* pUser, const CString& sModName, \
|
||||
const CString& sModPath) \
|
||||
{ return new CLASS(p, pUser, sModName, sModPath); } \
|
||||
void Unload(CModule* pMod) { if (pMod) { delete pMod; } \
|
||||
@@ -57,17 +59,17 @@ class CClient;
|
||||
|
||||
// Global Module Macros
|
||||
#define GLOBALMODCONSTRUCTOR(CLASS) \
|
||||
CLASS(void *pDLL, const CString& sModName, const CString& sModPath) \
|
||||
CLASS(ModHandle pDLL, const CString& sModName, const CString& sModPath) \
|
||||
: CGlobalModule(pDLL, sModName, sModPath)
|
||||
#define GLOBALMODULEDEFS(CLASS, DESCRIPTION) \
|
||||
extern "C" { \
|
||||
CString GetDescription() { return DESCRIPTION; } \
|
||||
bool IsGlobal() { return true; } \
|
||||
CGlobalModule* Load(void* p, const CString& sModName, \
|
||||
CGlobalModule* Load(ModHandle p, const CString& sModName, \
|
||||
const CString& sModPath); \
|
||||
void Unload(CGlobalModule* pMod); double GetVersion(); } \
|
||||
double GetVersion() { return VERSION; } \
|
||||
CGlobalModule* Load(void* p, const CString& sModName, \
|
||||
CGlobalModule* Load(ModHandle p, const CString& sModName, \
|
||||
const CString& sModPath) \
|
||||
{ return new CLASS(p, sModName, sModPath); } \
|
||||
void Unload(CGlobalModule* pMod) { if (pMod) { delete pMod; } \
|
||||
@@ -203,9 +205,9 @@ protected:
|
||||
|
||||
class CModule {
|
||||
public:
|
||||
CModule(void* pDLL, CUser* pUser, const CString& sModName,
|
||||
CModule(ModHandle pDLL, CUser* pUser, const CString& sModName,
|
||||
const CString& sDataDir);
|
||||
CModule(void* pDLL, const CString& sModName, const CString& sDataDir);
|
||||
CModule(ModHandle pDLL, const CString& sModName, const CString& sDataDir);
|
||||
virtual ~CModule();
|
||||
|
||||
typedef enum {
|
||||
@@ -282,7 +284,7 @@ public:
|
||||
virtual EModRet OnTopic(CNick& Nick, CChan& Channel, CString& sTopic);
|
||||
virtual EModRet OnTimerAutoJoin(CChan& Channel);
|
||||
|
||||
void * GetDLL();
|
||||
ModHandle GetDLL();
|
||||
static double GetCoreVersion() { return VERSION; }
|
||||
|
||||
virtual bool PutIRC(const CString& sLine);
|
||||
@@ -355,7 +357,7 @@ protected:
|
||||
CString m_sDescription;
|
||||
vector<CTimer*> m_vTimers;
|
||||
vector<CSocket*> m_vSockets;
|
||||
void* m_pDLL;
|
||||
ModHandle m_pDLL;
|
||||
CSockManager* m_pManager;
|
||||
CUser* m_pUser;
|
||||
CClient* m_pClient;
|
||||
@@ -449,7 +451,7 @@ protected:
|
||||
|
||||
class CGlobalModule : public CModule {
|
||||
public:
|
||||
CGlobalModule(void* pDLL, const CString& sModName,
|
||||
CGlobalModule(ModHandle pDLL, const CString& sModName,
|
||||
const CString &sDataDir) : CModule(pDLL, sModName, sDataDir) {}
|
||||
virtual ~CGlobalModule() {}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user