From bcb27264ba737778e5d3edad36088bacf74f0236 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 9 Apr 2013 20:03:46 +0000 Subject: - short function names allows to write database loops in one string; - 'continue' operator can be used then; - multiple bugs fixed in clists; - code becomes much more compact; git-svn-id: http://svn.miranda-ng.org/main/trunk@4403 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Variables/src/contact.cpp | 28 +++++++++------------------ plugins/Variables/src/parse_miranda.cpp | 34 +++++++++++++-------------------- 2 files changed, 22 insertions(+), 40 deletions(-) (limited to 'plugins/Variables/src') diff --git a/plugins/Variables/src/contact.cpp b/plugins/Variables/src/contact.cpp index c281d02ed3..faec6a8f42 100644 --- a/plugins/Variables/src/contact.cpp +++ b/plugins/Variables/src/contact.cpp @@ -271,22 +271,18 @@ int getContactFromString( CONTACTSINFO* ci ) LeaveCriticalSection(&csContactCache); /* contact was not in cache, do a search */ - hContact = db_find_first(); - while (hContact != NULL) { + for (HANDLE hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) { szFind = NULL; bMatch = FALSE; ZeroMemory(&dbv, sizeof(DBVARIANT)); szProto = GetContactProto(hContact); - if (szProto == NULL) { - hContact = db_find_next(hContact); + if (szProto == NULL) continue; - } + // (exact) - if (ci->flags&CI_PROTOID) - { + if (ci->flags & CI_PROTOID) { cInfo = getContactInfoT(CNF_UNIQUEID, hContact); - if (cInfo == NULL) - { + if (cInfo == NULL) { // cInfo = (TCHAR*)mir_alloc(32); _stprintf(cInfo, _T("%p"), hContact); @@ -295,22 +291,17 @@ int getContactFromString( CONTACTSINFO* ci ) { wsprintf(szFind, _T("<%s:%s>"), _T(PROTOID_HANDLE), cInfo); if (!_tcsncmp(tszContact, szFind, _tcslen(tszContact))) - { bMatch = TRUE; - } + mir_free(cInfo); mir_free(szFind); } } - else - { + else { szFind = (TCHAR*)mir_alloc((_tcslen(cInfo) + strlen(szProto) + 4)*sizeof(TCHAR)); - if (szFind != NULL) - { + if (szFind != NULL) { tszProto = mir_a2t(szProto); - - if ((tszProto != NULL) && (szFind != NULL)) - { + if ((tszProto != NULL) && (szFind != NULL)) { wsprintf(szFind, _T("<%s:%s>"), tszProto, cInfo); mir_free(cInfo); mir_free(tszProto); @@ -401,7 +392,6 @@ int getContactFromString( CONTACTSINFO* ci ) ci->hContacts[count] = hContact; count += 1; } - hContact=db_find_next(hContact); } if (count == 1) { /* cache the found result */ diff --git a/plugins/Variables/src/parse_miranda.cpp b/plugins/Variables/src/parse_miranda.cpp index 6d14bf7cb3..c686037325 100644 --- a/plugins/Variables/src/parse_miranda.cpp +++ b/plugins/Variables/src/parse_miranda.cpp @@ -546,14 +546,13 @@ static HANDLE findDbEvent(HANDLE hContact, HANDLE hDbEvent, int flags) hDbEvent = db_event_prev(hDbEvent); } else { - HANDLE hMatchEvent, hSearchEvent, hSearchContact; + HANDLE hMatchEvent, hSearchEvent; DWORD matchTimestamp, priorTimestamp; - hMatchEvent = hSearchEvent = hSearchContact = NULL; + hMatchEvent = hSearchEvent = NULL; matchTimestamp = priorTimestamp = 0; if (flags & DBE_FIRST) { - hSearchContact = db_find_first(); - do { + for (HANDLE hSearchContact = db_find_first(); hSearchContact; hSearchContact = db_find_next(hSearchContact)) { hSearchEvent = findDbEvent(hSearchContact, NULL, flags); dbe.cbBlob = 0; if (!db_event_get(hSearchEvent, &dbe)) { @@ -562,13 +561,11 @@ static HANDLE findDbEvent(HANDLE hContact, HANDLE hDbEvent, int flags) matchTimestamp = dbe.timestamp; } } - hSearchContact = db_find_next(hSearchContact); - } while (hSearchContact); + } hDbEvent = hMatchEvent; } - else if (flags&DBE_LAST) { - hSearchContact = db_find_first(); - do { + else if (flags & DBE_LAST) { + for (HANDLE hSearchContact = db_find_first(); hSearchContact; hSearchContact = db_find_next(hSearchContact)) { hSearchEvent = findDbEvent(hSearchContact, NULL, flags); dbe.cbBlob = 0; if (!db_event_get(hSearchEvent, &dbe)) { @@ -577,16 +574,14 @@ static HANDLE findDbEvent(HANDLE hContact, HANDLE hDbEvent, int flags) matchTimestamp = dbe.timestamp; } } - hSearchContact = db_find_next(hSearchContact); - } while (hSearchContact); + } hDbEvent = hMatchEvent; } - else if (flags&DBE_NEXT) { + else if (flags & DBE_NEXT) { dbe.cbBlob = 0; if (!db_event_get(hDbEvent, &dbe)) { priorTimestamp = dbe.timestamp; - hSearchContact = db_find_first(); - do { + for (HANDLE hSearchContact = db_find_first(); hSearchContact; hSearchContact = db_find_next(hSearchContact)) { hSearchEvent = findDbEvent(hSearchContact, hDbEvent, flags); dbe.cbBlob = 0; if (!db_event_get(hSearchEvent, &dbe)) { @@ -595,16 +590,14 @@ static HANDLE findDbEvent(HANDLE hContact, HANDLE hDbEvent, int flags) matchTimestamp = dbe.timestamp; } } - hSearchContact = db_find_next(hSearchContact); - } while (hSearchContact); + } hDbEvent = hMatchEvent; } } - else if (flags&DBE_PREV) { + else if (flags & DBE_PREV) { if (!db_event_get(hDbEvent, &dbe)) { priorTimestamp = dbe.timestamp; - hSearchContact = db_find_first(); - do { + for (HANDLE hSearchContact = db_find_first(); hSearchContact; hSearchContact = db_find_next(hSearchContact)) { hSearchEvent = findDbEvent(hSearchContact, hDbEvent, flags); dbe.cbBlob = 0; if (!db_event_get(hSearchEvent, &dbe)) { @@ -613,8 +606,7 @@ static HANDLE findDbEvent(HANDLE hContact, HANDLE hDbEvent, int flags) matchTimestamp = dbe.timestamp; } } - hSearchContact = db_find_next(hSearchContact); - } while (hSearchContact); + } hDbEvent = hMatchEvent; } } -- cgit v1.2.3