summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2022-08-01 18:58:55 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-08-01 20:53:28 +0200
commit75a862b887fb0b7ff633a396ee7f7f34c2c82964 (patch)
tree50361f282bfcd20ff04f97b59806b95029a9a405 /writerfilter
parentf8d764b138fddde719a04683f9bd3720c21e0656 (diff)
use more string_view when dealing with attributes
which means we don't need to call strlen on them, since we already know how long they are. Change-Id: Iefc76f38a23250e87a65c27df3634d562464a760 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137679 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/ooxml/OOXMLFactory.cxx12
-rw-r--r--writerfilter/source/ooxml/OOXMLPropertySet.cxx41
-rw-r--r--writerfilter/source/ooxml/OOXMLPropertySet.hxx12
3 files changed, 33 insertions, 32 deletions
diff --git a/writerfilter/source/ooxml/OOXMLFactory.cxx b/writerfilter/source/ooxml/OOXMLFactory.cxx
index efedbe56d285..b11cf07c2900 100644
--- a/writerfilter/source/ooxml/OOXMLFactory.cxx
+++ b/writerfilter/source/ooxml/OOXMLFactory.cxx
@@ -59,7 +59,7 @@ void OOXMLFactory::attributes(OOXMLFastContextHandler * pHandler,
switch (pAttr->m_nResource)
{
case ResourceType::Boolean:
- xValue = OOXMLBooleanValue::Create(rAttribs.getAsCharByIndex(nAttrIndex));
+ xValue = OOXMLBooleanValue::Create(rAttribs.getAsViewByIndex(nAttrIndex));
break;
case ResourceType::String:
xValue = new OOXMLStringValue(rAttribs.getValueByIndex(nAttrIndex));
@@ -68,14 +68,14 @@ void OOXMLFactory::attributes(OOXMLFastContextHandler * pHandler,
xValue = OOXMLIntegerValue::Create(rAttribs.getAsIntegerByIndex(nAttrIndex));
break;
case ResourceType::Hex:
- xValue = new OOXMLHexValue(rAttribs.getAsCharByIndex(nAttrIndex));
+ xValue = new OOXMLHexValue(rAttribs.getAsViewByIndex(nAttrIndex));
break;
case ResourceType::HexColor:
- xValue = new OOXMLHexColorValue(rAttribs.getAsCharByIndex(nAttrIndex));
+ xValue = new OOXMLHexColorValue(rAttribs.getAsViewByIndex(nAttrIndex));
break;
case ResourceType::TwipsMeasure_asSigned:
case ResourceType::TwipsMeasure_asZero:
- xValue = new OOXMLTwipsMeasureValue(rAttribs.getAsCharByIndex(nAttrIndex));
+ xValue = new OOXMLTwipsMeasureValue(rAttribs.getAsViewByIndex(nAttrIndex));
if (xValue->getInt() < 0)
{
if (pAttr->m_nResource == ResourceType::TwipsMeasure_asZero)
@@ -83,10 +83,10 @@ void OOXMLFactory::attributes(OOXMLFastContextHandler * pHandler,
}
break;
case ResourceType::HpsMeasure:
- xValue = new OOXMLHpsMeasureValue(rAttribs.getAsCharByIndex(nAttrIndex));
+ xValue = new OOXMLHpsMeasureValue(rAttribs.getAsViewByIndex(nAttrIndex));
break;
case ResourceType::MeasurementOrPercent:
- xValue = new OOXMLMeasurementOrPercentValue(rAttribs.getAsCharByIndex(nAttrIndex));
+ xValue = new OOXMLMeasurementOrPercentValue(rAttribs.getAsViewByIndex(nAttrIndex));
break;
case ResourceType::List:
if (sal_uInt32 nValue;
diff --git a/writerfilter/source/ooxml/OOXMLPropertySet.cxx b/writerfilter/source/ooxml/OOXMLPropertySet.cxx
index 7a7d9a7d9150..230a58f34ecf 100644
--- a/writerfilter/source/ooxml/OOXMLPropertySet.cxx
+++ b/writerfilter/source/ooxml/OOXMLPropertySet.cxx
@@ -24,6 +24,7 @@
#include <com/sun/star/drawing/XShape.hpp>
#include <sax/tools/converter.hxx>
#include <tools/color.hxx>
+#include <o3tl/string_view.hxx>
#include <utility>
namespace writerfilter::ooxml
@@ -202,13 +203,13 @@ OOXMLValue * OOXMLBinaryValue::clone() const
class OOXMLBooleanValue
*/
-static bool GetBooleanValue(const char *pValue)
+static bool GetBooleanValue(std::string_view pValue)
{
- return !strcmp(pValue, "true")
- || !strcmp(pValue, "True")
- || !strcmp(pValue, "1")
- || !strcmp(pValue, "on")
- || !strcmp(pValue, "On");
+ return pValue == "true"
+ || pValue == "True"
+ || pValue == "1"
+ || pValue == "on"
+ || pValue == "On";
}
OOXMLValue::Pointer_t const & OOXMLBooleanValue::Create(bool bValue)
@@ -219,7 +220,7 @@ OOXMLValue::Pointer_t const & OOXMLBooleanValue::Create(bool bValue)
return bValue ? True : False;
}
-OOXMLValue::Pointer_t const & OOXMLBooleanValue::Create(const char *pValue)
+OOXMLValue::Pointer_t const & OOXMLBooleanValue::Create(std::string_view pValue)
{
return Create (GetBooleanValue(pValue));
}
@@ -540,8 +541,8 @@ OOXMLHexValue::OOXMLHexValue(sal_uInt32 nValue)
{
}
-OOXMLHexValue::OOXMLHexValue(const char * pValue)
-: mnValue(rtl_str_toUInt32(pValue, 16))
+OOXMLHexValue::OOXMLHexValue(std::string_view pValue)
+: mnValue(o3tl::toUInt32(pValue, 16))
{
}
@@ -572,23 +573,23 @@ string OOXMLHexValue::toString() const
/*
class OOXMLHexColorValue
*/
-OOXMLHexColorValue::OOXMLHexColorValue(const char * pValue)
+OOXMLHexColorValue::OOXMLHexColorValue(std::string_view pValue)
: OOXMLHexValue(sal_uInt32(COL_AUTO))
{
- if (!strcmp(pValue, "auto"))
+ if (pValue == "auto")
return;
- mnValue = rtl_str_toUInt32(pValue, 16);
+ mnValue = o3tl::toUInt32(pValue, 16);
// Convert hash-encoded values (like #FF0080)
- const sal_Int32 nLen = strlen(pValue);
+ const sal_Int32 nLen = pValue.size();
if ( !mnValue && nLen > 1 && pValue[0] == '#' )
{
sal_Int32 nColor(COL_AUTO);
// Word appears to require strict 6 digit length, else it ignores it
if ( nLen == 7 )
{
- const OUString sHashColor(pValue, nLen, RTL_TEXTENCODING_ASCII_US);
+ const OUString sHashColor(pValue.data(), nLen, RTL_TEXTENCODING_ASCII_US);
sax::Converter::convertColor( nColor, sHashColor );
}
mnValue = nColor;
@@ -597,11 +598,11 @@ OOXMLHexColorValue::OOXMLHexColorValue(const char * pValue)
// OOXMLUniversalMeasureValue
// ECMA-376 5th ed. Part 1 , 22.9.2.15
-OOXMLUniversalMeasureValue::OOXMLUniversalMeasureValue(const char * pValue, sal_uInt32 npPt)
+OOXMLUniversalMeasureValue::OOXMLUniversalMeasureValue(std::string_view pValue, sal_uInt32 npPt)
{
- double val = rtl_str_toDouble(pValue); // will ignore the trailing unit
+ double val = o3tl::toDouble(pValue); // will ignore the trailing unit
- int nLen = strlen(pValue);
+ int nLen = pValue.size();
if (nLen > 2 &&
pValue[nLen-2] == 'p' &&
pValue[nLen-1] == 't')
@@ -656,11 +657,11 @@ string OOXMLUniversalMeasureValue::toString() const
// OOXMLMeasurementOrPercentValue
// ECMA-376 5th ed. Part 1 , 17.18.107; 17.18.11
-OOXMLMeasurementOrPercentValue::OOXMLMeasurementOrPercentValue(const char * pValue)
+OOXMLMeasurementOrPercentValue::OOXMLMeasurementOrPercentValue(std::string_view pValue)
{
- double val = rtl_str_toDouble(pValue); // will ignore the trailing unit
+ double val = o3tl::toDouble(pValue); // will ignore the trailing unit
- int nLen = strlen(pValue);
+ int nLen = pValue.size();
if (nLen > 1 &&
pValue[nLen - 1] == '%')
{
diff --git a/writerfilter/source/ooxml/OOXMLPropertySet.hxx b/writerfilter/source/ooxml/OOXMLPropertySet.hxx
index d13fd8c5bb61..3393050afa23 100644
--- a/writerfilter/source/ooxml/OOXMLPropertySet.hxx
+++ b/writerfilter/source/ooxml/OOXMLPropertySet.hxx
@@ -101,7 +101,7 @@ class OOXMLBooleanValue final : public OOXMLValue
public:
static OOXMLValue::Pointer_t const& Create(bool bValue);
- static OOXMLValue::Pointer_t const& Create(const char* pValue);
+ static OOXMLValue::Pointer_t const& Create(std::string_view pValue);
virtual ~OOXMLBooleanValue() override;
@@ -262,7 +262,7 @@ protected:
public:
explicit OOXMLHexValue(sal_uInt32 nValue);
- explicit OOXMLHexValue(const char* pValue);
+ explicit OOXMLHexValue(std::string_view pValue);
virtual ~OOXMLHexValue() override;
OOXMLHexValue(OOXMLHexValue const&) = default;
@@ -280,7 +280,7 @@ public:
class OOXMLHexColorValue final : public OOXMLHexValue
{
public:
- explicit OOXMLHexColorValue(const char* pValue);
+ explicit OOXMLHexColorValue(std::string_view pValue);
};
class OOXMLUniversalMeasureValue : public OOXMLValue
@@ -289,7 +289,7 @@ private:
int mnValue;
public:
- OOXMLUniversalMeasureValue(const char* pValue, sal_uInt32 npPt);
+ OOXMLUniversalMeasureValue(std::string_view pValue, sal_uInt32 npPt);
virtual ~OOXMLUniversalMeasureValue() override;
OOXMLUniversalMeasureValue(OOXMLUniversalMeasureValue const&) = default;
@@ -307,7 +307,7 @@ public:
template <sal_uInt32 npPt> class OOXMLNthPtMeasureValue final : public OOXMLUniversalMeasureValue
{
public:
- explicit OOXMLNthPtMeasureValue(const char* pValue)
+ explicit OOXMLNthPtMeasureValue(std::string_view pValue)
: OOXMLUniversalMeasureValue(pValue, npPt)
{
}
@@ -325,7 +325,7 @@ class OOXMLMeasurementOrPercentValue final : public OOXMLValue
int mnValue;
public:
- explicit OOXMLMeasurementOrPercentValue(const char* pValue);
+ explicit OOXMLMeasurementOrPercentValue(std::string_view pValue);
virtual int getInt() const override;
virtual OOXMLValue* clone() const override { return new OOXMLMeasurementOrPercentValue(*this); }