comphelper/source/misc/sequenceashashmap.cxx   |   10 +++----
 configmgr/source/valueparser.cxx               |   33 +++++++++++++++----------
 oox/source/drawingml/customshapepresetdata.cxx |   12 ++++-----
 vcl/qt5/QtGraphics_GDI.cxx                     |    4 +--
 vcl/qt5/QtSvpGraphics.cxx                      |    4 +--
 vcl/source/filter/FilterConfigCache.cxx        |    4 +--
 vcl/source/filter/ixbm/xbmread.cxx             |    6 ++--
 vcl/source/window/builder.cxx                  |    2 -
 vcl/unx/generic/app/saldisp.cxx                |    4 +--
 vcl/unx/generic/gdi/salgdi.cxx                 |    4 +--
 vcl/unx/gtk3/salnativewidgets-gtk.cxx          |    4 +--
 11 files changed, 48 insertions(+), 39 deletions(-)

New commits:
commit 0a5d4dc25c5521de221f63dbc47c6ba79a51f8fb
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Tue Feb 6 12:27:45 2024 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Tue Feb 6 17:07:23 2024 +0100

    elide some OString temporaries
    
    Change-Id: I2ecb6af11c95605c84e935b850fe94a1831a1497
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163043
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/comphelper/source/misc/sequenceashashmap.cxx 
b/comphelper/source/misc/sequenceashashmap.cxx
index 270c005db259..db2c99a7a814 100644
--- a/comphelper/source/misc/sequenceashashmap.cxx
+++ b/comphelper/source/misc/sequenceashashmap.cxx
@@ -77,7 +77,7 @@ uno::Any jsonToUnoAny(const boost::property_tree::ptree& 
aTree)
             else if (aTypeClass == uno::TypeClass_BYTE)
                 aAny <<= static_cast<sal_Int8>(o3tl::toInt32(rValue));
             else if (aTypeClass == uno::TypeClass_BOOLEAN)
-                aAny <<= OString(rValue).toBoolean();
+                aAny <<= rtl_str_toBoolean(rValue.c_str());
             else if (aTypeClass == uno::TypeClass_SHORT)
                 aAny <<= static_cast<sal_Int16>(o3tl::toInt32(rValue));
             else if (aTypeClass == uno::TypeClass_UNSIGNED_SHORT)
@@ -87,7 +87,7 @@ uno::Any jsonToUnoAny(const boost::property_tree::ptree& 
aTree)
             else if (aTypeClass == uno::TypeClass_UNSIGNED_LONG)
                 aAny <<= static_cast<sal_uInt32>(o3tl::toInt32(rValue));
             else if (aTypeClass == uno::TypeClass_FLOAT)
-                aAny <<= OString(rValue).toFloat();
+                aAny <<= rtl_str_toFloat(rValue.c_str());
             else if (aTypeClass == uno::TypeClass_DOUBLE)
                 aAny <<= o3tl::toDouble(rValue);
             else if (aTypeClass == uno::TypeClass_STRING)
@@ -325,9 +325,9 @@ std::vector<css::beans::PropertyValue> 
JsonToPropertyValues(const OString& rJson
         if (rType == "string")
             aValue.Value <<= OUString::fromUtf8(rValue);
         else if (rType == "boolean")
-            aValue.Value <<= OString(rValue).toBoolean();
+            aValue.Value <<= rtl_str_toBoolean(rValue.c_str());
         else if (rType == "float")
-            aValue.Value <<= OString(rValue).toFloat();
+            aValue.Value <<= rtl_str_toFloat(rValue.c_str());
         else if (rType == "long")
             aValue.Value <<= o3tl::toInt32(rValue);
         else if (rType == "short")
@@ -341,7 +341,7 @@ std::vector<css::beans::PropertyValue> 
JsonToPropertyValues(const OString& rJson
         else if (rType == "int16")
             aValue.Value <<= sal_Int16(o3tl::toInt32(rValue));
         else if (rType == "uint64")
-            aValue.Value <<= OString(rValue).toUInt64();
+            aValue.Value <<= rtl_str_toUInt64(rValue.c_str(), 10);
         else if (rType == "uint32")
             aValue.Value <<= o3tl::toUInt32(rValue);
         else if (rType == "uint16")
diff --git a/configmgr/source/valueparser.cxx b/configmgr/source/valueparser.cxx
index 6b9faf6edbe0..c81d975e474c 100644
--- a/configmgr/source/valueparser.cxx
+++ b/configmgr/source/valueparser.cxx
@@ -80,15 +80,21 @@ bool parseValue(xmlreader::Span const & text, sal_Bool * 
value) {
 bool parseValue(xmlreader::Span const & text, sal_Int16 * value) {
     assert(text.is() && value != nullptr);
     // For backwards compatibility, support hexadecimal values:
-    sal_Int32 n =
+    bool bStartWithHexPrefix =
         rtl_str_shortenedCompareIgnoreAsciiCase_WithLength(
             text.begin, text.length, RTL_CONSTASCII_STRINGPARAM("0X"),
-            RTL_CONSTASCII_LENGTH("0X")) == 0 ?
-        static_cast< sal_Int32 >(
-            OString(
+            RTL_CONSTASCII_LENGTH("0X")) == 0;
+    sal_Int32 n;
+    if (bStartWithHexPrefix)
+    {
+        std::string_view sView(
                 text.begin + RTL_CONSTASCII_LENGTH("0X"),
-                text.length - RTL_CONSTASCII_LENGTH("0X")).toUInt32(16)) :
-        OString(text.begin, text.length).toInt32();
+                text.length - RTL_CONSTASCII_LENGTH("0X"));
+        n = o3tl::toUInt32(sView, 16);
+    }
+    else
+        n = o3tl::toInt32(std::string_view(text.begin, text.length));
+
         //TODO: check valid lexical representation
     if (n >= SAL_MIN_INT16 && n <= SAL_MAX_INT16) {
         *value = static_cast< sal_Int16 >(n);
@@ -122,15 +128,18 @@ bool parseValue(xmlreader::Span const & text, sal_Int32 * 
value) {
 bool parseValue(xmlreader::Span const & text, sal_Int64 * value) {
     assert(text.is() && value != nullptr);
     // For backwards compatibility, support hexadecimal values:
-    *value =
+    bool bStartWithHexPrefix =
         rtl_str_shortenedCompareIgnoreAsciiCase_WithLength(
             text.begin, text.length, RTL_CONSTASCII_STRINGPARAM("0X"),
-            RTL_CONSTASCII_LENGTH("0X")) == 0 ?
-        static_cast< sal_Int64 >(
-            OString(
+            RTL_CONSTASCII_LENGTH("0X")) == 0;
+    if (bStartWithHexPrefix)
+    {
+        OString sSuffix(
                 text.begin + RTL_CONSTASCII_LENGTH("0X"),
-                text.length - RTL_CONSTASCII_LENGTH("0X")).toUInt64(16)) :
-        OString(text.begin, text.length).toInt64();
+                text.length - RTL_CONSTASCII_LENGTH("0X"));
+        *value = static_cast< sal_Int64 >(sSuffix.toUInt64(16));
+    }
+    else *value = o3tl::toInt64(std::string_view(text.begin, text.length));
         //TODO: check valid lexical representation
     return true;
 }
diff --git a/oox/source/drawingml/customshapepresetdata.cxx 
b/oox/source/drawingml/customshapepresetdata.cxx
index 3215b9834a42..6f9d2acffd1b 100644
--- a/oox/source/drawingml/customshapepresetdata.cxx
+++ b/oox/source/drawingml/customshapepresetdata.cxx
@@ -35,20 +35,20 @@ void lcl_parseAdjustmentValue(
     drawing::EnhancedCustomShapeAdjustmentValue aAdjustmentValue;
     do
     {
-        OString aToken(o3tl::trim(o3tl::getToken(rValue, 0, ',', nIndex)));
+        std::string_view aToken(o3tl::trim(o3tl::getToken(rValue, 0, ',', 
nIndex)));
         static const char aNamePrefix[] = "Name = \"";
         static const char aValuePrefix[] = "Value = (any) { (long) ";
         if (o3tl::starts_with(aToken, aNamePrefix))
         {
-            OString aName = aToken.copy(strlen(aNamePrefix),
-                                        aToken.getLength() - 
strlen(aNamePrefix) - strlen("\""));
+            std::string_view aName = aToken.substr(
+                strlen(aNamePrefix), aToken.size() - strlen(aNamePrefix) - 
strlen("\""));
             aAdjustmentValue.Name = OUString::fromUtf8(aName);
         }
         else if (o3tl::starts_with(aToken, aValuePrefix))
         {
-            OString aValue = aToken.copy(strlen(aValuePrefix),
-                                         aToken.getLength() - 
strlen(aValuePrefix) - strlen(" }"));
-            aAdjustmentValue.Value <<= aValue.toInt32();
+            std::string_view aValue = aToken.substr(
+                strlen(aValuePrefix), aToken.size() - strlen(aValuePrefix) - 
strlen(" }"));
+            aAdjustmentValue.Value <<= o3tl::toInt32(aValue);
         }
         else if (!o3tl::starts_with(aToken, "State = "))
             SAL_WARN("oox", "lcl_parseAdjustmentValue: unexpected prefix: " << 
aToken);
diff --git a/vcl/qt5/QtGraphics_GDI.cxx b/vcl/qt5/QtGraphics_GDI.cxx
index 2005de80f7ba..87c7fb85725b 100644
--- a/vcl/qt5/QtGraphics_GDI.cxx
+++ b/vcl/qt5/QtGraphics_GDI.cxx
@@ -32,6 +32,7 @@
 #include <numeric>
 #include <basegfx/polygon/b2dpolygontools.hxx>
 #include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <o3tl/string_view.hxx>
 
 QtGraphicsBackend::QtGraphicsBackend(QtFrame* pFrame, QImage* pQImage)
     : m_pFrame(pFrame)
@@ -694,8 +695,7 @@ void QtGraphics::GetResolution(sal_Int32& rDPIX, sal_Int32& 
rDPIY)
     char* pForceDpi;
     if ((pForceDpi = getenv("SAL_FORCEDPI")))
     {
-        OString sForceDPI(pForceDpi);
-        rDPIX = rDPIY = sForceDPI.toInt32();
+        rDPIX = rDPIY = o3tl::toInt32(std::string_view(pForceDpi));
         return;
     }
 
diff --git a/vcl/qt5/QtSvpGraphics.cxx b/vcl/qt5/QtSvpGraphics.cxx
index 903fee1f56a4..7d0715be33c5 100644
--- a/vcl/qt5/QtSvpGraphics.cxx
+++ b/vcl/qt5/QtSvpGraphics.cxx
@@ -10,6 +10,7 @@
 #include <sal/config.h>
 #include <sal/log.hxx>
 #include <salbmp.hxx>
+#include <o3tl/string_view.hxx>
 
 #include <config_cairo_canvas.h>
 
@@ -98,8 +99,7 @@ void QtSvpGraphics::GetResolution(sal_Int32& rDPIX, 
sal_Int32& rDPIY)
     char* pForceDpi;
     if ((pForceDpi = getenv("SAL_FORCEDPI")))
     {
-        OString sForceDPI(pForceDpi);
-        rDPIX = rDPIY = sForceDPI.toInt32();
+        rDPIX = rDPIY = o3tl::toInt32(std::string_view(pForceDpi));
         return;
     }
 
diff --git a/vcl/source/filter/FilterConfigCache.cxx 
b/vcl/source/filter/FilterConfigCache.cxx
index 5b49f30f678b..a00b7996f5ed 100644
--- a/vcl/source/filter/FilterConfigCache.cxx
+++ b/vcl/source/filter/FilterConfigCache.cxx
@@ -20,6 +20,7 @@
 #include "FilterConfigCache.hxx"
 
 #include <o3tl/safeint.hxx>
+#include <o3tl/string_view.hxx>
 #include <vcl/graphicfilter.hxx>
 #include <comphelper/configuration.hxx>
 #include <tools/svlibrary.h>
@@ -247,8 +248,7 @@ void FilterConfigCache::ImplInitSmart()
         aEntry.sType = sExtension;
         aEntry.sUIName = sExtension;
 
-        OString sFlags( *pPtr++ );
-        aEntry.nFlags = sFlags.toInt32();
+        aEntry.nFlags = o3tl::toInt32(std::string_view(*pPtr++));
 
         OUString    sUserData( OUString::createFromAscii( *pPtr ) );
         aEntry.CreateFilterName( sUserData );
diff --git a/vcl/source/filter/ixbm/xbmread.cxx 
b/vcl/source/filter/ixbm/xbmread.cxx
index ceb942d20392..11fded73ffd4 100644
--- a/vcl/source/filter/ixbm/xbmread.cxx
+++ b/vcl/source/filter/ixbm/xbmread.cxx
@@ -20,7 +20,7 @@
 #include <memory>
 #include <sal/config.h>
 #include <tools/stream.hxx>
-
+#include <o3tl/string_view.hxx>
 #include <rtl/character.hxx>
 
 #include <vcl/BitmapWriteAccess.hxx>
@@ -181,11 +181,11 @@ int XBMReader::ParseDefine( const char* pDefine )
     if( ( pTmp[0] == '0' ) && ( ( pTmp[1] == 'X' ) || ( pTmp[1] == 'x' ) ) )
     {
         pTmp += 2;
-        nRet = OString(pTmp, strlen(pTmp)).toInt32(16);
+        nRet = o3tl::toInt32(std::string_view(pTmp), 16);
     }
     else // read decimal
     {
-        nRet = OString(pTmp, strlen(pTmp)).toInt32();
+        nRet = o3tl::toInt32(std::string_view(pTmp));
     }
 
     return nRet;
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index bc307ba85561..b4c96baf6595 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -2976,7 +2976,7 @@ void VclBuilder::handleRow(xmlreader::XmlReader &reader, 
const OUString &rID)
                     if (name == "id")
                     {
                         name = reader.getAttributeValue(false);
-                        nId = OString(name.begin, name.length).toUInt32();
+                        nId = o3tl::toUInt32(std::string_view(name.begin, 
name.length));
                     }
                     else if (nId == 0 && name == "translatable" && 
reader.getAttributeValue(false) == "yes")
                     {
diff --git a/vcl/unx/generic/app/saldisp.cxx b/vcl/unx/generic/app/saldisp.cxx
index 6733e483239a..a5f9c2f42e5d 100644
--- a/vcl/unx/generic/app/saldisp.cxx
+++ b/vcl/unx/generic/app/saldisp.cxx
@@ -60,6 +60,7 @@
 #include <unx/sm.hxx>
 #include <unx/wmadaptor.hxx>
 #include <unx/glyphcache.hxx>
+#include <o3tl/string_view.hxx>
 
 #include <poll.h>
 #include <memory>
@@ -503,8 +504,7 @@ void SalDisplay::Init()
     const char* pValStr = XGetDefault( pDisp_, "Xft", "dpi" );
     if( pValStr != nullptr )
     {
-        const OString aValStr( pValStr );
-        const tools::Long nDPI = static_cast<tools::Long>(aValStr.toDouble());
+        const tools::Long nDPI = 
static_cast<tools::Long>(o3tl::toDouble(std::string_view(pValStr)));
         // guard against insane resolution
         if( sal_ValidDPI(nDPI) )
         {
diff --git a/vcl/unx/generic/gdi/salgdi.cxx b/vcl/unx/generic/gdi/salgdi.cxx
index f296e3cf34a4..39ded2207cd3 100644
--- a/vcl/unx/generic/gdi/salgdi.cxx
+++ b/vcl/unx/generic/gdi/salgdi.cxx
@@ -38,6 +38,7 @@
 #include <vcl/sysdata.hxx>
 #include <vcl/virdev.hxx>
 #include <sal/log.hxx>
+#include <o3tl/string_view.hxx>
 
 #include <unx/salunx.h>
 #include <unx/saldisp.hxx>
@@ -157,8 +158,7 @@ void X11SalGraphics::GetResolution( sal_Int32 &rDPIX, 
sal_Int32 &rDPIY ) // cons
     char* pForceDpi;
     if ((pForceDpi = getenv("SAL_FORCEDPI")))
     {
-        OString sForceDPI(pForceDpi);
-        rDPIX = rDPIY = sForceDPI.toInt32();
+        rDPIX = rDPIY = o3tl::toInt32(std::string_view(pForceDpi));
         return;
     }
 
diff --git a/vcl/unx/gtk3/salnativewidgets-gtk.cxx 
b/vcl/unx/gtk3/salnativewidgets-gtk.cxx
index bfdeed423846..5dfaf24420c2 100644
--- a/vcl/unx/gtk3/salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/salnativewidgets-gtk.cxx
@@ -22,6 +22,7 @@
 #include <vcl/decoview.hxx>
 #include <vcl/settings.hxx>
 #include <unx/fontmanager.hxx>
+#include <o3tl/string_view.hxx>
 
 #include "gtkcairo.hxx"
 #include <optional>
@@ -3061,8 +3062,7 @@ void GtkSalGraphics::GetResolution(sal_Int32& rDPIX, 
sal_Int32& rDPIY)
     char* pForceDpi;
     if ((pForceDpi = getenv("SAL_FORCEDPI")))
     {
-        OString sForceDPI(pForceDpi);
-        rDPIX = rDPIY = sForceDPI.toInt32();
+        rDPIX = rDPIY = o3tl::toInt32(std::string_view(pForceDpi));
         return;
     }
 

Reply via email to