From 2484de6728bd11bb7949003d112f1ece2223c7a1 Mon Sep 17 00:00:00 2001 From: Mike Kaganski Date: Thu, 14 Oct 2021 09:25:24 +0200 Subject: Remove non-const Sequence::begin()/end() in internal code ... to avoid hidden cost of multiple COW checks, because they call getArray() internally. This obsoletes [loplugin:sequenceloop]. Also rename toNonConstRange to asNonConstRange, to reflect that the result is a view of the sequence, not an independent object. TODO: also drop non-const operator[], but introduce operator[] in SequenceRange. Change-Id: Idd5fd7a3400fe65274d2a6343025e2ef8911635d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123518 Tested-by: Jenkins Reviewed-by: Stephan Bergmann Reviewed-by: Mike Kaganski --- i18npool/source/calendar/calendarImpl.cxx | 2 +- i18npool/source/collator/collatorImpl.cxx | 4 ++-- i18npool/source/localedata/localedata.cxx | 6 +++--- .../source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx | 2 +- i18npool/source/transliteration/ignoreIterationMark_ja_JP.cxx | 2 +- .../source/transliteration/ignoreKiKuFollowedBySa_ja_JP.cxx | 2 +- .../source/transliteration/ignoreProlongedSoundMark_ja_JP.cxx | 2 +- i18npool/source/transliteration/transliterationImpl.cxx | 10 +++++----- i18npool/source/transliteration/transliteration_OneToOne.cxx | 2 +- i18npool/source/transliteration/transliteration_body.cxx | 2 +- 10 files changed, 17 insertions(+), 17 deletions(-) (limited to 'i18npool') diff --git a/i18npool/source/calendar/calendarImpl.cxx b/i18npool/source/calendar/calendarImpl.cxx index c3ac0d54460a..4e364696cf20 100644 --- a/i18npool/source/calendar/calendarImpl.cxx +++ b/i18npool/source/calendar/calendarImpl.cxx @@ -139,7 +139,7 @@ CalendarImpl::getAllCalendars( const css::lang::Locale& rLocale ) { const Sequence< Calendar2 > xC = LocaleDataImpl::get()->getAllCalendars2(rLocale); Sequence< OUString > xSeq( xC.getLength() ); - std::transform(xC.begin(), xC.end(), xSeq.begin(), + std::transform(xC.begin(), xC.end(), xSeq.getArray(), [](const Calendar2& rCal) { return rCal.Name; }); return xSeq; } diff --git a/i18npool/source/collator/collatorImpl.cxx b/i18npool/source/collator/collatorImpl.cxx index 56fb4bf90502..fff944d6ff7e 100644 --- a/i18npool/source/collator/collatorImpl.cxx +++ b/i18npool/source/collator/collatorImpl.cxx @@ -107,7 +107,7 @@ CollatorImpl::listCollatorAlgorithms( const lang::Locale& rLocale ) nLocale = rLocale; const Sequence< Implementation > &imp = mxLocaleData->getCollatorImplementations(rLocale); Sequence< OUString > list(imp.getLength()); - auto pBegin = list.begin(); + auto pBegin = list.getArray(); auto pId = pBegin; for (const auto& rImpl : imp) { @@ -126,7 +126,7 @@ CollatorImpl::listCollatorOptions( const OUString& /*collatorAlgorithmName*/ ) const Sequence< OUString > option_str = mxLocaleData->getCollationOptions(nLocale); Sequence< sal_Int32 > option_int(option_str.getLength()); - std::transform(option_str.begin(), option_str.end(), option_int.begin(), [](const OUString& rOpt) { + std::transform(option_str.begin(), option_str.end(), option_int.getArray(), [](const OUString& rOpt) { return rOpt == "IGNORE_CASE" ? CollatorOptions::CollatorOptions_IGNORE_CASE : rOpt == "IGNORE_KANA" ? CollatorOptions::CollatorOptions_IGNORE_KANA : rOpt == "IGNORE_WIDTH" ? CollatorOptions::CollatorOptions_IGNORE_WIDTH : 0; }); diff --git a/i18npool/source/localedata/localedata.cxx b/i18npool/source/localedata/localedata.cxx index 3dc113fe7eed..145b576f16fc 100644 --- a/i18npool/source/localedata/localedata.cxx +++ b/i18npool/source/localedata/localedata.cxx @@ -719,7 +719,7 @@ Sequence< CalendarItem2 > LocaleDataImpl::getCalendarItems( case REF_MONTHS: case REF_GMONTHS: case REF_PMONTHS: - for (CalendarItem2& rItem : aItems) + for (CalendarItem2& rItem : asNonConstRange(aItems)) { rItem = CalendarItem2{ OUString(allCalendars[rnOffset]), OUString(allCalendars[rnOffset+1]), @@ -729,7 +729,7 @@ Sequence< CalendarItem2 > LocaleDataImpl::getCalendarItems( break; case REF_ERAS: // Absent narrow name. - for (CalendarItem2& rItem : aItems) + for (CalendarItem2& rItem : asNonConstRange(aItems)) { rItem = CalendarItem2{ OUString(allCalendars[rnOffset]), OUString(allCalendars[rnOffset+1]), @@ -1260,7 +1260,7 @@ LocaleDataImpl::getContinuousNumberingLevels( const lang::Locale& rLocale ) // allocate memory for nAttributes attributes for each of the nStyles styles. Sequence< Sequence > pv( nStyles ); - for( auto& i : pv ) { + for( auto& i : asNonConstRange(pv) ) { i = Sequence( nAttributes ); } diff --git a/i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx b/i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx index 5a071a3887fa..5e8659027992 100644 --- a/i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreIandEfollowedByYa_ja_JP.cxx @@ -77,7 +77,7 @@ ignoreIandEfollowedByYa_ja_JP::foldingImpl( const OUString& inStr, sal_Int32 sta if (pOffset) { // Allocate nCount length to offset argument. pOffset->realloc( nCount ); - auto [begin, end] = toNonConstRange(*pOffset); + auto [begin, end] = asNonConstRange(*pOffset); std::iota(begin, end, startPos); } diff --git a/i18npool/source/transliteration/ignoreIterationMark_ja_JP.cxx b/i18npool/source/transliteration/ignoreIterationMark_ja_JP.cxx index bdee0d87d6fa..c5a3cb04565c 100644 --- a/i18npool/source/transliteration/ignoreIterationMark_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreIterationMark_ja_JP.cxx @@ -95,7 +95,7 @@ ignoreIterationMark_ja_JP::foldingImpl( const OUString& inStr, sal_Int32 startPo if (pOffset) { // Allocate nCount length to offset argument. pOffset->realloc( nCount ); - auto [begin, end] = toNonConstRange(*pOffset); + auto [begin, end] = asNonConstRange(*pOffset); std::iota(begin, end, startPos); } diff --git a/i18npool/source/transliteration/ignoreKiKuFollowedBySa_ja_JP.cxx b/i18npool/source/transliteration/ignoreKiKuFollowedBySa_ja_JP.cxx index 1c64d65104d9..113c80f9aeeb 100644 --- a/i18npool/source/transliteration/ignoreKiKuFollowedBySa_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreKiKuFollowedBySa_ja_JP.cxx @@ -38,7 +38,7 @@ ignoreKiKuFollowedBySa_ja_JP::foldingImpl( const OUString& inStr, sal_Int32 star if (pOffset) { // Allocate nCount length to offset argument. pOffset->realloc( nCount ); - auto [begin, end] = toNonConstRange(*pOffset); + auto [begin, end] = asNonConstRange(*pOffset); std::iota(begin, end, startPos); } diff --git a/i18npool/source/transliteration/ignoreProlongedSoundMark_ja_JP.cxx b/i18npool/source/transliteration/ignoreProlongedSoundMark_ja_JP.cxx index fc87d206dc3e..3291afa9ba7d 100644 --- a/i18npool/source/transliteration/ignoreProlongedSoundMark_ja_JP.cxx +++ b/i18npool/source/transliteration/ignoreProlongedSoundMark_ja_JP.cxx @@ -300,7 +300,7 @@ ignoreProlongedSoundMark_ja_JP::foldingImpl( const OUString& inStr, sal_Int32 st if (pOffset) { // Allocate nCount length to offset argument. pOffset->realloc( nCount ); - auto [begin, end] = toNonConstRange(*pOffset); + auto [begin, end] = asNonConstRange(*pOffset); std::iota(begin, end, startPos); } diff --git a/i18npool/source/transliteration/transliterationImpl.cxx b/i18npool/source/transliteration/transliterationImpl.cxx index 4a1e2eab6147..55236ec3dfa9 100644 --- a/i18npool/source/transliteration/transliterationImpl.cxx +++ b/i18npool/source/transliteration/transliterationImpl.cxx @@ -306,7 +306,7 @@ TransliterationImpl::transliterate( const OUString& inStr, sal_Int32 startPos, s tmpStr = bodyCascade[0]->transliterate(tmpStr, 0, nCount, offset); if ( startPos ) { - for (sal_Int32 & j : toNonConstRange(offset)) + for (sal_Int32 & j : asNonConstRange(offset)) j += startPos; } return tmpStr; @@ -316,7 +316,7 @@ TransliterationImpl::transliterate( const OUString& inStr, sal_Int32 startPos, s { OUString tmpStr = inStr.copy(startPos, nCount); - auto [begin, end] = toNonConstRange(offset); + auto [begin, end] = asNonConstRange(offset); std::iota(begin, end, startPos); Sequence from(nCount); @@ -328,7 +328,7 @@ TransliterationImpl::transliterate( const OUString& inStr, sal_Int32 startPos, s assert(from.getLength() == nCount); from.swap(to); - for (sal_Int32& ix : toNonConstRange(to)) + for (sal_Int32& ix : asNonConstRange(to)) ix = std::as_const(from)[ix]; } offset = to; @@ -356,7 +356,7 @@ TransliterationImpl::folding( const OUString& inStr, sal_Int32 startPos, sal_Int tmpStr = bodyCascade[0]->folding(tmpStr, 0, nCount, offset); if ( startPos ) { - for (sal_Int32 & j : offset) + for (sal_Int32 & j : asNonConstRange(offset)) j += startPos; } return tmpStr; @@ -366,7 +366,7 @@ TransliterationImpl::folding( const OUString& inStr, sal_Int32 startPos, sal_Int { OUString tmpStr = inStr.copy(startPos, nCount); - auto [begin, end] = toNonConstRange(offset); + auto [begin, end] = asNonConstRange(offset); std::iota(begin, end, startPos); sal_Int16 from = 0, to = 1; diff --git a/i18npool/source/transliteration/transliteration_OneToOne.cxx b/i18npool/source/transliteration/transliteration_OneToOne.cxx index 34f4902f79bb..233f3dfe7051 100644 --- a/i18npool/source/transliteration/transliteration_OneToOne.cxx +++ b/i18npool/source/transliteration/transliteration_OneToOne.cxx @@ -68,7 +68,7 @@ transliteration_OneToOne::transliterateImpl( const OUString& inStr, sal_Int32 st // Allocate nCount length to offset argument. if (pOffset) { pOffset->realloc( nCount ); - auto [begin, end] = toNonConstRange(*pOffset); + auto [begin, end] = asNonConstRange(*pOffset); std::iota(begin, end, startPos); } diff --git a/i18npool/source/transliteration/transliteration_body.cxx b/i18npool/source/transliteration/transliteration_body.cxx index b0c710c6c696..a64c8050bb79 100644 --- a/i18npool/source/transliteration/transliteration_body.cxx +++ b/i18npool/source/transliteration/transliteration_body.cxx @@ -260,7 +260,7 @@ static OUString transliterate_titlecase_Impl( xCharClassImpl->toLower( aText, 1, aText.getLength() - 1, rLocale ); pOffset->realloc( aRes.getLength() ); - auto [begin, end] = toNonConstRange(*pOffset); + auto [begin, end] = asNonConstRange(*pOffset); sal_Int32* pOffsetInt = std::fill_n(begin, nResolvedLen, 0); std::iota(pOffsetInt, end, 1); } -- cgit v1.2.3