diff options
author | Gluzskiy Alexandr <sss123next@list.ru> | 2010-07-16 13:59:44 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss123next@list.ru> | 2010-07-16 13:59:44 +0300 |
commit | c4a68366af174e654d5735f244bf3beb8a81b143 (patch) | |
tree | 3a4540b0a57b02729d4fe9a6910981a732328322 | |
parent | 369c4ad5aedc204c4478381122880f3688fb34b8 (diff) |
used list<> from stl instead of my own implementation
-rw-r--r-- | commonheaders.h | 3 | ||||
-rw-r--r-- | init.cpp | 4 | ||||
-rw-r--r-- | juick.vcproj | 20 | ||||
-rw-r--r-- | utilities.cpp | 117 | ||||
-rw-r--r-- | utilities.h | 1 |
5 files changed, 67 insertions, 78 deletions
diff --git a/commonheaders.h b/commonheaders.h index 32737a7..3214eb2 100644 --- a/commonheaders.h +++ b/commonheaders.h @@ -20,6 +20,9 @@ #include <malloc.h> #include <time.h> +#include <list> +using std::list; + #define MIRANDA_VER 0x0800 #include <newpluginapi.h> @@ -16,7 +16,6 @@ #include "commonheaders.h" - #define PLUGIN_NAME "juick" HINSTANCE hInst; @@ -24,8 +23,7 @@ static HANDLE hAccountsChanges, hDbContactAdded; PLUGINLINK *pluginLink; static int OnModulesLoaded(WPARAM wParam,LPARAM lParam); extern char *date(); -JabberAccount Accounts; -int JabberAccountsCount = 0; +list <JabberAccount*> Accounts; struct MM_INTERFACE mmi; struct UTF8_INTERFACE utfi; diff --git a/juick.vcproj b/juick.vcproj index 041fbb8..eef7c93 100644 --- a/juick.vcproj +++ b/juick.vcproj @@ -154,7 +154,8 @@ MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
- PrecompiledHeaderFile=".\Debug/testplug.pch"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderThrough="commonheaders.h"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
@@ -610,10 +611,27 @@ <File
RelativePath=".\init.cpp"
>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderThrough="commonheaders.h"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath=".\main.cpp"
>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="0"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath=".\options.cpp"
diff --git a/utilities.cpp b/utilities.cpp index c6be654..c21a919 100644 --- a/utilities.cpp +++ b/utilities.cpp @@ -30,51 +30,35 @@ TCHAR* __stdcall UniGetContactSettingUtf(HANDLE hContact, const char *szModule,c return szRes; } -extern JabberAccount Accounts; - -int GetAccountsCount(); +extern list <JabberAccount*> Accounts; int GetJabberInterface(WPARAM, LPARAM) //get interface for all jabber accounts, options later { - IJabberInterface *JIftmp[50]; //should it be dynamic ? int count = 0; PROTOACCOUNT **accounts; - JabberAccount *acc = &Accounts; - if(!acc) - acc = new(JabberAccount); ProtoEnumAccounts(&count, &accounts); - acc->AccountNumber = 0; - int i; - for(i = 0; i < count; i++) //get only jabber accounts from all accounts + list <JabberAccount*>::iterator p; + Accounts.push_back(new JabberAccount); + p = Accounts.begin(); + (*p)->AccountNumber = 0; + for(int i = 0; i < count; i++) //get only jabber accounts from all accounts { char *tmp = mir_u2a(accounts[i]->tszAccountName); - JIftmp[i] = getJabberApi(tmp); - if(!acc) - acc = new(JabberAccount); - if(JIftmp[i]) + IJabberInterface *JIftmp = getJabberApi(tmp); + int a = 0; + if(JIftmp) { - acc->JabberInterface = JIftmp[i]; - acc->AccountName = accounts[i]->tszAccountName; - acc->AccountNumber = i; - acc = acc->next; - acc = new(JabberAccount); + (*p)->JabberInterface = JIftmp; + (*p)->AccountName = accounts[i]->tszAccountName; + (*p)->AccountNumber = a; + (*p)->hIqHandler = (*p)->hMessageHandler = (*p)->hPrescenseHandler = INVALID_HANDLE_VALUE; + a++; + p++; + Accounts.push_back(new JabberAccount); } mir_free(tmp); } - if(GetAccountsCount() > i) //cleanup unused accounts - { - JabberAccount *acc = &Accounts, *acc2; - for(int a = 0; a <= i; a++) - acc=acc->next; - while(acc) - { - acc2 = acc; - acc = acc->next; - delete acc2; - } - } - if(!GetAccountsCount()) - return 1; //no jabber accounts found + Accounts.pop_back(); return 0; } @@ -84,77 +68,73 @@ static JABBER_HANDLER_FUNC IqHandler(IJabberInterface *ji, HXML node, void *pUse int HandleDbNewContact(WPARAM w, LPARAM l) { - for(int i = 0; i < GetAccountsCount(); i++) + list <JabberAccount*>::iterator p = Accounts.begin(); + for(unsigned int i = 0; i < Accounts.size(); i++, p++) { - JabberAccount *acc = &Accounts; - if(!acc) + if(!(*p)) break; - IJabberSysInterface *ijsys = acc->JabberInterface->Sys(); + IJabberSysInterface *ijsys = (*p)->JabberInterface->Sys(); LPTSTR tmp = ijsys->ContactToJID(HANDLE(w)); if(tmp) { if(_tcsstr(_T(JUICK_JID), tmp)) { - if(!acc->hPrescenseHandler && !acc->hMessageHandler && !acc->hIqHandler) + if(!(*p)->hPrescenseHandler && !(*p)->hMessageHandler && !(*p)->hIqHandler) { - IJabberNetInterface *ijnet = acc->JabberInterface->Net(); - acc->hPrescenseHandler = ijnet->AddPresenceHandler((JABBER_HANDLER_FUNC)PrescenseHandler); - acc->hMessageHandler = ijnet->AddMessageHandler((JABBER_HANDLER_FUNC)MessageHandler, JABBER_MESSAGE_TYPE_ANY, 0, 0); - acc->hIqHandler = ijnet->AddIqHandler((JABBER_HANDLER_FUNC)IqHandler, JABBER_IQ_TYPE_ANY, 0, 0); + IJabberNetInterface *ijnet = (*p)->JabberInterface->Net(); + (*p)->hPrescenseHandler = ijnet->AddPresenceHandler((JABBER_HANDLER_FUNC)PrescenseHandler); + (*p)->hMessageHandler = ijnet->AddMessageHandler((JABBER_HANDLER_FUNC)MessageHandler, JABBER_MESSAGE_TYPE_ANY, 0, 0); + (*p)->hIqHandler = ijnet->AddIqHandler((JABBER_HANDLER_FUNC)IqHandler, JABBER_IQ_TYPE_ANY, 0, 0); } } } - acc = acc->next; } return 0; } int HandleDbContactDeleted(WPARAM w, LPARAM l) { - for(int i = 0; i < GetAccountsCount(); i++) + list <JabberAccount*>::iterator p = Accounts.begin(); + for(unsigned int i = 0; i < Accounts.size(); i++, p++) { - JabberAccount *acc = &Accounts; - if(!acc) + if(!(*p)) break; - IJabberSysInterface *ijsys = acc->JabberInterface->Sys(); + IJabberSysInterface *ijsys = (*p)->JabberInterface->Sys(); LPTSTR tmp = ijsys->ContactToJID(HANDLE(w)); if(tmp) { if(_tcsstr(_T(JUICK_JID), tmp)) { - if(acc->hPrescenseHandler && acc->hMessageHandler && acc->hIqHandler) + if((*p)->hPrescenseHandler && (*p)->hMessageHandler && (*p)->hIqHandler) { - IJabberNetInterface *ijnet = acc->JabberInterface->Net(); - ijnet->RemoveHandler(acc->hPrescenseHandler); - ijnet->RemoveHandler(acc->hMessageHandler); - ijnet->RemoveHandler(acc->hIqHandler); + IJabberNetInterface *ijnet = (*p)->JabberInterface->Net(); + ijnet->RemoveHandler((*p)->hPrescenseHandler); + ijnet->RemoveHandler((*p)->hMessageHandler); + ijnet->RemoveHandler((*p)->hIqHandler); } } } - acc = acc->next; } return 0; } void FindJuickAccounts() { - - for(int i = 0; i < GetAccountsCount(); i++) + list <JabberAccount*>::iterator p = Accounts.begin(); + for(unsigned int i = 0; i < Accounts.size(); i++, p++) { - JabberAccount *acc = &Accounts; - if(!acc) + if(!(*p)) break; - IJabberSysInterface *ijsys = acc->JabberInterface->Sys(); + IJabberSysInterface *ijsys = (*p)->JabberInterface->Sys(); if(ijsys->ContactFromJID(_T(JUICK_JID))) //i should use this contact handler { - if(!acc->hPrescenseHandler && !acc->hMessageHandler && !acc->hIqHandler) + if((*p)->hPrescenseHandler == INVALID_HANDLE_VALUE && (*p)->hMessageHandler == INVALID_HANDLE_VALUE && (*p)->hIqHandler == INVALID_HANDLE_VALUE) { - IJabberNetInterface *ijnet = acc->JabberInterface->Net(); - acc->hPrescenseHandler = ijnet->AddPresenceHandler((JABBER_HANDLER_FUNC)PrescenseHandler); - acc->hMessageHandler = ijnet->AddMessageHandler((JABBER_HANDLER_FUNC)MessageHandler, JABBER_MESSAGE_TYPE_ANY, 0, 0); - acc->hIqHandler = ijnet->AddIqHandler((JABBER_HANDLER_FUNC)IqHandler, JABBER_IQ_TYPE_ANY, 0, 0); + IJabberNetInterface *ijnet = (*p)->JabberInterface->Net(); + (*p)->hPrescenseHandler = ijnet->AddPresenceHandler((JABBER_HANDLER_FUNC)PrescenseHandler); + (*p)->hMessageHandler = ijnet->AddMessageHandler((JABBER_HANDLER_FUNC)MessageHandler, JABBER_MESSAGE_TYPE_ANY, 0, 0); + (*p)->hIqHandler = ijnet->AddIqHandler((JABBER_HANDLER_FUNC)IqHandler, JABBER_IQ_TYPE_ANY, 0, 0); } } - acc = acc->next; } } @@ -186,15 +166,6 @@ JabberAccount::JabberAccount() } -int GetAccountsCount() -{ - int i; - JabberAccount *tmp = &Accounts; - for(i = 0; tmp; tmp=tmp->next, i++) - ; - return i; -} - char *date() { diff --git a/utilities.h b/utilities.h index 9ddf044..e31e35f 100644 --- a/utilities.h +++ b/utilities.h @@ -24,7 +24,6 @@ public: int AccountNumber; IJabberInterface *JabberInterface; HJHANDLER hPrescenseHandler, hMessageHandler, hIqHandler; - class JabberAccount *next; BOOL operator !(); }; |