From 5a09915186e4ae70cc39e9343ca02a1b860d7f94 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 14 May 2020 12:34:32 +0300 Subject: simple database event cycles moved to cursors --- src/mir_core/src/db.cpp | 29 +++++++++++++++++++++++++++++ src/mir_core/src/mir_core.def | 5 +++++ src/mir_core/src/mir_core64.def | 5 +++++ 3 files changed, 39 insertions(+) (limited to 'src/mir_core') diff --git a/src/mir_core/src/db.cpp b/src/mir_core/src/db.cpp index 50df1e3e83..62fd662b35 100644 --- a/src/mir_core/src/db.cpp +++ b/src/mir_core/src/db.cpp @@ -453,6 +453,35 @@ MIR_CORE_DLL(DB::EventCursor*) DB::EventsRev(MCONTACT hContact, MEVENT iStartEve return (currDb == nullptr) ? 0 : currDb->EventCursorRev(hContact, iStartEvent); } +DB::ECPTR::ECPTR(EventCursor *_pCursor) : + m_cursor(_pCursor), + m_prevFetched(-1), + m_currEvent(0) +{ +} + +DB::ECPTR::~ECPTR() +{ + delete m_cursor; +} + +void DB::ECPTR::DeleteEvent() +{ + m_prevFetched = m_cursor->FetchNext(); + db_event_delete(m_currEvent); +} + +MEVENT DB::ECPTR::FetchNext() +{ + if (m_prevFetched != -1) { + m_currEvent = m_prevFetched; + m_prevFetched = -1; + } + else m_currEvent = m_cursor->FetchNext(); + + return m_currEvent; +} + ///////////////////////////////////////////////////////////////////////////////////////// // misc functions diff --git a/src/mir_core/src/mir_core.def b/src/mir_core/src/mir_core.def index a89c1757ff..6ccd0c16b5 100644 --- a/src/mir_core/src/mir_core.def +++ b/src/mir_core/src/mir_core.def @@ -1466,3 +1466,8 @@ XmlGetChildText @1645 ?begin@EventCursor@DB@@QAEIXZ @1690 NONAME ?end@EventCursor@DB@@QAEIXZ @1691 NONAME TimeZone_GetSystemTime @1692 +??0ECPTR@DB@@QAE@PAVEventCursor@1@@Z @1693 NONAME +??1ECPTR@DB@@QAE@XZ @1694 NONAME +??4EventCursor@DB@@QAEAAV01@ABV01@@Z @1695 NONAME +?DeleteEvent@ECPTR@DB@@QAEXXZ @1696 NONAME +?FetchNext@ECPTR@DB@@QAEIXZ @1697 NONAME diff --git a/src/mir_core/src/mir_core64.def b/src/mir_core/src/mir_core64.def index e98319e623..9779067440 100644 --- a/src/mir_core/src/mir_core64.def +++ b/src/mir_core/src/mir_core64.def @@ -1466,3 +1466,8 @@ XmlGetChildText @1645 ?begin@EventCursor@DB@@QEAAIXZ @1690 NONAME ?end@EventCursor@DB@@QEAAIXZ @1691 NONAME TimeZone_GetSystemTime @1692 +??0ECPTR@DB@@QEAA@PEAVEventCursor@1@@Z @1693 NONAME +??1ECPTR@DB@@QEAA@XZ @1694 NONAME +??4EventCursor@DB@@QEAAAEAV01@AEBV01@@Z @1695 NONAME +?DeleteEvent@ECPTR@DB@@QEAAXXZ @1696 NONAME +?FetchNext@ECPTR@DB@@QEAAIXZ @1697 NONAME -- cgit v1.2.3