use string_view for the parsing in sax utils

Change-Id: Ifd7430501318684f9999c90dd36c1ca965373947
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106499
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
Noel
2020-11-24 14:33:13 +02:00
committed by Noel Grandin
parent aac9c35c74
commit c8a2550b6a
10 changed files with 94 additions and 80 deletions

View File

@@ -59,7 +59,7 @@ class SAX_DLLPUBLIC Converter
public: public:
/** convert string to measure using optional min and max values*/ /** convert string to measure using optional min and max values*/
static bool convertMeasure( sal_Int32& rValue, static bool convertMeasure( sal_Int32& rValue,
const OUString& rString, std::u16string_view rString,
sal_Int16 nTargetUnit = css::util::MeasureUnit::MM_100TH, sal_Int16 nTargetUnit = css::util::MeasureUnit::MM_100TH,
sal_Int32 nMin = SAL_MIN_INT32, sal_Int32 nMin = SAL_MIN_INT32,
sal_Int32 nMax = SAL_MAX_INT32 ); sal_Int32 nMax = SAL_MAX_INT32 );
@@ -72,7 +72,7 @@ public:
/** convert string to boolean */ /** convert string to boolean */
static bool convertBool( bool& rBool, static bool convertBool( bool& rBool,
const OUString& rString ); std::u16string_view rString );
/** convert boolean to string */ /** convert boolean to string */
static void convertBool( OUStringBuffer& rBuffer, static void convertBool( OUStringBuffer& rBuffer,
@@ -80,7 +80,7 @@ public:
/** convert string to percent */ /** convert string to percent */
static bool convertPercent( sal_Int32& rValue, static bool convertPercent( sal_Int32& rValue,
const OUString& rString ); std::u16string_view rString );
/** convert percent to string */ /** convert percent to string */
static void convertPercent( OUStringBuffer& rBuffer, static void convertPercent( OUStringBuffer& rBuffer,
@@ -88,7 +88,7 @@ public:
/** convert string to pixel measure unite */ /** convert string to pixel measure unite */
static bool convertMeasurePx( sal_Int32& rValue, static bool convertMeasurePx( sal_Int32& rValue,
const OUString& rString ); std::u16string_view rString );
/** convert pixel measure unit to string */ /** convert pixel measure unit to string */
static void convertMeasurePx( OUStringBuffer& rBuffer, static void convertMeasurePx( OUStringBuffer& rBuffer,
@@ -96,9 +96,9 @@ public:
/** convert string to rgb color */ /** convert string to rgb color */
static bool convertColor( sal_Int32& rColor, static bool convertColor( sal_Int32& rColor,
const OUString&rValue ); std::u16string_view rValue );
static bool convertColor( ::Color& rColor, static bool convertColor( ::Color& rColor,
const OUString&rValue ) std::u16string_view rValue )
{ {
sal_Int32 n(rColor); sal_Int32 n(rColor);
bool b = convertColor( n, rValue ); bool b = convertColor( n, rValue );
@@ -139,19 +139,19 @@ public:
/** convert string to double number (using ::rtl::math) and DO convert from /** convert string to double number (using ::rtl::math) and DO convert from
source unit to target unit. */ source unit to target unit. */
static bool convertDouble( double& rValue, static bool convertDouble( double& rValue,
const OUString& rString, std::u16string_view rString,
sal_Int16 nSourceUnit, sal_Int16 nSourceUnit,
sal_Int16 nTargetUnit ); sal_Int16 nTargetUnit );
/** convert string to double number (using ::rtl::math) without unit conversion */ /** convert string to double number (using ::rtl::math) without unit conversion */
static bool convertDouble(double& rValue, const OUString& rString); static bool convertDouble(double& rValue, std::u16string_view rString);
/** convert number, 10th of degrees with range [0..3600] to SVG angle */ /** convert number, 10th of degrees with range [0..3600] to SVG angle */
static void convertAngle(OUStringBuffer& rBuffer, sal_Int16 nAngle, static void convertAngle(OUStringBuffer& rBuffer, sal_Int16 nAngle,
SvtSaveOptions::ODFSaneDefaultVersion nVersion); SvtSaveOptions::ODFSaneDefaultVersion nVersion);
/** convert SVG angle to number, 10th of degrees with range [0..3600] */ /** convert SVG angle to number, 10th of degrees with range [0..3600] */
static bool convertAngle(sal_Int16& rAngle, OUString const& rString, static bool convertAngle(sal_Int16& rAngle, std::u16string_view rString,
bool isWrongOOo10thDegAngle); bool isWrongOOo10thDegAngle);
/** convert double to XMLSchema-2 "duration" string; negative durations allowed */ /** convert double to XMLSchema-2 "duration" string; negative durations allowed */
@@ -164,11 +164,11 @@ public:
/** convert XMLSchema-2 "duration" string to double; negative durations allowed */ /** convert XMLSchema-2 "duration" string to double; negative durations allowed */
static bool convertDuration(double & rfTime, static bool convertDuration(double & rfTime,
const OUString& rString); std::u16string_view rString);
/** convert XMLSchema-2 "duration" string to util::Duration */ /** convert XMLSchema-2 "duration" string to util::Duration */
static bool convertDuration(css::util::Duration& rDuration, static bool convertDuration(css::util::Duration& rDuration,
const OUString& rString); std::u16string_view rString);
/** convert util::Date to XMLSchema-2 "date" string */ /** convert util::Date to XMLSchema-2 "date" string */
static void convertDate( OUStringBuffer& rBuffer, static void convertDate( OUStringBuffer& rBuffer,
@@ -187,11 +187,11 @@ public:
/** convert XMLSchema-2 "date" or "dateTime" string to util::DateTime */ /** convert XMLSchema-2 "date" or "dateTime" string to util::DateTime */
static bool parseDateTime( css::util::DateTime& rDateTime, static bool parseDateTime( css::util::DateTime& rDateTime,
const OUString& rString ); std::u16string_view rString );
/** convert XMLSchema-2 "time" or "dateTime" string to util::DateTime */ /** convert XMLSchema-2 "time" or "dateTime" string to util::DateTime */
static bool parseTimeOrDateTime(css::util::DateTime& rDateTime, static bool parseTimeOrDateTime(css::util::DateTime& rDateTime,
const OUString& rString); std::u16string_view rString);
/** convert XMLSchema-2 "date" or "dateTime" string to util::DateTime or /** convert XMLSchema-2 "date" or "dateTime" string to util::DateTime or
util::Date */ util::Date */
@@ -200,15 +200,15 @@ public:
css::util::DateTime & rDateTime, css::util::DateTime & rDateTime,
bool & rbDateTime, bool & rbDateTime,
std::optional<sal_Int16> * pTimeZoneOffset, std::optional<sal_Int16> * pTimeZoneOffset,
const OUString & rString ); std::u16string_view rString );
/** gets the position of the first comma after npos in the string /** gets the position of the first comma after npos in the string
rStr. Commas inside '"' pairs are not matched */ rStr. Commas inside '"' pairs are not matched */
static sal_Int32 indexOfComma( const OUString& rStr, static sal_Int32 indexOfComma( std::u16string_view rStr,
sal_Int32 nPos ); sal_Int32 nPos );
static double GetConversionFactor(OUStringBuffer& rUnit, sal_Int16 nSourceUnit, sal_Int16 nTargetUnit); static double GetConversionFactor(OUStringBuffer& rUnit, sal_Int16 nSourceUnit, sal_Int16 nTargetUnit);
static sal_Int16 GetUnitFromString(const OUString& rString, sal_Int16 nDefaultUnit); static sal_Int16 GetUnitFromString(std::u16string_view rString, sal_Int16 nDefaultUnit);
/** convert an Any to string (typesafe) */ /** convert an Any to string (typesafe) */
static bool convertAny(OUStringBuffer& rsValue, static bool convertAny(OUStringBuffer& rsValue,

View File

@@ -111,7 +111,7 @@ public:
/** convert string to measure with meCoreMeasureUnit, /** convert string to measure with meCoreMeasureUnit,
using optional min and max values*/ using optional min and max values*/
bool convertMeasureToCore( sal_Int32& rValue, bool convertMeasureToCore( sal_Int32& rValue,
const OUString& rString, std::u16string_view rString,
sal_Int32 nMin = SAL_MIN_INT32, sal_Int32 nMin = SAL_MIN_INT32,
sal_Int32 nMax = SAL_MAX_INT32) const; sal_Int32 nMax = SAL_MAX_INT32) const;
@@ -173,7 +173,7 @@ public:
double fNumber) const; double fNumber) const;
/** convert string to double number (using ::rtl::math) and DO convert. */ /** convert string to double number (using ::rtl::math) and DO convert. */
bool convertDouble(double& rValue, const OUString& rString) const; bool convertDouble(double& rValue, std::u16string_view rString) const;
/** get the Null Date of the XModel and set it to the UnitConverter */ /** get the Null Date of the XModel and set it to the UnitConverter */
bool setNullDate ( bool setNullDate (
@@ -186,7 +186,7 @@ public:
/** convert ISO Date Time String to double */ /** convert ISO Date Time String to double */
bool convertDateTime(double& fDateTime, bool convertDateTime(double& fDateTime,
const OUString& rString); std::u16string_view rString);
/// these 2 functions use tools Date, so they're not yet moved to sax /// these 2 functions use tools Date, so they're not yet moved to sax
@@ -197,7 +197,7 @@ public:
bool bAddTimeIf0AM = false); bool bAddTimeIf0AM = false);
/** convert ISO Date Time String to double */ /** convert ISO Date Time String to double */
static bool convertDateTime( double& fDateTime, static bool convertDateTime( double& fDateTime,
const OUString& rString, std::u16string_view rString,
const css::util::Date& aNullDate); const css::util::Date& aNullDate);

View File

@@ -53,7 +53,7 @@ const sal_Int8 XML_MAXDIGITSCOUNT_TIME = 14;
/** convert string to measure using optional min and max values*/ /** convert string to measure using optional min and max values*/
bool Converter::convertMeasure( sal_Int32& rValue, bool Converter::convertMeasure( sal_Int32& rValue,
const OUString& rString, std::u16string_view rString,
sal_Int16 nTargetUnit /* = MeasureUnit::MM_100TH */, sal_Int16 nTargetUnit /* = MeasureUnit::MM_100TH */,
sal_Int32 nMin /* = SAL_MIN_INT32 */, sal_Int32 nMin /* = SAL_MIN_INT32 */,
sal_Int32 nMax /* = SAL_MAX_INT32 */ ) sal_Int32 nMax /* = SAL_MAX_INT32 */ )
@@ -62,7 +62,7 @@ bool Converter::convertMeasure( sal_Int32& rValue,
double nVal = 0; double nVal = 0;
sal_Int32 nPos = 0; sal_Int32 nPos = 0;
sal_Int32 const nLen = rString.getLength(); sal_Int32 const nLen = rString.size();
// skip white space // skip white space
while( (nPos < nLen) && (rString[nPos] <= ' ') ) while( (nPos < nLen) && (rString[nPos] <= ' ') )
@@ -424,11 +424,11 @@ void Converter::convertMeasure( OUStringBuffer& rBuffer,
} }
/** convert string to boolean */ /** convert string to boolean */
bool Converter::convertBool( bool& rBool, const OUString& rString ) bool Converter::convertBool( bool& rBool, std::u16string_view rString )
{ {
rBool = rString == "true"; rBool = rString == u"true";
return rBool || (rString == "false"); return rBool || (rString == u"false");
} }
/** convert boolean to string */ /** convert boolean to string */
@@ -438,7 +438,7 @@ void Converter::convertBool( OUStringBuffer& rBuffer, bool bValue )
} }
/** convert string to percent */ /** convert string to percent */
bool Converter::convertPercent( sal_Int32& rPercent, const OUString& rString ) bool Converter::convertPercent( sal_Int32& rPercent, std::u16string_view rString )
{ {
return convertMeasure( rPercent, rString, MeasureUnit::PERCENT ); return convertMeasure( rPercent, rString, MeasureUnit::PERCENT );
} }
@@ -451,7 +451,7 @@ void Converter::convertPercent( OUStringBuffer& rBuffer, sal_Int32 nValue )
} }
/** convert string to pixel measure */ /** convert string to pixel measure */
bool Converter::convertMeasurePx( sal_Int32& rPixel, const OUString& rString ) bool Converter::convertMeasurePx( sal_Int32& rPixel, std::u16string_view rString )
{ {
return convertMeasure( rPixel, rString, MeasureUnit::PIXEL ); return convertMeasure( rPixel, rString, MeasureUnit::PIXEL );
} }
@@ -477,9 +477,9 @@ static int lcl_gethex( int nChar )
} }
/** convert string to rgb color */ /** convert string to rgb color */
bool Converter::convertColor( sal_Int32& rColor, const OUString& rValue ) bool Converter::convertColor( sal_Int32& rColor, std::u16string_view rValue )
{ {
if( rValue.getLength() != 7 || rValue[0] != '#' ) if( rValue.size() != 7 || rValue[0] != '#' )
return false; return false;
rColor = lcl_gethex( rValue[1] ) * 16 + lcl_gethex( rValue[2] ); rColor = lcl_gethex( rValue[1] ) * 16 + lcl_gethex( rValue[2] );
@@ -597,7 +597,7 @@ void Converter::convertDouble( OUStringBuffer& rBuffer, double fNumber)
/** convert string to double number (using ::rtl::math) */ /** convert string to double number (using ::rtl::math) */
bool Converter::convertDouble(double& rValue, bool Converter::convertDouble(double& rValue,
const OUString& rString, sal_Int16 nSourceUnit, sal_Int16 nTargetUnit) std::u16string_view rString, sal_Int16 nSourceUnit, sal_Int16 nTargetUnit)
{ {
rtl_math_ConversionStatus eStatus; rtl_math_ConversionStatus eStatus;
rValue = ::rtl::math::stringToDouble( rString, '.', ',', &eStatus ); rValue = ::rtl::math::stringToDouble( rString, '.', ',', &eStatus );
@@ -616,7 +616,7 @@ bool Converter::convertDouble(double& rValue,
} }
/** convert string to double number (using ::rtl::math) */ /** convert string to double number (using ::rtl::math) */
bool Converter::convertDouble(double& rValue, const OUString& rString) bool Converter::convertDouble(double& rValue, std::u16string_view rString)
{ {
rtl_math_ConversionStatus eStatus; rtl_math_ConversionStatus eStatus;
rValue = ::rtl::math::stringToDouble( rString, '.', ',', &eStatus ); rValue = ::rtl::math::stringToDouble( rString, '.', ',', &eStatus );
@@ -641,7 +641,7 @@ void Converter::convertAngle(OUStringBuffer& rBuffer, sal_Int16 const nAngle,
} }
/** convert SVG angle to number, 10th of degrees with range [0..3600] */ /** convert SVG angle to number, 10th of degrees with range [0..3600] */
bool Converter::convertAngle(sal_Int16& rAngle, OUString const& rString, bool Converter::convertAngle(sal_Int16& rAngle, std::u16string_view rString,
bool const isWrongOOo10thDegAngle) bool const isWrongOOo10thDegAngle)
{ {
// ODF 1.1 leaves it undefined what the number means, but ODF 1.2 says it's // ODF 1.1 leaves it undefined what the number means, but ODF 1.2 says it's
@@ -653,15 +653,15 @@ bool Converter::convertAngle(sal_Int16& rAngle, OUString const& rString,
sal_Int32 nValue(0); sal_Int32 nValue(0);
double fValue(0.0); double fValue(0.0);
bool bRet = ::sax::Converter::convertDouble(fValue, rString); bool bRet = ::sax::Converter::convertDouble(fValue, rString);
if (-1 != rString.indexOf("deg")) if (std::u16string_view::npos != rString.find(u"deg"))
{ {
nValue = fValue * 10.0; nValue = fValue * 10.0;
} }
else if (-1 != rString.indexOf("grad")) else if (std::u16string_view::npos != rString.find(u"grad"))
{ {
nValue = (fValue * 9.0 / 10.0) * 10.0; nValue = (fValue * 9.0 / 10.0) * 10.0;
} }
else if (-1 != rString.indexOf("rad")) else if (std::u16string_view::npos != rString.find(u"rad"))
{ {
nValue = basegfx::rad2deg(fValue) * 10.0; nValue = basegfx::rad2deg(fValue) * 10.0;
} }
@@ -761,12 +761,25 @@ void Converter::convertDuration(OUStringBuffer& rBuffer,
rBuffer.append( 'S'); rBuffer.append( 'S');
} }
static std::u16string_view trim(std::u16string_view in) {
auto left = in.begin();
for (;; ++left) {
if (left == in.end())
return std::u16string_view();
if (!isspace(*left))
break;
}
auto right = in.end() - 1;
for (; right > left && isspace(*right); --right);
return std::u16string_view(&*left, std::distance(left, right) + 1);
}
/** convert ISO "duration" string to double; negative durations allowed */ /** convert ISO "duration" string to double; negative durations allowed */
bool Converter::convertDuration(double& rfTime, bool Converter::convertDuration(double& rfTime,
const OUString& rString) std::u16string_view rString)
{ {
OUString aTrimmed = rString.trim().toAsciiUpperCase(); std::u16string_view aTrimmed = trim(rString);
const sal_Unicode* pStr = aTrimmed.getStr(); const sal_Unicode* pStr = aTrimmed.data();
// negative time duration? // negative time duration?
bool bIsNegativeDuration = false; bool bIsNegativeDuration = false;
@@ -776,8 +789,9 @@ bool Converter::convertDuration(double& rfTime,
pStr++; pStr++;
} }
if ( *(pStr++) != 'P' ) // duration must start with "P" if ( *pStr != 'P' && *pStr != 'p' ) // duration must start with "P"
return false; return false;
pStr++;
OUStringBuffer sDoubleStr; OUStringBuffer sDoubleStr;
bool bSuccess = true; bool bSuccess = true;
@@ -814,12 +828,12 @@ bool Converter::convertDuration(double& rfTime,
} }
else if ( bTimePart ) else if ( bTimePart )
{ {
if ( c == 'H' ) if ( c == 'H' || c == 'h' )
{ {
nHours = nTemp; nHours = nTemp;
nTemp = 0; nTemp = 0;
} }
else if ( c == 'M' ) else if ( c == 'M' || c == 'm')
{ {
nMins = nTemp; nMins = nTemp;
nTemp = 0; nTemp = 0;
@@ -831,7 +845,7 @@ bool Converter::convertDuration(double& rfTime,
bIsFraction = true; bIsFraction = true;
sDoubleStr = "0."; sDoubleStr = "0.";
} }
else if ( c == 'S' ) else if ( c == 'S' || c == 's' )
{ {
if ( !bIsFraction ) if ( !bIsFraction )
{ {
@@ -845,14 +859,14 @@ bool Converter::convertDuration(double& rfTime,
} }
else else
{ {
if ( c == 'T' ) // "T" starts time part if ( c == 'T' || c == 't' ) // "T" starts time part
bTimePart = true; bTimePart = true;
else if ( c == 'D' ) else if ( c == 'D' || c == 'd')
{ {
nDays = nTemp; nDays = nTemp;
nTemp = 0; nTemp = 0;
} }
else if ( c == 'Y' || c == 'M' ) else if ( c == 'Y' || c == 'y' || c == 'M' || c == 'm' )
{ {
//! how many days is a year or month? //! how many days is a year or month?
@@ -1050,11 +1064,11 @@ readDurationT(const OUString & rString, sal_Int32 & io_rnPos)
static bool static bool
readDurationComponent(const OUString & rString, readDurationComponent(const OUString & rString,
sal_Int32 & io_rnPos, sal_Int32 & io_rnTemp, bool & io_rbTimePart, sal_Int32 & io_rnPos, sal_Int32 & io_rnTemp, bool & io_rbTimePart,
sal_Int32 & o_rnTarget, const sal_Unicode c) sal_Int32 & o_rnTarget, const sal_Unicode cLower, const sal_Unicode cUpper)
{ {
if (io_rnPos < rString.getLength()) if (io_rnPos < rString.getLength())
{ {
if (c == rString[io_rnPos]) if (cLower == rString[io_rnPos] || cUpper == rString[io_rnPos])
{ {
++io_rnPos; ++io_rnPos;
if (-1 != io_rnTemp) if (-1 != io_rnTemp)
@@ -1079,20 +1093,20 @@ readDurationComponent(const OUString & rString,
/** convert ISO8601 "duration" string to util::Duration */ /** convert ISO8601 "duration" string to util::Duration */
bool Converter::convertDuration(util::Duration& rDuration, bool Converter::convertDuration(util::Duration& rDuration,
const OUString& rString) std::u16string_view rString)
{ {
const OUString string = rString.trim().toAsciiUpperCase(); std::u16string_view string = trim(rString);
sal_Int32 nPos(0); sal_Int32 nPos(0);
bool bIsNegativeDuration(false); bool bIsNegativeDuration(false);
if (!string.isEmpty() && ('-' == string[0])) if (!string.empty() && ('-' == string[0]))
{ {
bIsNegativeDuration = true; bIsNegativeDuration = true;
++nPos; ++nPos;
} }
if ((nPos < string.getLength()) if (nPos < static_cast<sal_Int32>(string.size())
&& (string[nPos] != 'P')) // duration must start with "P" && string[nPos] != 'P' && string[nPos] != 'p') // duration must start with "P"
{ {
return false; return false;
} }
@@ -1117,19 +1131,19 @@ bool Converter::convertDuration(util::Duration& rDuration,
if (!bTimePart && bSuccess) if (!bTimePart && bSuccess)
{ {
bSuccess = readDurationComponent(string, nPos, nTemp, bTimePart, bSuccess = readDurationComponent(string, nPos, nTemp, bTimePart,
nYears, 'Y'); nYears, 'y', 'Y');
} }
if (!bTimePart && bSuccess) if (!bTimePart && bSuccess)
{ {
bSuccess = readDurationComponent(string, nPos, nTemp, bTimePart, bSuccess = readDurationComponent(string, nPos, nTemp, bTimePart,
nMonths, 'M'); nMonths, 'm', 'M');
} }
if (!bTimePart && bSuccess) if (!bTimePart && bSuccess)
{ {
bSuccess = readDurationComponent(string, nPos, nTemp, bTimePart, bSuccess = readDurationComponent(string, nPos, nTemp, bTimePart,
nDays, 'D'); nDays, 'd', 'D');
} }
if (bTimePart) if (bTimePart)
@@ -1142,17 +1156,17 @@ bool Converter::convertDuration(util::Duration& rDuration,
if (bSuccess) if (bSuccess)
{ {
bSuccess = readDurationComponent(string, nPos, nTemp, bTimePart, bSuccess = readDurationComponent(string, nPos, nTemp, bTimePart,
nHours, 'H'); nHours, 'h', 'H');
} }
if (bSuccess) if (bSuccess)
{ {
bSuccess = readDurationComponent(string, nPos, nTemp, bTimePart, bSuccess = readDurationComponent(string, nPos, nTemp, bTimePart,
nMinutes, 'M'); nMinutes, 'm', 'M');
} }
// eeek! seconds are icky. // eeek! seconds are icky.
if ((nPos < string.getLength()) && bSuccess) if ((nPos < static_cast<sal_Int32>(string.size())) && bSuccess)
{ {
if (string[nPos] == '.' || if (string[nPos] == '.' ||
string[nPos] == ',') string[nPos] == ',')
@@ -1164,7 +1178,7 @@ bool Converter::convertDuration(util::Duration& rDuration,
nTemp = -1; nTemp = -1;
const sal_Int32 nStart(nPos); const sal_Int32 nStart(nPos);
bSuccess = readUnsignedNumberMaxDigits(9, string, nPos, nTemp) == R_SUCCESS; bSuccess = readUnsignedNumberMaxDigits(9, string, nPos, nTemp) == R_SUCCESS;
if ((nPos < string.getLength()) && bSuccess) if ((nPos < static_cast<sal_Int32>(string.size())) && bSuccess)
{ {
if (-1 != nTemp) if (-1 != nTemp)
{ {
@@ -1176,7 +1190,7 @@ bool Converter::convertDuration(util::Duration& rDuration,
nNanoSeconds *= 10; nNanoSeconds *= 10;
} }
nTemp=-1; nTemp=-1;
if ('S' == string[nPos]) if ('S' == string[nPos] || 's' == string[nPos])
{ {
++nPos; ++nPos;
} }
@@ -1196,7 +1210,7 @@ bool Converter::convertDuration(util::Duration& rDuration,
bSuccess = false; bSuccess = false;
} }
} }
else if ('S' == string[nPos]) else if ('S' == string[nPos] || 's' == string[nPos])
{ {
++nPos; ++nPos;
if (-1 != nTemp) if (-1 != nTemp)
@@ -1212,7 +1226,7 @@ bool Converter::convertDuration(util::Duration& rDuration,
} }
} }
if (nPos != string.getLength()) // string not processed completely? if (nPos != static_cast<sal_Int32>(string.size())) // string not processed completely?
{ {
bSuccess = false; bSuccess = false;
} }
@@ -1393,7 +1407,7 @@ void Converter::convertDateTime(
/** convert ISO "date" or "dateTime" string to util::DateTime */ /** convert ISO "date" or "dateTime" string to util::DateTime */
bool Converter::parseDateTime( util::DateTime& rDateTime, bool Converter::parseDateTime( util::DateTime& rDateTime,
const OUString& rString ) std::u16string_view rString )
{ {
bool isDateTime; bool isDateTime;
return parseDateOrDateTime(nullptr, rDateTime, isDateTime, nullptr, return parseDateOrDateTime(nullptr, rDateTime, isDateTime, nullptr,
@@ -1832,7 +1846,7 @@ static bool lcl_parseDateTime(
/** convert ISO "time" or "dateTime" string to util::DateTime */ /** convert ISO "time" or "dateTime" string to util::DateTime */
bool Converter::parseTimeOrDateTime( bool Converter::parseTimeOrDateTime(
util::DateTime & rDateTime, util::DateTime & rDateTime,
const OUString & rString) std::u16string_view rString)
{ {
bool dummy; bool dummy;
return lcl_parseDateTime( return lcl_parseDateTime(
@@ -1844,7 +1858,7 @@ bool Converter::parseDateOrDateTime(
util::Date *const pDate, util::DateTime & rDateTime, util::Date *const pDate, util::DateTime & rDateTime,
bool & rbDateTime, bool & rbDateTime,
std::optional<sal_Int16> *const pTimeZoneOffset, std::optional<sal_Int16> *const pTimeZoneOffset,
const OUString & rString ) std::u16string_view rString )
{ {
return lcl_parseDateTime( return lcl_parseDateTime(
pDate, rDateTime, rbDateTime, pTimeZoneOffset, rString, false); pDate, rDateTime, rbDateTime, pTimeZoneOffset, rString, false);
@@ -1853,11 +1867,11 @@ bool Converter::parseDateOrDateTime(
/** gets the position of the first comma after npos in the string /** gets the position of the first comma after npos in the string
rStr. Commas inside '"' pairs are not matched */ rStr. Commas inside '"' pairs are not matched */
sal_Int32 Converter::indexOfComma( const OUString& rStr, sal_Int32 Converter::indexOfComma( std::u16string_view rStr,
sal_Int32 nPos ) sal_Int32 nPos )
{ {
sal_Unicode cQuote = 0; sal_Unicode cQuote = 0;
sal_Int32 nLen = rStr.getLength(); sal_Int32 nLen = rStr.size();
for( ; nPos < nLen; nPos++ ) for( ; nPos < nLen; nPos++ )
{ {
sal_Unicode c = rStr[nPos]; sal_Unicode c = rStr[nPos];
@@ -2243,10 +2257,10 @@ double Converter::GetConversionFactor(OUStringBuffer& rUnit, sal_Int16 nSourceUn
return fRetval; return fRetval;
} }
sal_Int16 Converter::GetUnitFromString(const OUString& rString, sal_Int16 nDefaultUnit) sal_Int16 Converter::GetUnitFromString(std::u16string_view rString, sal_Int16 nDefaultUnit)
{ {
sal_Int32 nPos = 0; sal_Int32 nPos = 0;
sal_Int32 nLen = rString.getLength(); sal_Int32 nLen = rString.size();
sal_Int16 nRetUnit = nDefaultUnit; sal_Int16 nRetUnit = nDefaultUnit;
// skip white space // skip white space

View File

@@ -817,7 +817,7 @@ bool SchXMLPositionAttributesHelper::isAutomatic() const
return m_bAutoSize || m_bAutoPosition; return m_bAutoSize || m_bAutoPosition;
} }
void SchXMLPositionAttributesHelper::readPositioningAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ) void SchXMLPositionAttributesHelper::readPositioningAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, std::u16string_view rValue )
{ {
if( XML_NAMESPACE_SVG != nPrefix ) if( XML_NAMESPACE_SVG != nPrefix )
return; return;

View File

@@ -60,7 +60,7 @@ public:
explicit SchXMLPositionAttributesHelper( SvXMLImport& rImporter ); explicit SchXMLPositionAttributesHelper( SvXMLImport& rImporter );
~SchXMLPositionAttributesHelper(); ~SchXMLPositionAttributesHelper();
void readPositioningAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, const OUString& rValue ); void readPositioningAttribute( sal_uInt16 nPrefix, const OUString& rLocalName, std::u16string_view rValue );
void readAutomaticPositioningProperties( XMLPropStyleContext const * pPropStyleContext, const SvXMLStylesContext* pStylesCtxt ); void readAutomaticPositioningProperties( XMLPropStyleContext const * pPropStyleContext, const SvXMLStylesContext* pStylesCtxt );
bool hasPosSize() const; bool hasPosSize() const;

View File

@@ -169,7 +169,7 @@ sal_Int16 SvXMLUnitConverter::GetMeasureUnit(FieldUnit const nFieldUnit)
/** convert string to measure using optional min and max values*/ /** convert string to measure using optional min and max values*/
bool SvXMLUnitConverter::convertMeasureToCore( sal_Int32& nValue, bool SvXMLUnitConverter::convertMeasureToCore( sal_Int32& nValue,
const OUString& rString, std::u16string_view rString,
sal_Int32 nMin, sal_Int32 nMax ) const sal_Int32 nMin, sal_Int32 nMax ) const
{ {
return ::sax::Converter::convertMeasure( nValue, rString, return ::sax::Converter::convertMeasure( nValue, rString,
@@ -292,7 +292,7 @@ void SvXMLUnitConverter::convertDouble(OUStringBuffer& rBuffer,
/** convert string to double number (using ::rtl::math) */ /** convert string to double number (using ::rtl::math) */
bool SvXMLUnitConverter::convertDouble(double& rValue, bool SvXMLUnitConverter::convertDouble(double& rValue,
const OUString& rString) const std::u16string_view rString) const
{ {
sal_Int16 const eSrcUnit = ::sax::Converter::GetUnitFromString( sal_Int16 const eSrcUnit = ::sax::Converter::GetUnitFromString(
rString, m_pImpl->m_eCoreMeasureUnit); rString, m_pImpl->m_eCoreMeasureUnit);
@@ -322,7 +322,7 @@ void SvXMLUnitConverter::convertDateTime(OUStringBuffer& rBuffer,
/** convert ISO Date Time String to double */ /** convert ISO Date Time String to double */
bool SvXMLUnitConverter::convertDateTime(double& fDateTime, bool SvXMLUnitConverter::convertDateTime(double& fDateTime,
const OUString& rString) std::u16string_view rString)
{ {
return convertDateTime(fDateTime, rString, m_pImpl->m_aNullDate); return convertDateTime(fDateTime, rString, m_pImpl->m_aNullDate);
} }
@@ -416,7 +416,7 @@ void SvXMLUnitConverter::convertDateTime( OUStringBuffer& rBuffer,
/** convert ISO Date Time String to double */ /** convert ISO Date Time String to double */
bool SvXMLUnitConverter::convertDateTime( double& fDateTime, bool SvXMLUnitConverter::convertDateTime( double& fDateTime,
const OUString& rString, const css::util::Date& aTempNullDate) std::u16string_view rString, const css::util::Date& aTempNullDate)
{ {
css::util::DateTime aDateTime; css::util::DateTime aDateTime;
bool bSuccess = ::sax::Converter::parseDateTime(aDateTime, rString); bool bSuccess = ::sax::Converter::parseDateTime(aDateTime, rString);

View File

@@ -73,7 +73,7 @@ const SvXMLEnumMapEntry<sal_uInt16> aXML_GluePointEnumMap[] =
{ XML_TOKEN_INVALID, 0 } { XML_TOKEN_INVALID, 0 }
}; };
static void GetBool( std::vector< css::beans::PropertyValue >& rDest, static void GetBool( std::vector< css::beans::PropertyValue >& rDest,
const OUString& rValue, const EnhancedCustomShapeTokenEnum eDestProp ) std::u16string_view rValue, const EnhancedCustomShapeTokenEnum eDestProp )
{ {
bool bAttrBool; bool bAttrBool;
if (::sax::Converter::convertBool( bAttrBool, rValue )) if (::sax::Converter::convertBool( bAttrBool, rValue ))
@@ -99,7 +99,7 @@ static void GetInt32( std::vector< css::beans::PropertyValue >& rDest,
} }
static void GetDouble( std::vector< css::beans::PropertyValue >& rDest, static void GetDouble( std::vector< css::beans::PropertyValue >& rDest,
const OUString& rValue, const EnhancedCustomShapeTokenEnum eDestProp ) std::u16string_view rValue, const EnhancedCustomShapeTokenEnum eDestProp )
{ {
double fAttrDouble; double fAttrDouble;
if (::sax::Converter::convertDouble( fAttrDouble, rValue )) if (::sax::Converter::convertDouble( fAttrDouble, rValue ))

View File

@@ -144,7 +144,7 @@ void XMLChangedRegionImportContext::SetChangeInfo(
const OUString& rType, const OUString& rType,
const OUString& rAuthor, const OUString& rAuthor,
const OUString& rComment, const OUString& rComment,
const OUString& rDate) std::u16string_view rDate)
{ {
util::DateTime aDateTime; util::DateTime aDateTime;
if (::sax::Converter::parseDateTime(aDateTime, rDate)) if (::sax::Converter::parseDateTime(aDateTime, rDate))

View File

@@ -72,7 +72,7 @@ public:
void SetChangeInfo(const OUString& rType, void SetChangeInfo(const OUString& rType,
const OUString& rAuthor, const OUString& rAuthor,
const OUString& rComment, const OUString& rComment,
const OUString& rDate); std::u16string_view rDate);
/// create redline XText/XTextCursor on demand and register with /// create redline XText/XTextCursor on demand and register with
/// XMLTextImportHelper /// XMLTextImportHelper

View File

@@ -56,7 +56,7 @@ XFormsSubmissionContext::XFormsSubmissionContext(
namespace { namespace {
Any toBool( const OUString& rValue ) Any toBool( std::u16string_view rValue )
{ {
Any aValue; Any aValue;
bool bValue(false); bool bValue(false);