summaryrefslogtreecommitdiff
path: root/sw/source/core/doc
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2022-07-17 13:45:52 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-07-17 19:26:39 +0200
commit946d038c71ae09f3ae403474d66c26c959a18e13 (patch)
tree89f6b557ca80a62ae36f66c618c01c8cf02c6105 /sw/source/core/doc
parent868b45039d2d168e1c51d971b0d1e0589d4d11eb (diff)
tdf#119840 reduce cost of SwPosition::operator<=
by fetching Start/End from SwPaM at the same time reduces load time by 5% Change-Id: Ie4a06c667aa0950c04e98e46b30cdc4b97f75ba7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137147 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sw/source/core/doc')
-rw-r--r--sw/source/core/doc/DocumentRedlineManager.cxx13
-rw-r--r--sw/source/core/doc/docbm.cxx3
2 files changed, 6 insertions, 10 deletions
diff --git a/sw/source/core/doc/DocumentRedlineManager.cxx b/sw/source/core/doc/DocumentRedlineManager.cxx
index b215170ee36f..9e3d79c14146 100644
--- a/sw/source/core/doc/DocumentRedlineManager.cxx
+++ b/sw/source/core/doc/DocumentRedlineManager.cxx
@@ -1349,8 +1349,7 @@ DocumentRedlineManager::AppendRedline(SwRangeRedline* pNewRedl, bool const bCall
bDec = false;
SwRangeRedline* pRedl = maRedlineTable[ n ];
- SwPosition* pRStt = pRedl->Start(),
- * pREnd = pRedl->End();
+ auto [pRStt, pREnd] = pRedl->StartEnd();
// #i8518# remove empty redlines while we're at it
if( ( *pRStt == *pREnd ) &&
@@ -2460,10 +2459,9 @@ void DocumentRedlineManager::CompressRedlines()
{
SwRangeRedline* pPrev = maRedlineTable[ n-1 ],
* pCur = maRedlineTable[ n ];
- const SwPosition* pPrevStt = pPrev->Start(),
- * pPrevEnd = pPrev->End();
- const SwPosition* pCurStt = pCur->Start(),
- * pCurEnd = pCur->End();
+ auto [pPrevStt,pPrevEnd] = pPrev->StartEnd();
+ auto [pCurStt, pCurEnd] = pCur->StartEnd();
+
if( *pPrevEnd == *pCurStt && pPrev->CanCombine( *pCur ) &&
pPrevStt->nNode.GetNode().StartOfSectionNode() ==
pCurEnd->nNode.GetNode().StartOfSectionNode() &&
@@ -2771,8 +2769,7 @@ const SwRangeRedline* DocumentRedlineManager::GetRedline( const SwPosition& rPos
{
nM = nU + ( nO - nU ) / 2;
const SwRangeRedline* pRedl = maRedlineTable[ nM ];
- const SwPosition* pStt = pRedl->Start();
- const SwPosition* pEnd = pRedl->End();
+ auto [pStt, pEnd] = pRedl->StartEnd();
if( pEnd == pStt
? *pStt == rPos
: ( *pStt <= rPos && rPos < *pEnd ) )
diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx
index 41d7a6dfb080..a59bb372487f 100644
--- a/sw/source/core/doc/docbm.cxx
+++ b/sw/source/core/doc/docbm.cxx
@@ -1919,8 +1919,7 @@ void DelBookmarks(
for(SwRangeRedline* pRedl : rTable)
{
// Is at position?
- SwPosition *const pRStt = pRedl->Start();
- SwPosition *const pREnd = pRedl->End();
+ auto [pRStt, pREnd] = pRedl->StartEnd();
if( lcl_Greater( *pRStt, rStt, pSttIdx ) && lcl_Lower( *pRStt, rEnd, pEndIdx ))
{