From 2b30685427500c9eedac4c0c4862b32af144a90c Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 13 May 2020 16:09:27 +0300 Subject: kinda first working version of database event cursors --- include/m_database.h | 10 ++-- include/m_db_int.h | 8 +-- libs/win32/mir_app.lib | Bin 206130 -> 205978 bytes libs/win32/mir_core.lib | Bin 466564 -> 466640 bytes libs/win64/mir_app.lib | Bin 201736 -> 201576 bytes libs/win64/mir_core.lib | Bin 471474 -> 471552 bytes plugins/Dbx_mdbx/src/dbevents.cpp | 105 +++++++++++++++++++----------------- plugins/Dbx_mdbx/src/dbintf.h | 21 +------- plugins/Dbx_sqlite/src/dbevents.cpp | 12 ++--- plugins/Dbx_sqlite/src/dbintf.h | 6 +-- plugins/NewStory/src/history.cpp | 86 ++++++++++++++--------------- src/mir_app/src/MDatabaseCommon.cpp | 4 +- src/mir_app/src/mir_app.def | 4 +- src/mir_app/src/mir_app64.def | 4 +- src/mir_core/src/db.cpp | 8 +-- src/mir_core/src/mir_core.def | 6 +-- src/mir_core/src/mir_core64.def | 6 +-- 17 files changed, 136 insertions(+), 144 deletions(-) diff --git a/include/m_database.h b/include/m_database.h index 03f99ee21e..c47f3ef872 100644 --- a/include/m_database.h +++ b/include/m_database.h @@ -707,13 +707,11 @@ class MIR_CORE_EXPORT EventCursor : public MZeroedObject friend class EventIterator; protected: - DBEVENTINFO &dbei; MCONTACT hContact; public: - EventCursor(MCONTACT _1, DBEVENTINFO &_2) : - hContact(_1), - dbei(_2) + EventCursor(MCONTACT _1) : + hContact(_1) { } virtual ~EventCursor(); @@ -752,8 +750,8 @@ public: } }; -MIR_CORE_DLL(EventCursor*) Events(MCONTACT, DBEVENTINFO &); -MIR_CORE_DLL(EventCursor*) EventsRev(MCONTACT, DBEVENTINFO &); +MIR_CORE_DLL(EventCursor*) Events(MCONTACT, MEVENT iStartEvent = 0); +MIR_CORE_DLL(EventCursor*) EventsRev(MCONTACT, MEVENT iStartEvent = 0); }; diff --git a/include/m_db_int.h b/include/m_db_int.h index bf9823484c..d6ca63d206 100644 --- a/include/m_db_int.h +++ b/include/m_db_int.h @@ -134,8 +134,8 @@ interface MIR_APP_EXPORT MIDatabase STDMETHOD_(MEVENT, GetEventById)(LPCSTR szModule, LPCSTR szId) PURE; STDMETHOD_(BOOL, SetEventId)(LPCSTR szModule, MEVENT, LPCSTR szId) PURE; - STDMETHOD_(DB::EventCursor*, EventCursor)(MCONTACT hContact, DBEVENTINFO &dbei) PURE; - STDMETHOD_(DB::EventCursor*, EventCursorRev)(MCONTACT hContact, DBEVENTINFO &dbei) PURE; + STDMETHOD_(DB::EventCursor*, EventCursor)(MCONTACT hContact, MEVENT hDbEvent) PURE; + STDMETHOD_(DB::EventCursor*, EventCursorRev)(MCONTACT hContact, MEVENT hDbEvent) PURE; }; ///////////////////////////////////////////////////////////////////////////////////////// @@ -188,8 +188,8 @@ public: STDMETHODIMP_(BOOL) Compact(void) override; STDMETHODIMP_(BOOL) Backup(LPCWSTR) override; - STDMETHODIMP_(DB::EventCursor*) EventCursor(MCONTACT hContact, DBEVENTINFO &dbei) override; - STDMETHODIMP_(DB::EventCursor*) EventCursorRev(MCONTACT hContact, DBEVENTINFO &dbei) override; + STDMETHODIMP_(DB::EventCursor*) EventCursor(MCONTACT hContact, MEVENT hDbEvent) override; + STDMETHODIMP_(DB::EventCursor*) EventCursorRev(MCONTACT hContact, MEVENT hDbEvent) override; }; #pragma warning(pop) diff --git a/libs/win32/mir_app.lib b/libs/win32/mir_app.lib index 5eba2a03e5..9713eb8551 100644 Binary files a/libs/win32/mir_app.lib and b/libs/win32/mir_app.lib differ diff --git a/libs/win32/mir_core.lib b/libs/win32/mir_core.lib index 29c0755486..4353410b14 100644 Binary files a/libs/win32/mir_core.lib and b/libs/win32/mir_core.lib differ diff --git a/libs/win64/mir_app.lib b/libs/win64/mir_app.lib index c50cd2a11c..fb0c676fce 100644 Binary files a/libs/win64/mir_app.lib and b/libs/win64/mir_app.lib differ diff --git a/libs/win64/mir_core.lib b/libs/win64/mir_core.lib index 9c86219360..30d44a40ef 100644 Binary files a/libs/win64/mir_core.lib and b/libs/win64/mir_core.lib differ diff --git a/plugins/Dbx_mdbx/src/dbevents.cpp b/plugins/Dbx_mdbx/src/dbevents.cpp index e435e4b975..f065989221 100644 --- a/plugins/Dbx_mdbx/src/dbevents.cpp +++ b/plugins/Dbx_mdbx/src/dbevents.cpp @@ -623,41 +623,66 @@ MEVENT CDbxMDBX::FindPrevEvent(MCONTACT contactID, MEVENT hDbEvent) ///////////////////////////////////////////////////////////////////////////////////////// // Event cursors -CMdbxEventCursor::CMdbxEventCursor(CDbxMDBX *pDb, MCONTACT hContact, DBEVENTINFO &dbei, bool bForward) : - EventCursor(hContact, dbei), - m_bForward(bForward) +class CMdbxEventCursor : public DB::EventCursor { - mdbx_txn_begin(pDb->m_env, nullptr, MDBX_RDONLY, &m_txn_ro); - mdbx_cursor_open(m_txn_ro, pDb->m_dbEventsSort, &m_cursor); - - m_key.hContact = hContact; - if (bForward) { - m_key.hEvent = 0; - m_key.ts = 0; - } - else { - m_key.hEvent = 0xFFFFFFFF; - m_key.ts = 0xFFFFFFFFFFFFFFFF; + friend class CDbxMDBX; + CDbxMDBX *m_pOwner; + + bool m_bForward, m_bFirst = true; + DBCachedContact *m_cc; + DBEventSortingKey m_key; + +public: + CMdbxEventCursor(class CDbxMDBX *pDb, DBCachedContact *cc, bool bForward) : + EventCursor(cc->contactID), + m_pOwner(pDb), + m_bForward(bForward), + m_cc(cc) + { + m_key.hContact = hContact; + if (bForward) { + m_key.hEvent = 0; + m_key.ts = 0; + } + else { + m_key.hEvent = 0xFFFFFFFF; + m_key.ts = 0xFFFFFFFFFFFFFFFF; + } } -} -CMdbxEventCursor::~CMdbxEventCursor() -{ - if (m_cursor) - mdbx_cursor_close(m_cursor); -} + MEVENT FetchNext() override + { + MDBX_cursor_op op; + if (m_bFirst) { + op = MDBX_SET_RANGE; + m_bFirst = false; + } + else { + op = (m_bForward) ? MDBX_NEXT : MDBX_PREV; + if (m_key.hEvent != m_cc->t_evLast) + return 0; + } -MEVENT CMdbxEventCursor::FetchNext() -{ - MDBX_val key = { &m_key, sizeof(m_key) }, data; - if (mdbx_cursor_get(*this, &key, &data, m_bForward ? MDBX_NEXT : MDBX_PREV) != MDBX_SUCCESS) - return 0; + txn_ptr_ro txn(m_pOwner->m_txn_ro); - const DBEventSortingKey *pKey = (const DBEventSortingKey *)key.iov_base; - return (pKey->hContact == hContact) ? pKey->hEvent : 0; -} + MDBX_val key = { &m_key, sizeof(m_key) }, data; + if (mdbx_cursor_get(m_pOwner->m_curEventsSort, &key, &data, op) != MDBX_SUCCESS) + return 0; + + const DBEventSortingKey *pKey = (const DBEventSortingKey *)key.iov_base; + if (pKey->hContact != hContact) { + m_cc->t_tsLast = 0; + return m_cc->t_evLast = 0; + } + + m_key = *pKey; + m_cc->t_evLast = pKey->hEvent; + m_cc->t_tsLast = pKey->ts; + return pKey->hEvent; + } +}; -DB::EventCursor* CDbxMDBX::EventCursor(MCONTACT hContact, DBEVENTINFO &dbei) +DB::EventCursor* CDbxMDBX::EventCursor(MCONTACT hContact, MEVENT) { DBCachedContact *cc; if (hContact != 0) { @@ -667,18 +692,10 @@ DB::EventCursor* CDbxMDBX::EventCursor(MCONTACT hContact, DBEVENTINFO &dbei) } else cc = &m_ccDummy; - auto *pCursor = new CMdbxEventCursor(this, hContact, dbei, true); - - MDBX_val key = { &pCursor->m_key, sizeof(pCursor->m_key) }, data; - if (mdbx_cursor_get(*pCursor, &key, &data, MDBX_SET_RANGE) != MDBX_SUCCESS) { - delete pCursor; - return nullptr; - } - - return pCursor; + return new CMdbxEventCursor(this, cc, true); } -DB::EventCursor* CDbxMDBX::EventCursorRev(MCONTACT hContact, DBEVENTINFO &dbei) +DB::EventCursor* CDbxMDBX::EventCursorRev(MCONTACT hContact, MEVENT) { DBCachedContact *cc; if (hContact != 0) { @@ -688,13 +705,5 @@ DB::EventCursor* CDbxMDBX::EventCursorRev(MCONTACT hContact, DBEVENTINFO &dbei) } else cc = &m_ccDummy; - auto *pCursor = new CMdbxEventCursor(this, hContact, dbei, false); - - MDBX_val key = { &pCursor->m_key, sizeof(pCursor->m_key) }, data; - if (mdbx_cursor_get(*pCursor, &key, &data, MDBX_SET_RANGE) != MDBX_SUCCESS) { - delete pCursor; - return nullptr; - } - - return pCursor; + return new CMdbxEventCursor(this, cc, false); } diff --git a/plugins/Dbx_mdbx/src/dbintf.h b/plugins/Dbx_mdbx/src/dbintf.h index 05687bbfd2..06602c8632 100644 --- a/plugins/Dbx_mdbx/src/dbintf.h +++ b/plugins/Dbx_mdbx/src/dbintf.h @@ -136,23 +136,6 @@ struct EventItem MEVENT eventId; }; -class CMdbxEventCursor : public DB::EventCursor -{ - CMDBX_txn_ro m_txn_ro; - MDBX_cursor* m_cursor = nullptr; - bool m_bForward; - -public: - CMdbxEventCursor(class CDbxMDBX *pOdb, MCONTACT hContact, DBEVENTINFO &dbei, bool bForward); - ~CMdbxEventCursor() override; - - MEVENT FetchNext() override; - - DBEventSortingKey m_key; - - __forceinline operator MDBX_cursor*() const { return m_cursor; } -}; - class CDbxMDBX : public MDatabaseCommon, public MZeroedObject { friend class CMdbxEventCursor; @@ -315,8 +298,8 @@ public: STDMETHODIMP_(MEVENT) GetEventById(LPCSTR szModule, LPCSTR szId) override; STDMETHODIMP_(BOOL) SetEventId(LPCSTR szModule, MEVENT, LPCSTR szId) override; - STDMETHODIMP_(DB::EventCursor *) EventCursor(MCONTACT hContact, DBEVENTINFO &dbei) override; - STDMETHODIMP_(DB::EventCursor *) EventCursorRev(MCONTACT hContact, DBEVENTINFO &dbei) override; + STDMETHODIMP_(DB::EventCursor *) EventCursor(MCONTACT hContact, MEVENT hDbEvent) override; + STDMETHODIMP_(DB::EventCursor *) EventCursorRev(MCONTACT hContact, MEVENT hDbEvent) override; public: MICryptoEngine *m_crypto; diff --git a/plugins/Dbx_sqlite/src/dbevents.cpp b/plugins/Dbx_sqlite/src/dbevents.cpp index cec73e5a50..25755334a4 100755 --- a/plugins/Dbx_sqlite/src/dbevents.cpp +++ b/plugins/Dbx_sqlite/src/dbevents.cpp @@ -718,18 +718,18 @@ BOOL CDbxSQLite::MetaSplitHistory(DBCachedContact *ccMeta, DBCachedContact*) return TRUE; } -STDMETHODIMP_(DB::EventCursor*) CDbxSQLite::EventCursor(MCONTACT hContact, DBEVENTINFO &dbei) +STDMETHODIMP_(DB::EventCursor*) CDbxSQLite::EventCursor(MCONTACT hContact, MEVENT hDbEvent) { - return new CDbxSQLiteEventCursor(hContact, dbei, m_db); + return new CDbxSQLiteEventCursor(hContact, m_db); } -STDMETHODIMP_(DB::EventCursor*) CDbxSQLite::EventCursorRev(MCONTACT hContact, DBEVENTINFO &dbei) +STDMETHODIMP_(DB::EventCursor*) CDbxSQLite::EventCursorRev(MCONTACT hContact, MEVENT hDbEvent) { - return new CDbxSQLiteEventCursor(hContact, dbei, m_db, true); + return new CDbxSQLiteEventCursor(hContact, m_db, true); } -CDbxSQLiteEventCursor::CDbxSQLiteEventCursor(MCONTACT _1, DBEVENTINFO& _2, sqlite3* _db, bool reverse) - : EventCursor(_1, _2), m_db(_db) +CDbxSQLiteEventCursor::CDbxSQLiteEventCursor(MCONTACT _1, sqlite3* _db, bool reverse) + : EventCursor(_1), m_db(_db) { if (reverse) sqlite3_prepare_v2(m_db, reverse_order_query, -1, &cursor, nullptr); diff --git a/plugins/Dbx_sqlite/src/dbintf.h b/plugins/Dbx_sqlite/src/dbintf.h index 1f0d44f54d..a1810f3f38 100755 --- a/plugins/Dbx_sqlite/src/dbintf.h +++ b/plugins/Dbx_sqlite/src/dbintf.h @@ -24,7 +24,7 @@ struct DBCachedContact : public DBCachedContactBase struct CDbxSQLiteEventCursor : public DB::EventCursor { - CDbxSQLiteEventCursor(MCONTACT _1, DBEVENTINFO& _2, sqlite3* m_db, bool reverse = false); + CDbxSQLiteEventCursor(MCONTACT _1, sqlite3* m_db, bool reverse = false); ~CDbxSQLiteEventCursor() override; MEVENT FetchNext() override; private: @@ -102,6 +102,6 @@ public: STDMETHODIMP_(BOOL) Compact() override; STDMETHODIMP_(BOOL) Backup(LPCWSTR) override; - STDMETHODIMP_(DB::EventCursor*) EventCursor(MCONTACT hContact, DBEVENTINFO& dbei) override; - STDMETHODIMP_(DB::EventCursor*) EventCursorRev(MCONTACT hContact, DBEVENTINFO& dbei) override; + STDMETHODIMP_(DB::EventCursor*) EventCursor(MCONTACT hContact, MEVENT hDbEvent) override; + STDMETHODIMP_(DB::EventCursor*) EventCursorRev(MCONTACT hContact, MEVENT hDbEvent) override; }; diff --git a/plugins/NewStory/src/history.cpp b/plugins/NewStory/src/history.cpp index cee9ad0dd4..16653b3683 100644 --- a/plugins/NewStory/src/history.cpp +++ b/plugins/NewStory/src/history.cpp @@ -711,58 +711,60 @@ public: SetFilePointer(hFile, -3, nullptr, FILE_CURRENT); // export events - MEVENT hDbEvent = db_event_first(m_hContact); bool bAppendOnly = false; - while (hDbEvent != NULL) { - DBEVENTINFO dbei = {}; - int nSize = db_event_getBlobSize(hDbEvent); - if (nSize > 0) { - dbei.cbBlob = nSize; - dbei.pBlob = (PBYTE)mir_alloc(dbei.cbBlob + 2); - dbei.pBlob[dbei.cbBlob] = 0; - dbei.pBlob[dbei.cbBlob + 1] = 0; - // Double null terminate, this should prevent most errors - // where the blob received has an invalid format - } - - if (!db_event_get(hDbEvent, &dbei)) { - if (bAppendOnly) { - SetFilePointer(hFile, -3, nullptr, FILE_END); - WriteFile(hFile, ",", 1, &dwBytesWritten, nullptr); + if (auto *pCursor = DB::Events(m_hContact)) { + while (MEVENT hDbEvent = pCursor->FetchNext()) { + DBEVENTINFO dbei = {}; + int nSize = db_event_getBlobSize(hDbEvent); + if (nSize > 0) { + dbei.cbBlob = nSize; + dbei.pBlob = (PBYTE)mir_alloc(dbei.cbBlob + 2); + dbei.pBlob[dbei.cbBlob] = 0; + dbei.pBlob[dbei.cbBlob + 1] = 0; + // Double null terminate, this should prevent most errors + // where the blob received has an invalid format } - JSONNode pRoot2; - pRoot2.push_back(JSONNode("type", dbei.eventType)); - if (mir_strcmp(dbei.szModule, proto)) - pRoot2.push_back(JSONNode("module", dbei.szModule)); + if (!db_event_get(hDbEvent, &dbei)) { + if (bAppendOnly) { + SetFilePointer(hFile, -3, nullptr, FILE_END); + WriteFile(hFile, ",", 1, &dwBytesWritten, nullptr); + } - pRoot2.push_back(JSONNode("timestamp", dbei.timestamp)); + JSONNode pRoot2; + pRoot2.push_back(JSONNode("type", dbei.eventType)); - wchar_t szTemp[500]; - TimeZone_PrintTimeStamp(UTC_TIME_HANDLE, dbei.timestamp, L"I", szTemp, _countof(szTemp), 0); - pRoot2.push_back(JSONNode("isotime", T2Utf(szTemp).get())); + if (mir_strcmp(dbei.szModule, proto)) + pRoot2.push_back(JSONNode("module", dbei.szModule)); - std::string flags; - if (dbei.flags & DBEF_SENT) - flags += "m"; - if (dbei.flags & DBEF_READ) - flags += "r"; - pRoot2.push_back(JSONNode("flags", flags)); + pRoot2.push_back(JSONNode("timestamp", dbei.timestamp)); - ptrW msg(DbEvent_GetTextW(&dbei, CP_ACP)); - if (msg) - pRoot2.push_back(JSONNode("body", T2Utf(msg).get())); + wchar_t szTemp[500]; + TimeZone_PrintTimeStamp(UTC_TIME_HANDLE, dbei.timestamp, L"I", szTemp, _countof(szTemp), 0); + pRoot2.push_back(JSONNode("isotime", T2Utf(szTemp).get())); - output = pRoot2.write_formatted(); - output += "\n]}"; + std::string flags; + if (dbei.flags & DBEF_SENT) + flags += "m"; + if (dbei.flags & DBEF_READ) + flags += "r"; + pRoot2.push_back(JSONNode("flags", flags)); - WriteFile(hFile, output.c_str(), (int)output.size(), &dwBytesWritten, nullptr); - if (dbei.pBlob) - mir_free(dbei.pBlob); - } + ptrW msg(DbEvent_GetTextW(&dbei, CP_ACP)); + if (msg) + pRoot2.push_back(JSONNode("body", T2Utf(msg).get())); - bAppendOnly = true; - hDbEvent = db_event_next(m_hContact, hDbEvent); + output = pRoot2.write_formatted(); + output += "\n]}"; + + WriteFile(hFile, output.c_str(), (int)output.size(), &dwBytesWritten, nullptr); + if (dbei.pBlob) + mir_free(dbei.pBlob); + } + + bAppendOnly = true; + } + delete pCursor; } // Close the file diff --git a/src/mir_app/src/MDatabaseCommon.cpp b/src/mir_app/src/MDatabaseCommon.cpp index 1e768ffa5f..db72861928 100644 --- a/src/mir_app/src/MDatabaseCommon.cpp +++ b/src/mir_app/src/MDatabaseCommon.cpp @@ -357,12 +357,12 @@ STDMETHODIMP_(BOOL) MDatabaseCommon::SetSettingResident(BOOL bIsResident, const ///////////////////////////////////////////////////////////////////////////////////////// // Event cursors -STDMETHODIMP_(DB::EventCursor *) MDatabaseCommon::EventCursor(MCONTACT, DBEVENTINFO &) +STDMETHODIMP_(DB::EventCursor *) MDatabaseCommon::EventCursor(MCONTACT, MEVENT) { return nullptr; } -STDMETHODIMP_(DB::EventCursor *) MDatabaseCommon::EventCursorRev(MCONTACT, DBEVENTINFO &) +STDMETHODIMP_(DB::EventCursor *) MDatabaseCommon::EventCursorRev(MCONTACT, MEVENT) { return nullptr; } diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index 340d145332..c753762538 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -732,6 +732,6 @@ ProtoBroadcastAsync @814 NONAME ?UseGroups@Clist@@3V?$CMOption@_N@@A @819 NONAME ?OfflineModes@Clist@@3V?$CMOption@K@@A @820 NONAME ?getChat@CSrmmBaseDialog@@QBEPAUSESSION_INFO@@XZ @821 NONAME -?EventCursor@MDatabaseCommon@@UAGPAV0DB@@IAAUDBEVENTINFO@@@Z @822 NONAME -?EventCursorRev@MDatabaseCommon@@UAGPAVEventCursor@DB@@IAAUDBEVENTINFO@@@Z @823 NONAME +?EventCursor@MDatabaseCommon@@UAGPAV0DB@@II@Z @822 NONAME +?EventCursorRev@MDatabaseCommon@@UAGPAVEventCursor@DB@@II@Z @823 NONAME Chat_CreateMenu @824 NONAME diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index 2d9ac3a4b4..4d532688ff 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -732,6 +732,6 @@ ProtoBroadcastAsync @814 NONAME ?UseGroups@Clist@@3V?$CMOption@_N@@A @819 NONAME ?OfflineModes@Clist@@3V?$CMOption@K@@A @820 NONAME ?getChat@CSrmmBaseDialog@@QEBAPEAUSESSION_INFO@@XZ @821 NONAME -?EventCursor@MDatabaseCommon@@UEAAPEAV0DB@@IAEAUDBEVENTINFO@@@Z @822 NONAME -?EventCursorRev@MDatabaseCommon@@UEAAPEAVEventCursor@DB@@IAEAUDBEVENTINFO@@@Z @823 NONAME +?EventCursor@MDatabaseCommon@@UEAAPEAV0DB@@II@Z @822 NONAME +?EventCursorRev@MDatabaseCommon@@UEAAPEAVEventCursor@DB@@II@Z @823 NONAME Chat_CreateMenu @824 NONAME diff --git a/src/mir_core/src/db.cpp b/src/mir_core/src/db.cpp index 05d775d598..50df1e3e83 100644 --- a/src/mir_core/src/db.cpp +++ b/src/mir_core/src/db.cpp @@ -443,14 +443,14 @@ DB::EventCursor::~EventCursor() { } -MIR_CORE_DLL(DB::EventCursor*) DB::Events(MCONTACT hContact, DBEVENTINFO &dbei) +MIR_CORE_DLL(DB::EventCursor*) DB::Events(MCONTACT hContact, MEVENT iStartEvent) { - return (currDb == nullptr) ? 0 : currDb->EventCursor(hContact, dbei); + return (currDb == nullptr) ? 0 : currDb->EventCursor(hContact, iStartEvent); } -MIR_CORE_DLL(DB::EventCursor*) DB::EventsRev(MCONTACT hContact, DBEVENTINFO &dbei) +MIR_CORE_DLL(DB::EventCursor*) DB::EventsRev(MCONTACT hContact, MEVENT iStartEvent) { - return (currDb == nullptr) ? 0 : currDb->EventCursorRev(hContact, dbei); + return (currDb == nullptr) ? 0 : currDb->EventCursorRev(hContact, iStartEvent); } ///////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/mir_core/src/mir_core.def b/src/mir_core/src/mir_core.def index 36cf775073..a89c1757ff 100644 --- a/src/mir_core/src/mir_core.def +++ b/src/mir_core/src/mir_core.def @@ -1459,10 +1459,10 @@ XmlGetChildText @1645 ?InsertNewUnknown@XMLElement@tinyxml2@@QAEPAVXMLUnknown@2@PBD@Z @1681 NONAME ??1EventCursor@DB@@UAE@XZ @1684 NONAME ??0EventCursor@DB@@QAE@ABV01@@Z @1685 NONAME -??0EventCursor@DB@@QAE@IAAUDBEVENTINFO@@@Z @1686 NONAME +??0EventCursor@DB@@QAE@I@Z @1686 NONAME ??_7EventCursor@DB@@6B@ @1687 NONAME -?Events@DB@@YGPAVEventCursor@1@IAAUDBEVENTINFO@@@Z @1688 NONAME -?EventsRev@DB@@YGPAVEventCursor@1@IAAUDBEVENTINFO@@@Z @1689 NONAME +?Events@DB@@YGPAVEventCursor@1@II@Z @1688 NONAME +?EventsRev@DB@@YGPAVEventCursor@1@II@Z @1689 NONAME ?begin@EventCursor@DB@@QAEIXZ @1690 NONAME ?end@EventCursor@DB@@QAEIXZ @1691 NONAME TimeZone_GetSystemTime @1692 diff --git a/src/mir_core/src/mir_core64.def b/src/mir_core/src/mir_core64.def index 73a85c2031..e98319e623 100644 --- a/src/mir_core/src/mir_core64.def +++ b/src/mir_core/src/mir_core64.def @@ -1459,10 +1459,10 @@ XmlGetChildText @1645 ?InsertNewUnknown@XMLElement@tinyxml2@@QEAAPEAVXMLUnknown@2@PEBD@Z @1681 NONAME ??1EventCursor@DB@@UEAA@XZ @1684 NONAME ??0EventCursor@DB@@QEAA@AEBV01@@Z @1685 NONAME -??0EventCursor@DB@@QEAA@IAEAUDBEVENTINFO@@@Z @1686 NONAME +??0EventCursor@DB@@QEAA@I@Z @1686 NONAME ??_7EventCursor@DB@@6B@ @1687 NONAME -?Events@DB@@YAPEAVEventCursor@1@IAEAUDBEVENTINFO@@@Z @1688 NONAME -?EventsRev@DB@@YAPEAVEventCursor@1@IAEAUDBEVENTINFO@@@Z @1689 NONAME +?Events@DB@@YAPEAVEventCursor@1@II@Z @1688 NONAME +?EventsRev@DB@@YAPEAVEventCursor@1@II@Z @1689 NONAME ?begin@EventCursor@DB@@QEAAIXZ @1690 NONAME ?end@EventCursor@DB@@QEAAIXZ @1691 NONAME TimeZone_GetSystemTime @1692 -- cgit v1.2.3