From 9124003eb1e398957a85c5c009ac5eddf5e6f28e Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Sun, 14 Aug 2011 01:37:52 +0100 Subject: ByteString::IsNumericAscii->comphelper::string::isAsciiDecimalString shrink ByteString api, remove need for intermediate OString/ByteString with random-ish encoding solely for check --- tools/inc/tools/string.hxx | 1 - tools/source/inet/inetmsg.cxx | 70 +++++++++++++++++++++-------------------- tools/source/string/tstring.cxx | 21 ------------- 3 files changed, 36 insertions(+), 56 deletions(-) (limited to 'tools') diff --git a/tools/inc/tools/string.hxx b/tools/inc/tools/string.hxx index 1141cd3e2f42..fd89e28fd71e 100644 --- a/tools/inc/tools/string.hxx +++ b/tools/inc/tools/string.hxx @@ -258,7 +258,6 @@ public: sal_Bool IsLowerAscii() const; sal_Bool IsUpperAscii() const; sal_Bool IsAlphaAscii() const; - sal_Bool IsNumericAscii() const; sal_Bool IsAlphaNumericAscii() const; ByteString& ToLowerAscii(); diff --git a/tools/source/inet/inetmsg.cxx b/tools/source/inet/inetmsg.cxx index 1645e9ba7aea..d6b67fe06b4b 100644 --- a/tools/source/inet/inetmsg.cxx +++ b/tools/source/inet/inetmsg.cxx @@ -35,7 +35,7 @@ #include #include #include - +#include #include //======================================================================= @@ -310,10 +310,10 @@ static sal_uInt16 ParseNumber (const ByteString& rStr, sal_uInt16& nIndex) sal_uInt16 n = nIndex; while ((n < rStr.Len()) && ascii_isDigit(rStr.GetChar(n))) n++; - ByteString aNum (rStr.Copy (nIndex, (n - nIndex))); + rtl::OString aNum (rStr.Copy (nIndex, (n - nIndex))); nIndex = n; - return (sal_uInt16)(aNum.ToInt32()); + return (sal_uInt16)(aNum.toInt32()); } static sal_uInt16 ParseMonth (const ByteString& rStr, sal_uInt16& nIndex) @@ -333,69 +333,71 @@ static sal_uInt16 ParseMonth (const ByteString& rStr, sal_uInt16& nIndex) sal_Bool INetRFC822Message::ParseDateField ( const UniString& rDateFieldW, DateTime& rDateTime) { - ByteString rDateField (rDateFieldW, RTL_TEXTENCODING_ASCII_US); - if (rDateField.Len() == 0) return sal_False; + rtl::OString aDateField(rtl::OUStringToOString(rDateFieldW, + RTL_TEXTENCODING_ASCII_US)); + + if (aDateField.isEmpty()) return sal_False; - if (rDateField.Search (':') != STRING_NOTFOUND) + if (aDateField.indexOf(':') != -1) { // Some DateTime format. sal_uInt16 nIndex = 0; // Skip over or , leading and trailing space. - while ((nIndex < rDateField.Len()) && - (rDateField.GetChar(nIndex) == ' ')) + while ((nIndex < aDateField.getLength()) && + (aDateField[nIndex] == ' ')) nIndex++; while ( - (nIndex < rDateField.Len()) && - (ascii_isLetter (rDateField.GetChar(nIndex)) || - (rDateField.GetChar(nIndex) == ',') )) + (nIndex < aDateField.getLength()) && + (ascii_isLetter (aDateField[nIndex]) || + (aDateField[nIndex] == ',') )) nIndex++; - while ((nIndex < rDateField.Len()) && - (rDateField.GetChar(nIndex) == ' ')) + while ((nIndex < aDateField.getLength()) && + (aDateField[nIndex] == ' ')) nIndex++; - if (ascii_isLetter (rDateField.GetChar(nIndex))) + if (ascii_isLetter (aDateField[nIndex])) { // Format: ctime(). - if ((rDateField.Len() - nIndex) < 20) return sal_False; + if ((aDateField.getLength() - nIndex) < 20) return sal_False; - rDateTime.SetMonth (ParseMonth (rDateField, nIndex)); nIndex++; - rDateTime.SetDay (ParseNumber (rDateField, nIndex)); nIndex++; + rDateTime.SetMonth (ParseMonth (aDateField, nIndex)); nIndex++; + rDateTime.SetDay (ParseNumber (aDateField, nIndex)); nIndex++; - rDateTime.SetHour (ParseNumber (rDateField, nIndex)); nIndex++; - rDateTime.SetMin (ParseNumber (rDateField, nIndex)); nIndex++; - rDateTime.SetSec (ParseNumber (rDateField, nIndex)); nIndex++; + rDateTime.SetHour (ParseNumber (aDateField, nIndex)); nIndex++; + rDateTime.SetMin (ParseNumber (aDateField, nIndex)); nIndex++; + rDateTime.SetSec (ParseNumber (aDateField, nIndex)); nIndex++; rDateTime.Set100Sec (0); - sal_uInt16 nYear = ParseNumber (rDateField, nIndex); + sal_uInt16 nYear = ParseNumber (aDateField, nIndex); if (nYear < 100) nYear += 1900; rDateTime.SetYear (nYear); } else { // Format: RFC1036 or RFC1123. - if ((rDateField.Len() - nIndex) < 17) return sal_False; + if ((aDateField.getLength() - nIndex) < 17) return sal_False; - rDateTime.SetDay (ParseNumber (rDateField, nIndex)); nIndex++; - rDateTime.SetMonth (ParseMonth (rDateField, nIndex)); nIndex++; + rDateTime.SetDay (ParseNumber (aDateField, nIndex)); nIndex++; + rDateTime.SetMonth (ParseMonth (aDateField, nIndex)); nIndex++; - sal_uInt16 nYear = ParseNumber (rDateField, nIndex); nIndex++; + sal_uInt16 nYear = ParseNumber (aDateField, nIndex); nIndex++; if (nYear < 100) nYear += 1900; rDateTime.SetYear (nYear); - rDateTime.SetHour (ParseNumber (rDateField, nIndex)); nIndex++; - rDateTime.SetMin (ParseNumber (rDateField, nIndex)); nIndex++; - rDateTime.SetSec (ParseNumber (rDateField, nIndex)); nIndex++; + rDateTime.SetHour (ParseNumber (aDateField, nIndex)); nIndex++; + rDateTime.SetMin (ParseNumber (aDateField, nIndex)); nIndex++; + rDateTime.SetSec (ParseNumber (aDateField, nIndex)); nIndex++; rDateTime.Set100Sec (0); - if ((rDateField.GetChar(nIndex) == '+') || - (rDateField.GetChar(nIndex) == '-') ) + if ((aDateField[nIndex] == '+') || + (aDateField[nIndex] == '-') ) { // Offset from GMT: "(+|-)HHMM". - sal_Bool bEast = (rDateField.GetChar(nIndex++) == '+'); - sal_uInt16 nOffset = ParseNumber (rDateField, nIndex); + sal_Bool bEast = (aDateField[nIndex++] == '+'); + sal_uInt16 nOffset = ParseNumber (aDateField, nIndex); if (nOffset > 0) { Time aDiff; @@ -412,11 +414,11 @@ sal_Bool INetRFC822Message::ParseDateField ( } } } - else if (rDateField.IsNumericAscii()) + else if (comphelper::string::isAsciiDecimalString(aDateField)) { // Format: delta seconds. Time aDelta (0); - aDelta.SetTime (rDateField.ToInt32() * 100); + aDelta.SetTime (aDateField.toInt32() * 100); DateTime aNow; aNow += aDelta; diff --git a/tools/source/string/tstring.cxx b/tools/source/string/tstring.cxx index 40310cf9591d..e0872ee66049 100644 --- a/tools/source/string/tstring.cxx +++ b/tools/source/string/tstring.cxx @@ -163,27 +163,6 @@ sal_Bool ByteString::IsAlphaAscii() const // ----------------------------------------------------------------------- -sal_Bool ByteString::IsNumericAscii() const -{ - DBG_CHKTHIS( ByteString, DbgCheckByteString ); - - sal_Int32 nIndex = 0; - sal_Int32 nLen = mpData->mnLen; - const sal_Char* pStr = mpData->maStr; - while ( nIndex < nLen ) - { - if ( !((*pStr >= 48) && (*pStr <= 57)) ) - return sal_False; - - ++pStr, - ++nIndex; - } - - return sal_True; -} - -// ----------------------------------------------------------------------- - sal_Bool ByteString::IsAlphaNumericAscii() const { DBG_CHKTHIS( ByteString, DbgCheckByteString ); -- cgit