diff options
author | Caolán McNamara <caolanm@redhat.com> | 2013-09-21 12:59:20 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-09-22 12:21:34 +0100 |
commit | bcc8e86a1e2e4d7067c0d8320b4bdec9f1d2a2da (patch) | |
tree | 8c5359d5457ff77521f835e984ca97671f74bcca /sc | |
parent | 95fd55620b08d6196057a13a88eaa0638cf51f9d (diff) |
drop remaining easy UniString::InsertAscii cases
Change-Id: Ie7f33d0debfdb91db842608d5b14d0671b44c76d
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/tool/interpr1.cxx | 63 |
1 files changed, 33 insertions, 30 deletions
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index b54e1a383a85..d3e0f96a82f4 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -8041,14 +8041,14 @@ bool IsDBCS(sal_Unicode ch) { return lcl_getScriptClass(ch); } -sal_Int32 getLengthB(String &str) +sal_Int32 getLengthB(const OUString &str) { + if(str.isEmpty()) + return 0; sal_Int32 index = 0; sal_Int32 length = 0; - if(0 == str.Len()) - return 0; - while(index < str.Len()){ - if(IsDBCS(str.GetChar(index))) + while(index < str.getLength()){ + if(IsDBCS(str[index])) length += 2; else length++; @@ -8058,33 +8058,35 @@ sal_Int32 getLengthB(String &str) } void ScInterpreter::ScLenB() { - String aStr( GetString() ); - PushDouble( getLengthB(aStr) ); + PushDouble( getLengthB(GetString()) ); } -void lcl_RightB(String &aStr, sal_Int32 n) +OUString lcl_RightB(const OUString &rStr, sal_Int32 n) { - if( n < getLengthB(aStr) ) + if( n < getLengthB(rStr) ) { - sal_Int32 index = aStr.Len(); + OUStringBuffer aBuf(rStr); + sal_Int32 index = aBuf.getLength(); while(index-- >= 0) { if(0 == n) { - aStr.Erase( 0, index + 1); + aBuf.remove( 0, index + 1); break; } if(-1 == n) { - aStr.Erase( 0, index + 2 ); - aStr.InsertAscii(" ", 0); + aBuf.remove( 0, index + 2 ); + aBuf.insert( 0, " "); break; } - if(IsDBCS(aStr.GetChar(index))) + if(IsDBCS(aBuf[index])) n -= 2; else n--; } + return aBuf.makeStringAndClear(); } + return rStr; } void ScInterpreter::ScRightB() { @@ -8105,35 +8107,37 @@ void ScInterpreter::ScRightB() } else n = 1; - String aStr( GetString() ); - lcl_RightB(aStr, n); + OUString aStr(lcl_RightB(GetString(), n)); PushString( aStr ); } } -void lcl_LeftB(String &aStr, sal_Int32 n) +OUString lcl_LeftB(const OUString &rStr, sal_Int32 n) { - if( n < getLengthB(aStr) ) + if( n < getLengthB(rStr) ) { + OUStringBuffer aBuf(rStr); sal_Int32 index = -1; - while(index++ < aStr.Len()) + while(index++ < aBuf.getLength()) { if(0 == n) { - aStr.Erase( index ); + aBuf.truncate(index); break; } if(-1 == n) { - aStr.Erase( index - 1 ); - aStr.InsertAscii(" "); + aBuf.truncate( index - 1 ); + aBuf.append(" "); break; } - if(IsDBCS(aStr.GetChar(index))) + if(IsDBCS(aBuf[index])) n -= 2; else n--; } + return aBuf.makeStringAndClear(); } + return rStr; } void ScInterpreter::ScLeftB() { @@ -8154,8 +8158,7 @@ void ScInterpreter::ScLeftB() } else n = 1; - String aStr( GetString() ); - lcl_LeftB(aStr, n); + OUString aStr(lcl_LeftB(GetString(), n)); PushString( aStr ); } } @@ -8165,16 +8168,16 @@ void ScInterpreter::ScMidB() { double fAnz = ::rtl::math::approxFloor(GetDouble()); double fAnfang = ::rtl::math::approxFloor(GetDouble()); - String rStr( GetString() ); + OUString aStr( GetString() ); if (fAnfang < 1.0 || fAnz < 0.0 || fAnfang > double(STRING_MAXLEN) || fAnz > double(STRING_MAXLEN)) PushIllegalArgument(); else { - lcl_LeftB(rStr, (xub_StrLen)fAnfang + (xub_StrLen)fAnz - 1); - sal_Int32 nCnt = getLengthB(rStr) - (xub_StrLen)fAnfang + 1; - lcl_RightB(rStr, nCnt>0 ? nCnt:0); - PushString(rStr); + aStr = lcl_LeftB(aStr, (xub_StrLen)fAnfang + (xub_StrLen)fAnz - 1); + sal_Int32 nCnt = getLengthB(aStr) - (xub_StrLen)fAnfang + 1; + aStr = lcl_RightB(aStr, nCnt>0 ? nCnt:0); + PushString(aStr); } } } |