chart2/source/controller/dialogs/DataBrowser.cxx | 2 - chart2/source/controller/dialogs/ObjectNameProvider.cxx | 14 ++++---- chart2/source/controller/inc/ChartController.hxx | 2 - chart2/source/controller/main/ChartController_Window.cxx | 8 ++-- chart2/source/inc/CommonConverters.hxx | 2 - chart2/source/inc/ObjectIdentifier.hxx | 6 +-- chart2/source/tools/CommonConverters.cxx | 4 +- chart2/source/tools/InternalData.cxx | 8 ++-- chart2/source/tools/ObjectIdentifier.cxx | 26 +++++++-------- chart2/source/tools/PropertyHelper.cxx | 6 +-- chart2/source/view/axes/VCartesianAxis.cxx | 12 +++--- chart2/source/view/charttypes/VSeriesPlotter.cxx | 2 - include/svl/sharedstring.hxx | 6 +++ sc/source/core/tool/interpr1.cxx | 2 - 14 files changed, 53 insertions(+), 47 deletions(-)
New commits: commit d9e044f04ac11b76b9a3dac575f4e9155b67490e Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Mon Sep 26 13:06:44 2022 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Mon Sep 26 15:19:54 2022 +0200 use more string_view in chart2 Change-Id: I2afe0b5f82d1704a29bc80a969ee099eec90d3a7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140590 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/chart2/source/controller/dialogs/DataBrowser.cxx b/chart2/source/controller/dialogs/DataBrowser.cxx index eb15e8f3d87b..ce7687162eb1 100644 --- a/chart2/source/controller/dialogs/DataBrowser.cxx +++ b/chart2/source/controller/dialogs/DataBrowser.cxx @@ -620,7 +620,7 @@ void DataBrowser::RenewTable() GetDataWindow().LogicToPixel( Size( 42, 0 )).getWidth() )); OUString aDefaultSeriesName(SchResId(STR_COLUMN_LABEL)); - replaceParamterInString( aDefaultSeriesName, "%COLUMNNUMBER", OUString::number( 24 ) ); + replaceParamterInString( aDefaultSeriesName, u"%COLUMNNUMBER", OUString::number( 24 ) ); sal_Int32 nColumnWidth = GetDataWindow().GetTextWidth( aDefaultSeriesName ) + GetDataWindow().LogicToPixel(Point(8 + impl::SeriesHeader::GetRelativeAppFontXPosForNameField(), 0), MapMode(MapUnit::MapAppFont)).X(); sal_Int32 nColumnCount = m_apDataBrowserModel->getColumnCount(); diff --git a/chart2/source/controller/dialogs/ObjectNameProvider.cxx b/chart2/source/controller/dialogs/ObjectNameProvider.cxx index 987e5c7412cc..2bf6af625555 100644 --- a/chart2/source/controller/dialogs/ObjectNameProvider.cxx +++ b/chart2/source/controller/dialogs/ObjectNameProvider.cxx @@ -732,7 +732,7 @@ OUString ObjectNameProvider::getSelectedObjectText( std::u16string_view rObjectC sal_Int32 nPointIndex = o3tl::toInt32( ObjectIdentifier::getParticleID(rObjectCID) ); // replace data point index - replaceParamterInString( aRet, "%POINTNUMBER", OUString::number( nPointIndex + 1 )); + replaceParamterInString( aRet, u"%POINTNUMBER", OUString::number( nPointIndex + 1 )); // replace data series index { @@ -744,11 +744,11 @@ OUString ObjectNameProvider::getSelectedObjectText( std::u16string_view rObjectC if( aSeriesVector[nSeriesIndex] == xSeries ) break; } - replaceParamterInString( aRet, "%SERIESNUMBER", OUString::number( nSeriesIndex + 1 ) ); + replaceParamterInString( aRet, u"%SERIESNUMBER", OUString::number( nSeriesIndex + 1 ) ); } // replace point value - replaceParamterInString( aRet, "%POINTVALUES", lcl_getDataPointValueText( + replaceParamterInString( aRet, u"%POINTVALUES", lcl_getDataPointValueText( xSeries, nPointIndex, DataSeriesHelper::getCoordinateSystemOfSeries(xSeries, xDiagram), xChartDocument ) ); } } @@ -760,7 +760,7 @@ OUString ObjectNameProvider::getSelectedObjectText( std::u16string_view rObjectC if( !aHelpText.isEmpty()) { aRet = SchResId( STR_STATUS_OBJECT_MARKED ); - replaceParamterInString( aRet, "%OBJECTNAME", aHelpText ); + replaceParamterInString( aRet, u"%OBJECTNAME", aHelpText ); } } @@ -843,8 +843,8 @@ OUString ObjectNameProvider::getName_ObjectForSeries( if( xSeries.is() ) { OUString aRet = SchResId(STR_OBJECT_FOR_SERIES); - replaceParamterInString( aRet, "%OBJECTNAME", getName( eObjectType ) ); - replaceParamterInString( aRet, "%SERIESNAME", lcl_getDataSeriesName( rSeriesCID, xChartDocument ) ); + replaceParamterInString( aRet, u"%OBJECTNAME", getName( eObjectType ) ); + replaceParamterInString( aRet, u"%SERIESNAME", lcl_getDataSeriesName( rSeriesCID, xChartDocument ) ); return aRet; } else @@ -854,7 +854,7 @@ OUString ObjectNameProvider::getName_ObjectForSeries( OUString ObjectNameProvider::getName_ObjectForAllSeries( ObjectType eObjectType ) { OUString aRet = SchResId(STR_OBJECT_FOR_ALL_SERIES); - replaceParamterInString( aRet, "%OBJECTNAME", getName( eObjectType, true /*bPlural*/ ) ); + replaceParamterInString( aRet, u"%OBJECTNAME", getName( eObjectType, true /*bPlural*/ ) ); return aRet; } diff --git a/chart2/source/controller/inc/ChartController.hxx b/chart2/source/controller/inc/ChartController.hxx index f777de00ece7..ef229ad9abc8 100644 --- a/chart2/source/controller/inc/ChartController.hxx +++ b/chart2/source/controller/inc/ChartController.hxx @@ -508,7 +508,7 @@ private: void executeDispatch_LineColor(sal_uInt32 nColor); void executeDispatch_LineWidth(sal_uInt32 nWidth); - void sendPopupRequest(OUString const & rCID, tools::Rectangle aRectangle); + void sendPopupRequest(std::u16string_view rCID, tools::Rectangle aRectangle); void impl_ShapeControllerDispatch( const css::util::URL& rURL, const css::uno::Sequence< css::beans::PropertyValue >& rArgs ); diff --git a/chart2/source/controller/main/ChartController_Window.cxx b/chart2/source/controller/main/ChartController_Window.cxx index 78734d05e06a..41cb6e592db0 100644 --- a/chart2/source/controller/main/ChartController_Window.cxx +++ b/chart2/source/controller/main/ChartController_Window.cxx @@ -2066,7 +2066,7 @@ css::uno::Reference<css::uno::XInterface> const & ChartController::getChartView( return m_xChartView; } -void ChartController::sendPopupRequest(OUString const & rCID, tools::Rectangle aRectangle) +void ChartController::sendPopupRequest(std::u16string_view rCID, tools::Rectangle aRectangle) { ChartModel* pChartModel = m_aModel->getModel().get(); if (!pChartModel) @@ -2085,10 +2085,10 @@ void ChartController::sendPopupRequest(OUString const & rCID, tools::Rectangle a return; // Get dimension index from CID - sal_Int32 nStartPos = rCID.lastIndexOf('.'); + size_t nStartPos = rCID.rfind('.'); nStartPos++; - sal_Int32 nEndPos = rCID.getLength(); - std::u16string_view sDimensionIndex = rCID.subView(nStartPos, nEndPos - nStartPos); + sal_Int32 nEndPos = rCID.size(); + std::u16string_view sDimensionIndex = rCID.substr(nStartPos, nEndPos - nStartPos); sal_Int32 nDimensionIndex = o3tl::toInt32(sDimensionIndex); awt::Rectangle xRectangle { diff --git a/chart2/source/inc/CommonConverters.hxx b/chart2/source/inc/CommonConverters.hxx index 7e8a1b86834a..c6dc7b2ecd1d 100644 --- a/chart2/source/inc/CommonConverters.hxx +++ b/chart2/source/inc/CommonConverters.hxx @@ -211,7 +211,7 @@ sal_Int16 getShortForLongAlso( const css::uno::Any& rAny ); OOO_DLLPUBLIC_CHARTTOOLS bool replaceParamterInString( OUString & rInOutResourceString, - const OUString & rParamToReplace, + std::u16string_view rParamToReplace, std::u16string_view rReplaceWith ); } //namespace chart diff --git a/chart2/source/inc/ObjectIdentifier.hxx b/chart2/source/inc/ObjectIdentifier.hxx index 46b4a279a9d1..00fd5a176d44 100644 --- a/chart2/source/inc/ObjectIdentifier.hxx +++ b/chart2/source/inc/ObjectIdentifier.hxx @@ -177,8 +177,8 @@ public: bool isDragableObject() const; static bool isRotateableObject( std::u16string_view rClassifiedIdentifier ); static bool isMultiClickObject( std::u16string_view rClassifiedIdentifier ); - static bool areSiblings( const OUString& rCID1, const OUString& rCID2 );//identical object is no sibling - static bool areIdenticalObjects( const OUString& rCID1, const OUString& rCID2 ); + static bool areSiblings( std::u16string_view rCID1, std::u16string_view rCID2 );//identical object is no sibling + static bool areIdenticalObjects( std::u16string_view rCID1, std::u16string_view rCID2 ); static OUString getStringForType( ObjectType eObjectType ); static ObjectType getObjectType( std::u16string_view rCID ); @@ -193,7 +193,7 @@ public: static OUString createDataCurveCID( std::u16string_view rSeriesParticle, sal_Int32 nCurveIndex, bool bAverageLine ); static OUString createDataCurveEquationCID( std::u16string_view rSeriesParticle, sal_Int32 nCurveIndex ); - SAL_DLLPRIVATE static OUString getObjectID( const OUString& rCID ); + SAL_DLLPRIVATE static OUString getObjectID( std::u16string_view rCID ); static std::u16string_view getParticleID( std::u16string_view rCID ); static std::u16string_view getFullParentParticle( std::u16string_view rCID ); diff --git a/chart2/source/tools/CommonConverters.cxx b/chart2/source/tools/CommonConverters.cxx index 6e47b548370d..50b08397e1d4 100644 --- a/chart2/source/tools/CommonConverters.cxx +++ b/chart2/source/tools/CommonConverters.cxx @@ -583,7 +583,7 @@ sal_Int16 getShortForLongAlso( const uno::Any& rAny ) } bool replaceParamterInString( OUString & rInOutResourceString, - const OUString & rParamToReplace, + std::u16string_view rParamToReplace, std::u16string_view rReplaceWith ) { sal_Int32 nPos = rInOutResourceString.indexOf( rParamToReplace ); @@ -591,7 +591,7 @@ bool replaceParamterInString( OUString & rInOutResourceString, return false; rInOutResourceString = rInOutResourceString.replaceAt( nPos - , rParamToReplace.getLength(), rReplaceWith ); + , rParamToReplace.size(), rReplaceWith ); return true; } diff --git a/chart2/source/tools/InternalData.cxx b/chart2/source/tools/InternalData.cxx index b6fc1e09044f..50a86a492c14 100644 --- a/chart2/source/tools/InternalData.cxx +++ b/chart2/source/tools/InternalData.cxx @@ -49,11 +49,11 @@ namespace { struct lcl_NumberedStringGenerator { - lcl_NumberedStringGenerator( const OUString & rStub, const OUString & rWildcard ) : + lcl_NumberedStringGenerator( const OUString & rStub, std::u16string_view rWildcard ) : m_aStub( rStub ), m_nCounter( 0 ), m_nStubStartIndex( rStub.indexOf( rWildcard )), - m_nWildcardLength( rWildcard.getLength()) + m_nWildcardLength( rWildcard.size()) { } vector< uno::Any > operator()() @@ -114,12 +114,12 @@ void InternalData::createDefaultData() m_aRowLabels.clear(); m_aRowLabels.reserve( m_nRowCount ); generate_n( back_inserter( m_aRowLabels ), m_nRowCount, - lcl_NumberedStringGenerator( aRowName, "%ROWNUMBER" )); + lcl_NumberedStringGenerator( aRowName, u"%ROWNUMBER" )); m_aColumnLabels.clear(); m_aColumnLabels.reserve( m_nColumnCount ); generate_n( back_inserter( m_aColumnLabels ), m_nColumnCount, - lcl_NumberedStringGenerator( aColName, "%COLUMNNUMBER" )); + lcl_NumberedStringGenerator( aColName, u"%COLUMNNUMBER" )); } void InternalData::setData( const Sequence< Sequence< double > >& rDataInRows ) diff --git a/chart2/source/tools/ObjectIdentifier.cxx b/chart2/source/tools/ObjectIdentifier.cxx index 7d647aa854dd..366c32d5dd4c 100644 --- a/chart2/source/tools/ObjectIdentifier.cxx +++ b/chart2/source/tools/ObjectIdentifier.cxx @@ -751,14 +751,14 @@ bool ObjectIdentifier::isMultiClickObject( std::u16string_view rClassifiedIdenti return bRet; } -bool ObjectIdentifier::areSiblings( const OUString& rCID1, const OUString& rCID2 ) +bool ObjectIdentifier::areSiblings( std::u16string_view rCID1, std::u16string_view rCID2 ) { bool bRet=false; - sal_Int32 nLastSign1 = rCID1.lastIndexOf( '=' ); - sal_Int32 nLastSign2 = rCID2.lastIndexOf( '=' ); - if( nLastSign1 == rCID1.indexOf( '=' ) )//CID cannot be sibling if only one "=" occurs + size_t nLastSign1 = rCID1.rfind( '=' ); + size_t nLastSign2 = rCID2.rfind( '=' ); + if( nLastSign1 == rCID1.find( '=' ) )//CID cannot be sibling if only one "=" occurs bRet=false; - else if( nLastSign2 == rCID2.indexOf( '=' ) )//CID cannot be sibling if only one "=" occurs + else if( nLastSign2 == rCID2.find( '=' ) )//CID cannot be sibling if only one "=" occurs bRet=false; else if( ObjectIdentifier::areIdenticalObjects( rCID1, rCID2 ) ) bRet=false; @@ -781,14 +781,14 @@ bool ObjectIdentifier::areSiblings( const OUString& rCID1, const OUString& rCID2 return bRet; } -bool ObjectIdentifier::areIdenticalObjects( const OUString& rCID1, const OUString& rCID2 ) +bool ObjectIdentifier::areIdenticalObjects( std::u16string_view rCID1, std::u16string_view rCID2 ) { if( rCID1 == rCID2 ) return true; //draggable pie or donut segments need special treatment, as their CIDs do change with offset { - if( rCID1.indexOf( m_aPieSegmentDragMethodServiceName ) < 0 - || rCID2.indexOf( m_aPieSegmentDragMethodServiceName ) < 0 ) + if( rCID1.find( m_aPieSegmentDragMethodServiceName ) == std::u16string_view::npos + || rCID2.find( m_aPieSegmentDragMethodServiceName ) == std::u16string_view::npos ) return false; OUString aID1( ObjectIdentifier::getObjectID( rCID1 ) ); @@ -1063,16 +1063,16 @@ std::u16string_view ObjectIdentifier::getFullParentParticle( std::u16string_view return aRet; } -OUString ObjectIdentifier::getObjectID( const OUString& rCID ) +OUString ObjectIdentifier::getObjectID( std::u16string_view rCID ) { OUString aRet; - sal_Int32 nStartPos = rCID.lastIndexOf('/'); - if( nStartPos>=0 ) + size_t nStartPos = rCID.rfind('/'); + if( nStartPos != std::u16string_view::npos ) { nStartPos++; - sal_Int32 nEndPos = rCID.getLength(); - aRet = rCID.copy(nStartPos,nEndPos-nStartPos); + size_t nEndPos = rCID.size(); + aRet = rCID.substr(nStartPos,nEndPos-nStartPos); } return aRet; diff --git a/chart2/source/tools/PropertyHelper.cxx b/chart2/source/tools/PropertyHelper.cxx index 6aa063a4407c..90e0b06cdf59 100644 --- a/chart2/source/tools/PropertyHelper.cxx +++ b/chart2/source/tools/PropertyHelper.cxx @@ -83,11 +83,11 @@ struct lcl_OUStringRestToInt32 explicit lcl_OUStringRestToInt32( sal_Int32 nPrefixLength ) : m_nPrefixLength( nPrefixLength ) {} - sal_Int32 operator() ( const OUString & rStr ) + sal_Int32 operator() ( std::u16string_view rStr ) { - if( m_nPrefixLength > rStr.getLength() ) + if( m_nPrefixLength > static_cast<sal_Int32>(rStr.size()) ) return 0; - return o3tl::toInt32(rStr.subView( m_nPrefixLength )); + return o3tl::toInt32(rStr.substr( m_nPrefixLength )); } private: sal_Int32 m_nPrefixLength; diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx index 1bfd0bf09c3e..8bd6690ff3ca 100644 --- a/chart2/source/view/axes/VCartesianAxis.cxx +++ b/chart2/source/view/axes/VCartesianAxis.cxx @@ -80,7 +80,7 @@ VCartesianAxis::~VCartesianAxis() static void lcl_ResizeTextShapeToFitAvailableSpace( SvxShapeText& rShape2DText, const AxisLabelProperties& rAxisLabelProperties, - const OUString& rLabel, + std::u16string_view rLabel, const tNameSequence& rPropNames, const tAnySequence& rPropValues, const bool bIsHorizontalAxis ) @@ -89,10 +89,10 @@ static void lcl_ResizeTextShapeToFitAvailableSpace( SvxShapeText& rShape2DText, bool bIsDirectionVertical = bIsHorizontalAxis && bTextHorizontal; const sal_Int32 nFullSize = bIsDirectionVertical ? rAxisLabelProperties.m_aFontReferenceSize.Height : rAxisLabelProperties.m_aFontReferenceSize.Width; - if( !nFullSize || !rLabel.getLength() ) + if( !nFullSize || rLabel.empty() ) return; - const sal_Int32 nAvgCharWidth = rShape2DText.getSize().Width / rLabel.getLength(); + const sal_Int32 nAvgCharWidth = rShape2DText.getSize().Width / rLabel.size(); sal_Int32 nMaxLabelsSize = bIsDirectionVertical ? rAxisLabelProperties.m_aMaximumSpaceForLabels.Height : rAxisLabelProperties.m_aMaximumSpaceForLabels.Width; @@ -105,16 +105,16 @@ static void lcl_ResizeTextShapeToFitAvailableSpace( SvxShapeText& rShape2DText, static const OUStringLiteral sDots = u"..."; const sal_Int32 nCharsToRemove = ( nTextSize - nMaxLabelsSize ) / nAvgCharWidth + 1; - sal_Int32 nNewLen = rLabel.getLength() - nCharsToRemove - sDots.getLength(); + sal_Int32 nNewLen = rLabel.size() - nCharsToRemove - sDots.getLength(); // Prevent from showing only dots if (nNewLen < 0) - nNewLen = ( rLabel.getLength() >= sDots.getLength() ) ? sDots.getLength() : rLabel.getLength(); + nNewLen = ( sal_Int32(rLabel.size()) >= sDots.getLength() ) ? sDots.getLength() : rLabel.size(); bool bCrop = nCharsToRemove > 0; if( !bCrop ) return; - OUString aNewLabel = rLabel.copy( 0, nNewLen ); + OUString aNewLabel( rLabel.substr( 0, nNewLen ) ); if( nNewLen > sDots.getLength() ) aNewLabel += sDots; rShape2DText.setString( aNewLabel ); diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx index 65d404fb0be8..130bb300cb66 100644 --- a/chart2/source/view/charttypes/VSeriesPlotter.cxx +++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx @@ -2832,7 +2832,7 @@ std::vector< ViewLegendEntry > VSeriesPlotter::createLegendEntriesForSeries( { //label OUString aResStr( RegressionCurveHelper::getUINameForRegressionCurve( aCurves[i] ) ); - replaceParamterInString( aResStr, "%SERIESNAME", aLabelText ); + replaceParamterInString( aResStr, u"%SERIESNAME", aLabelText ); aEntry.aLabel = FormattedStringHelper::createFormattedStringSequence( xContext, aResStr, xTextProperties ); // symbol commit b419eb4bd407c26ee813a347fdf14424908379e1 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Mon Sep 26 12:26:57 2022 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Mon Sep 26 15:19:39 2022 +0200 crashtesting: forum-de2-1635.ods regression from commit b52fd544b9c128d3e28de6355286f6480b618e93 Date: Tue Sep 20 15:48:38 2022 +0200 avoid some string refcounting with sheets with lots of conditional formatting Change-Id: If1414221aef0b227200cfb6ffb8e87abb48a90c0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140589 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/include/svl/sharedstring.hxx b/include/svl/sharedstring.hxx index d84b5a16a2c9..880427d662f1 100644 --- a/include/svl/sharedstring.hxx +++ b/include/svl/sharedstring.hxx @@ -38,6 +38,7 @@ public: bool operator!= ( const SharedString& r ) const; const OUString & getString() const; + const OUString & getIgnoreCaseString() const; rtl_uString* getData(); const rtl_uString* getData() const; @@ -117,6 +118,11 @@ inline const OUString & SharedString::getString() const return mpData ? OUString::unacquired(&mpData) : EMPTY_STRING; } +inline const OUString & SharedString::getIgnoreCaseString() const +{ + return mpDataIgnoreCase ? OUString::unacquired(&mpDataIgnoreCase) : EMPTY_STRING; +} + inline rtl_uString* SharedString::getData() { return mpData; diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index cfaa72dbb978..d46844964255 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -8224,7 +8224,7 @@ void ScInterpreter::ScIndirect() do { - const OUString & aName( sSharedRefStr.getDataIgnoreCase() ); + const OUString & aName( sSharedRefStr.getIgnoreCaseString() ); ScDBCollection::NamedDBs& rDBs = mrDoc.GetDBCollection()->getNamedDBs(); const ScDBData* pData = rDBs.findByUpperName( aName); if (!pData)