diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2022-08-01 18:58:55 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-08-01 20:53:28 +0200 |
commit | 75a862b887fb0b7ff633a396ee7f7f34c2c82964 (patch) | |
tree | 50361f282bfcd20ff04f97b59806b95029a9a405 /writerfilter | |
parent | f8d764b138fddde719a04683f9bd3720c21e0656 (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.cxx | 12 | ||||
-rw-r--r-- | writerfilter/source/ooxml/OOXMLPropertySet.cxx | 41 | ||||
-rw-r--r-- | writerfilter/source/ooxml/OOXMLPropertySet.hxx | 12 |
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); } |