From 9e52243831ceffced1e9f0ef27041770fe13a85a Mon Sep 17 00:00:00 2001 From: Neil Date: Thu, 17 Jun 2021 09:28:05 +1000 Subject: Add SciFnDirectStatus, a direct access function which also returns status so can improve performance for client code that called SCI_GETSTATUS after every API to check for failure. --- qt/ScintillaEditBase/ScintillaQt.cpp | 15 ++++++++++++++- qt/ScintillaEditBase/ScintillaQt.h | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'qt') diff --git a/qt/ScintillaEditBase/ScintillaQt.cpp b/qt/ScintillaEditBase/ScintillaQt.cpp index f90313554..383f32c10 100644 --- a/qt/ScintillaEditBase/ScintillaQt.cpp +++ b/qt/ScintillaEditBase/ScintillaQt.cpp @@ -748,6 +748,9 @@ sptr_t ScintillaQt::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) case Message::GetDirectFunction: return reinterpret_cast(DirectFunction); + case Message::GetDirectStatusFunction: + return reinterpret_cast(DirectStatusFunction); + case Message::GetDirectPointer: return reinterpret_cast(this); @@ -770,7 +773,17 @@ sptr_t ScintillaQt::DefWndProc(Message, uptr_t, sptr_t) sptr_t ScintillaQt::DirectFunction( sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam) { - return reinterpret_cast(ptr)->WndProc(static_cast(iMessage), wParam, lParam); + ScintillaQt *sci = reinterpret_cast(ptr); + return sci->WndProc(static_cast(iMessage), wParam, lParam); +} + +sptr_t ScintillaQt::DirectStatusFunction( + sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam, int *pStatus) +{ + ScintillaQt *sci = reinterpret_cast(ptr); + const sptr_t returnValue = sci->WndProc(static_cast(iMessage), wParam, lParam); + *pStatus = static_cast(sci->errorStatus); + return returnValue; } // Additions to merge in Scientific Toolworks widget structure diff --git a/qt/ScintillaEditBase/ScintillaQt.h b/qt/ScintillaEditBase/ScintillaQt.h index 053e59cc8..a4b59e03c 100644 --- a/qt/ScintillaEditBase/ScintillaQt.h +++ b/qt/ScintillaEditBase/ScintillaQt.h @@ -151,6 +151,8 @@ private: static sptr_t DirectFunction(sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam); + static sptr_t DirectStatusFunction(sptr_t ptr, + unsigned int iMessage, uptr_t wParam, sptr_t lParam, int *pStatus); protected: -- cgit v1.2.3