From ddace4b7aeb7bb5b9008fa6879696b3443fe6a98 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 2 May 2015 15:53:19 +0000 Subject: code cleaning git-svn-id: http://svn.miranda-ng.org/main/trunk@13376 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/UserInfoEx/src/mir_contactqueue.cpp | 318 +++++++++------------------- plugins/UserInfoEx/src/mir_contactqueue.h | 75 ++----- plugins/UserInfoEx/src/mir_string.cpp | 39 ++-- 3 files changed, 143 insertions(+), 289 deletions(-) (limited to 'plugins') diff --git a/plugins/UserInfoEx/src/mir_contactqueue.cpp b/plugins/UserInfoEx/src/mir_contactqueue.cpp index c7c2e8da97..d07cc07213 100644 --- a/plugins/UserInfoEx/src/mir_contactqueue.cpp +++ b/plugins/UserInfoEx/src/mir_contactqueue.cpp @@ -20,31 +20,20 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "commonheaders.h" -/** - * This static helper function is used to sort the queue items by time - * beginning with the next upcoming item to call the Callback for. - * - * @param i1 - the first queue item - * @param i2 - the second queue item - * - * @return The function returns the time slack between the two items. - **/ static int QueueSortItems(const CQueueItem *i1, const CQueueItem *i2) { int rc = i1->check_time - i2->check_time; if (!rc) - { rc = i1->hContact != i2->hContact; - } + return rc; } -/** - * - * - **/ -CContactQueue::CContactQueue(int initialSize) - : _queue(initialSize, QueueSortItems) +///////////////////////////////////////////////////////////////////////////////////////// +// Constructor & destructor + +CContactQueue::CContactQueue(int initialSize) : + _queue(initialSize, QueueSortItems) { _hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); _status = RUNNING; @@ -52,38 +41,32 @@ CContactQueue::CContactQueue(int initialSize) mir_forkthread((pThreadFunc)CContactQueue::ThreadProc, this); } -/** - * - * - **/ CContactQueue::~CContactQueue() { if (_status == RUNNING) - { _status = STOPPING; - } + SetEvent(_hEvent); for (int count = 0; _status != STOPPED && ++count < 50;) - { Sleep(10); - } for (int i = 0; i < _queue.getCount(); i++) - { mir_free(_queue[i]); - } CloseHandle(_hEvent); } -/** - * This function removes all queue items. - * - * @param none - * - * @return nothing - **/ +void CContactQueue::Remove(int idx) +{ + CQueueItem *qi = _queue[idx]; + _queue.remove(idx); + mir_free(qi); +} + +///////////////////////////////////////////////////////////////////////////////////////// +// This function removes all queue items. + void CContactQueue::RemoveAll() { mir_cslock lck(_cs); @@ -93,275 +76,174 @@ void CContactQueue::RemoveAll() _queue.destroy(); } -/** - * This function removes all queue items for the hContact. - * - * @param hContact - the contact whose queue items to delete - * - * @return nothing - **/ +///////////////////////////////////////////////////////////////////////////////////////// +// This function removes all queue items for the hContact. + void CContactQueue::RemoveAll(MCONTACT hContact) { mir_cslock lck(_cs); - for (int i = _queue.getCount() - 1; i >= 0; --i) - { + for (int i = _queue.getCount() - 1; i >= 0; --i) { CQueueItem *qi = _queue[i]; - - if (qi->hContact == hContact) - { + if (qi->hContact == hContact) { _queue.remove(i); mir_free(qi); } } } -/** - * This function removes all queue items for the hContact considering the correct parameter. - * - * @param hContact - the contact whose queue items to delete - * @param param - a caller defined parameter passed to the callback function - * - * @return nothing - **/ +///////////////////////////////////////////////////////////////////////////////////////// +// This function removes all queue items for the hContact considering the correct parameter. + void CContactQueue::RemoveAllConsiderParam(MCONTACT hContact, PVOID param) { mir_cslock lck(_cs); - for (int i = _queue.getCount() - 1; i >= 0; --i) - { + for (int i = _queue.getCount() - 1; i >= 0; --i) { CQueueItem *qi = _queue[i]; - - if (qi->hContact == hContact && qi->param == param) - { + if (qi->hContact == hContact && qi->param == param) { _queue.remove(i); mir_free(qi); } } } -/** - * This method adds the desired new item. - * - * @param waitTime - the time to wait until the callback is desired to run - * @param hContact - the contact to perform the action for - * @param param - a caller defined parameter passed to the callback function - * - * @retval TRUE - The item is added to the queue successfully. - * @retval FALSE - The item is not added to the queue. - **/ +///////////////////////////////////////////////////////////////////////////////////////// +// This method adds the desired new item. + BOOL CContactQueue::Add(int waitTime, MCONTACT hContact, PVOID param) { - BOOL rc; - mir_cslock lck(_cs); - - rc = InternalAdd(waitTime, hContact, param); - - return rc; + return InternalAdd(waitTime, hContact, param); } -/** - * This method adds the desired new item only, if the queue does not yet contain - * an item for the contact. - * - * @param waitTime - the time to wait until the callback is desired to run - * @param hContact - the contact to perform the action for - * @param param - a caller defined parameter passed to the callback function - * - * @retval TRUE - The item is added to the queue successfully. - * @retval FALSE - The item is not added to the queue. - **/ +///////////////////////////////////////////////////////////////////////////////////////// +// This method adds the desired new item only, if the queue does not yet contain +// an item for the contact. + BOOL CContactQueue::AddIfDontHave(int waitTime, MCONTACT hContact, PVOID param) { - int i; - BOOL rc; - mir_cslock lck(_cs); - for (i = _queue.getCount() - 1; i >= 0; --i) - { + for (int i = _queue.getCount() - 1; i >= 0; --i) if (_queue[i]->hContact == hContact) - { - break; - } - } - - rc = (i == -1) ? InternalAdd(waitTime, hContact, param) : 0; + return FALSE; - return rc; + return InternalAdd(waitTime, hContact, param); } -/** - * This method removes all existing queue items for the contact and adds a new queue item - * for the given contact. This method might be used to move an existing entry, - * whose check_time has changed. - * - * @param waitTime - the time to wait until the callback is desired to run - * @param hContact - the contact to perform the action for - * @param param - a caller defined parameter passed to the callback function - * - * @retval TRUE - The item is added to the queue successfully. - * @retval FALSE - The item is not added to the queue. - **/ +///////////////////////////////////////////////////////////////////////////////////////// +// This method removes all existing queue items for the contact and adds a new queue item +// for the given contact. This method might be used to move an existing entry, +// whose check_time has changed. + BOOL CContactQueue::AddUnique(int waitTime, MCONTACT hContact, PVOID param) { - BOOL rc; - mir_cslock lck(_cs); RemoveAll(hContact); - rc = InternalAdd(waitTime, hContact, param); - - return rc; + return InternalAdd(waitTime, hContact, param); } -/** - * This method removes all existing queue items for the contact with the same parameter as @e param - * and adds a new queue item for the given contact. This method might be used to move an existing - * entry, whose check_time has changed. - * - * @param waitTime - the time to wait until the callback is desired to run - * @param hContact - the contact to perform the action for - * @param param - a caller defined parameter passed to the callback function - * - * @retval TRUE - The item is added to the queue successfully. - * @retval FALSE - The item is not added to the queue. - **/ +///////////////////////////////////////////////////////////////////////////////////////// +// This method removes all existing queue items for the contact with the same parameter as @e param +// and adds a new queue item for the given contact. This method might be used to move an existing +// entry, whose check_time has changed. + BOOL CContactQueue::AddUniqueConsiderParam(int waitTime, MCONTACT hContact, PVOID param) { - BOOL rc; - mir_cslock lck(_cs); RemoveAllConsiderParam(hContact, param); - rc = InternalAdd(waitTime, hContact, param); - - return rc; + return InternalAdd(waitTime, hContact, param); } -/** - * This member function really adds an item into the time sorted queue list. - * - * @param waitTime - the time to wait until the callback is desired to run - * @param hContact - the contact to perform the action for - * @param param - a caller defined parameter passed to the callback function - * - * @retval TRUE - The item is added to the queue successfully. - * @retval FALSE - The item is not added to the queue. - **/ +///////////////////////////////////////////////////////////////////////////////////////// +// This member function really adds an item into the time sorted queue list. + BOOL CContactQueue::InternalAdd(int waitTime, MCONTACT hContact, PVOID param) { - BOOL rc; CQueueItem *qi = (CQueueItem *) mir_alloc(sizeof(CQueueItem)); - qi->hContact = hContact; qi->check_time = GetTickCount() + waitTime; qi->param = param; - rc = _queue.insert(qi); + int rc = _queue.insert(qi); if (!rc) - { mir_free(qi); - } SetEvent(_hEvent); - return rc; } -/** - * This is the real thread callback function. As long as _status - * is set to RUNNING it looks for items in the queue to perform - * the _pfnCallback function on them. If the queue is empty or the - * next upcoming item is located in the future, the thread is suspended - * in the meanwhile. - * - * @param none - * - * @return nothing - **/ +///////////////////////////////////////////////////////////////////////////////////////// +// This is the real thread callback function. As long as _status +// is set to RUNNING it looks for items in the queue to perform +// the _pfnCallback function on them. If the queue is empty or the +// next upcoming item is located in the future, the thread is suspended +// in the meanwhile. + void CContactQueue::Thread() { - while (_status == RUNNING) - { + while (_status == RUNNING) { ResetEvent(_hEvent); - mir_cslock lck(_cs); + mir_cslockfull lck(_cs); - if (_queue.getCount() <= 0) - { + if (_queue.getCount() <= 0) { // can be used by a derivant OnEmpty(); + lck.unlock(); Suspend(INFINITE); + continue; } - else - { - // Take a look at first queue item - CQueueItem *qi = _queue[0]; - - int dt = qi->check_time - GetTickCount(); - if (dt > 0) - { - Suspend(dt); - } - else - { - // Will request this queue item - _queue.remove(0); - - Callback(qi->hContact, qi->param); - - mir_free(qi); - } + + // Take a look at first queue item + CQueueItem *qi = _queue[0]; + + int dt = qi->check_time - GetTickCount(); + if (dt > 0) { + lck.unlock(); + Suspend(dt); + continue; } + + // Will request this queue item + _queue.remove(0); + lck.unlock(); + + Callback(qi->hContact, qi->param); + mir_free(qi); } _status = STOPPED; } -/** - * This method suspends the worker thread for the given ammount of time. - * - * @param time - milliseconds to suspend the thread for - * - * @return nothing - **/ +///////////////////////////////////////////////////////////////////////////////////////// +// This method suspends the worker thread for the given ammount of time. + void CContactQueue::Suspend(int time) const { if (_status == RUNNING) - { WaitForSingleObject(_hEvent, time); - } } -/** - * This method resumes the worker thread and immitiatly goes on with the next entry. - * - * @param none - * - * @return nothing - **/ +///////////////////////////////////////////////////////////////////////////////////////// +// This method resumes the worker thread and immitiatly goes on with the next entry. + void CContactQueue::ContinueWithNext() { - if (_status == RUNNING) - { - int i, c, dt; - - mir_cslock lck(_cs); - - c = _queue.getCount(); - if (c > 0) - { - dt = _queue[0]->check_time - GetTickCount() - 3000; - if (dt > 0) - { - for (i = 0; i < c; i++) - { - _queue[i]->check_time -= dt; - } - } - } - SetEvent(_hEvent); + if (_status != RUNNING) + return; + + mir_cslock lck(_cs); + + int c = _queue.getCount(); + if (c > 0) { + int dt = _queue[0]->check_time - GetTickCount() - 3000; + if (dt > 0) + for (int i = 0; i < c; i++) + _queue[i]->check_time -= dt; } + SetEvent(_hEvent); } diff --git a/plugins/UserInfoEx/src/mir_contactqueue.h b/plugins/UserInfoEx/src/mir_contactqueue.h index 32ccdd1eaa..efd9fbd1dd 100644 --- a/plugins/UserInfoEx/src/mir_contactqueue.h +++ b/plugins/UserInfoEx/src/mir_contactqueue.h @@ -33,10 +33,8 @@ struct CQueueItem PVOID param; }; -/** - * - * - **/ +///////////////////////////////////////////////////////////////////////////////////////// + class CContactQueue { public: @@ -48,33 +46,23 @@ public: STOPPED = 2 }; - CContactQueue (int initialSize = 10); - ~CContactQueue (); - - inline int Size () const { return _queue.getCount();} - inline int Remove (int idx) { mir_free(_queue[idx]); return _queue.remove(idx);} - inline CQueueItem* Get (int idx) const { return _queue[idx];} - + CContactQueue(int initialSize = 10); + ~CContactQueue(); + __forceinline int Size() const { + return _queue.getCount(); + } + + CQueueItem* Get(int idx) const { + return _queue[idx]; + } + void RemoveAll(); - /** - * This function removes all queue items for the hContact. - * - * @param hContact - the contact whose queue items to delete - * - * @return nothing - **/ + // This function removes all queue items for the hContact. void RemoveAll(MCONTACT hContact); - /** - * This function removes all queue items for the hContact considering the correct parameter. - * - * @param hContact - the contact whose queue items to delete - * @param param - a caller defined parameter passed to the callback function - * - * @return nothing - **/ + // This function removes all queue items for the hContact considering the correct parameter. void RemoveAllConsiderParam(MCONTACT hContact, PVOID param); /** @@ -128,19 +116,12 @@ public: **/ BOOL AddUniqueConsiderParam (int waitTime, MCONTACT hContact, PVOID param = NULL); - /** - * This method resumes the worker thread and immitiatly goes on with the next entry. - * - * @param none - * - * @return nothing - **/ + // This method resumes the worker thread and immitiatly goes on with the next entry. void ContinueWithNext(); protected: - - virtual void OnEmpty () {}; - virtual void Callback (MCONTACT hContact, PVOID param) = 0; + virtual void OnEmpty() {}; + virtual void Callback(MCONTACT hContact, PVOID param) = 0; /** * This is the real thread callback function. As long as _status @@ -155,32 +136,18 @@ protected: **/ void Thread(); - /** - * This is a static method to redirect the thread's callback function - * to the desired class object. - * - * @param obj - pointer to the object (instance) of CContactQueue - * - * @return nothing - **/ + // This is a static method to redirect the thread's callback function + // to the desired class object. static void ThreadProc(CContactQueue* obj) { obj->Thread(); } - /** - * This method suspends the worker thread for the given ammount of time. - * - * @param time - milliseconds to suspend the thread for - * - * @return nothing - **/ + // This method suspends the worker thread for the given ammount of time. void Suspend(int time) const; private: - LIST _queue; - mir_cs _cs; HANDLE _hEvent; EQueueStatus _status; @@ -196,6 +163,8 @@ private: * @retval FALSE - The item is not added to the queue. **/ BOOL InternalAdd(int waitTime, MCONTACT hContact, PVOID param); + + void Remove(int idx); }; #endif // __CONTACTASYNCQUEUE_H__ \ No newline at end of file diff --git a/plugins/UserInfoEx/src/mir_string.cpp b/plugins/UserInfoEx/src/mir_string.cpp index 0bfa1925d6..0e43a41517 100644 --- a/plugins/UserInfoEx/src/mir_string.cpp +++ b/plugins/UserInfoEx/src/mir_string.cpp @@ -21,48 +21,50 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "commonheaders.h" -char *mir_strncat_c(char *pszDest, const char cSrc) +char* mir_strncat_c(char *pszDest, const char cSrc) { - char *pszRet; size_t size = 2; - if (pszDest != NULL) size += strlen(pszDest); //cSrc = 1 + 1 forNULL temination - pszRet = (char *)mir_realloc(pszDest, (sizeof(char) * size)); + + char *pszRet = (char *)mir_realloc(pszDest, (sizeof(char) * size)); if (pszRet == NULL) return NULL; + pszRet[size - 2] = cSrc; pszRet[size - 1] = 0; return pszRet; } -wchar_t *mir_wcsncat_c(wchar_t *pwszDest, const wchar_t wcSrc) { - wchar_t *pwszRet; +wchar_t* mir_wcsncat_c(wchar_t *pwszDest, const wchar_t wcSrc) +{ size_t size = 2; - if (pwszDest != NULL) size += wcslen(pwszDest); //cSrc = 1 + 1 forNULL temination - pwszRet = (wchar_t *)mir_realloc(pwszDest, (sizeof(wchar_t) * size)); + + wchar_t *pwszRet = (wchar_t *)mir_realloc(pwszDest, (sizeof(wchar_t) * size)); if (pwszRet == NULL) return NULL; + pwszRet[size - 2] = wcSrc; pwszRet[size - 1] = 0; return pwszRet; } -char *mir_strnerase(char *pszDest, size_t sizeFrom, size_t sizeTo) { +char* mir_strnerase(char *pszDest, size_t sizeFrom, size_t sizeTo) +{ char *pszReturn = NULL; size_t sizeNew, sizeLen = strlen(pszDest); if (sizeFrom >= 0 && sizeFrom < sizeLen && sizeTo >= 0 && sizeTo <= sizeLen && sizeFrom < sizeTo) { sizeNew = sizeLen - (sizeTo - sizeFrom); size_t sizeCopy = sizeNew - sizeFrom; - pszReturn = (char *) mir_alloc(sizeNew + 1); + pszReturn = (char *)mir_alloc(sizeNew + 1); memcpy(pszReturn, pszDest, sizeFrom); memcpy(pszReturn + sizeFrom, pszDest + sizeTo, sizeCopy); pszReturn[sizeNew] = 0; } - pszDest = (char *) mir_realloc(pszDest, sizeNew + 1); + pszDest = (char *)mir_realloc(pszDest, sizeNew + 1); pszDest = mir_strcpy(pszDest, pszReturn); mir_free(pszReturn); return pszDest; @@ -72,11 +74,12 @@ int mir_IsEmptyA(char *str) { if (str == NULL || str[0] == 0) return 1; + int i = 0; while (str[i]) { - if (str[i]!=' ' && - str[i]!='\r' && - str[i]!='\n') + if (str[i] != ' ' && + str[i] != '\r' && + str[i] != '\n') return 0; i++; } @@ -87,14 +90,14 @@ int mir_IsEmptyW(wchar_t *str) { if (str == NULL || str[0] == 0) return 1; + int i = 0; while (str[i]) { - if (str[i]!=' ' && - str[i]!='\r' && - str[i]!='\n') + if (str[i] != ' ' && + str[i] != '\r' && + str[i] != '\n') return 0; i++; } return 1; } - -- cgit v1.2.3