summaryrefslogtreecommitdiff
path: root/basic/source/runtime/methods.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'basic/source/runtime/methods.cxx')
-rw-r--r--basic/source/runtime/methods.cxx609
1 files changed, 321 insertions, 288 deletions
diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx
index 5dab1a21a084..881ee8678c0e 100644
--- a/basic/source/runtime/methods.cxx
+++ b/basic/source/runtime/methods.cxx
@@ -107,16 +107,17 @@ SbxVariable* getDefaultProp( SbxVariable* pRef );
// from source/classes/sbxmod.cxx
uno::Reference< frame::XModel > getDocumentModel( StarBASIC* );
-static void FilterWhiteSpace( String& rStr )
+static void FilterWhiteSpace( OUString& rStr )
{
- if (!rStr.Len())
+ if (rStr.isEmpty())
+ {
return;
-
+ }
rtl::OUStringBuffer aRet;
- for (xub_StrLen i = 0; i < rStr.Len(); ++i)
+ for (sal_Int32 i = 0; i < rStr.getLength(); ++i)
{
- sal_Unicode cChar = rStr.GetChar(i);
+ sal_Unicode cChar = rStr[i];
if ((cChar != ' ') && (cChar != '\t') &&
(cChar != '\n') && (cChar != '\r'))
{
@@ -152,7 +153,7 @@ static inline bool isFolder( FileStatus::Type aType )
// Converts possibly relative paths to absolute paths
// according to the setting done by ChDir/ChDrive
-String getFullPath( const String& aRelPath )
+OUString getFullPath( const OUString& aRelPath )
{
OUString aFileURL;
@@ -195,7 +196,7 @@ RTLFUNC(CreateObject)
{
(void)bWrite;
- String aClass( rPar.Get( 1 )->GetString() );
+ OUString aClass( rPar.Get( 1 )->GetOUString() );
SbxObjectRef p = SbxBase::CreateObject( aClass );
if( !p )
StarBASIC::Error( SbERR_CANNOT_LOAD );
@@ -217,7 +218,7 @@ RTLFUNC(Error)
StarBASIC::Error( SbERR_INTERNAL_ERROR );
else
{
- String aErrorMsg;
+ OUString aErrorMsg;
SbError nErr = 0L;
sal_Int32 nCode = 0;
if( rPar.Count() == 1 )
@@ -239,8 +240,8 @@ RTLFUNC(Error)
}
bool bVBA = SbiRuntime::isVBAEnabled();
- String tmpErrMsg;
- if( bVBA && aErrorMsg.Len() > 0 )
+ OUString tmpErrMsg;
+ if( bVBA && !aErrorMsg.isEmpty())
{
tmpErrMsg = aErrorMsg;
}
@@ -341,15 +342,15 @@ RTLFUNC(Asc)
else
{
SbxVariableRef pArg = rPar.Get( 1 );
- String aStr( pArg->GetString() );
- if ( aStr.Len() == 0 )
+ OUString aStr( pArg->GetOUString() );
+ if ( aStr.isEmpty())
{
StarBASIC::Error( SbERR_BAD_ARGUMENT );
rPar.Get(0)->PutEmpty();
}
else
{
- sal_Unicode aCh = aStr.GetBuffer()[0];
+ sal_Unicode aCh = aStr[0];
rPar.Get(0)->PutLong( aCh );
}
}
@@ -418,15 +419,15 @@ RTLFUNC(CurDir)
int nCurDir = 0; // Current dir // JSM
if ( rPar.Count() == 2 )
{
- String aDrive = rPar.Get(1)->GetString();
- if ( aDrive.Len() != 1 )
+ OUString aDrive = rPar.Get(1)->GetOUString();
+ if ( aDrive.getLength() != 1 )
{
StarBASIC::Error( SbERR_BAD_ARGUMENT );
return;
}
else
{
- nCurDir = (int)aDrive.GetBuffer()[0];
+ nCurDir = (int)aDrive[0];
if ( !isalpha( nCurDir ) )
{
StarBASIC::Error( SbERR_BAD_ARGUMENT );
@@ -492,10 +493,11 @@ RTLFUNC(ChDir)
{
::basic::vba::registerCurrentDirectory( getDocumentModel( pBasic ), rPar.Get(1)->GetOUString() );
}
- ::basic::vba::registerCurrentDirectory( getDocumentModel( pBasic ), rPar.Get(1)->GetString() );
}
else
+ {
StarBASIC::Error( SbERR_BAD_ARGUMENT );
+ }
}
RTLFUNC(ChDrive)
@@ -505,26 +507,28 @@ RTLFUNC(ChDrive)
rPar.Get(0)->PutEmpty();
if (rPar.Count() != 2)
+ {
StarBASIC::Error( SbERR_BAD_ARGUMENT );
+ }
}
// Implementation of StepRENAME with UCB
-void implStepRenameUCB( const String& aSource, const String& aDest )
+void implStepRenameUCB( const OUString& aSource, const OUString& aDest )
{
uno::Reference< ucb::XSimpleFileAccess3 > xSFI = getFileAccess();
if( xSFI.is() )
{
try
{
- String aSourceFullPath = getFullPath( aSource );
+ OUString aSourceFullPath = getFullPath( aSource );
if( !xSFI->exists( aSourceFullPath ) )
{
StarBASIC::Error( SbERR_FILE_NOT_FOUND );
return;
}
- String aDestFullPath = getFullPath( aDest );
+ OUString aDestFullPath = getFullPath( aDest );
if( xSFI->exists( aDestFullPath ) )
{
StarBASIC::Error( SbERR_FILE_EXISTS );
@@ -542,7 +546,7 @@ void implStepRenameUCB( const String& aSource, const String& aDest )
}
// Implementation of StepRENAME with OSL
-void implStepRenameOSL( const String& aSource, const String& aDest )
+void implStepRenameOSL( const OUString& aSource, const OUString& aDest )
{
FileBase::RC nRet = File::move( getFullPathUNC( aSource ), getFullPathUNC( aDest ) );
if( nRet != FileBase::E_None )
@@ -559,8 +563,8 @@ RTLFUNC(FileCopy)
rPar.Get(0)->PutEmpty();
if (rPar.Count() == 3)
{
- String aSource = rPar.Get(1)->GetString();
- String aDest = rPar.Get(2)->GetString();
+ OUString aSource = rPar.Get(1)->GetOUString();
+ OUString aDest = rPar.Get(2)->GetOUString();
if( hasUno() )
{
uno::Reference< ucb::XSimpleFileAccess3 > xSFI = getFileAccess();
@@ -597,14 +601,14 @@ RTLFUNC(Kill)
rPar.Get(0)->PutEmpty();
if (rPar.Count() == 2)
{
- String aFileSpec = rPar.Get(1)->GetString();
+ OUString aFileSpec = rPar.Get(1)->GetOUString();
if( hasUno() )
{
uno::Reference< ucb::XSimpleFileAccess3 > xSFI = getFileAccess();
if( xSFI.is() )
{
- String aFullPath = getFullPath( aFileSpec );
+ OUString aFullPath = getFullPath( aFileSpec );
if( !xSFI->exists( aFullPath ) || xSFI->isFolder( aFullPath ) )
{
StarBASIC::Error( SbERR_FILE_NOT_FOUND );
@@ -639,7 +643,7 @@ RTLFUNC(MkDir)
rPar.Get(0)->PutEmpty();
if (rPar.Count() == 2)
{
- String aPath = rPar.Get(1)->GetString();
+ OUString aPath = rPar.Get(1)->GetOUString();
if( hasUno() )
{
@@ -670,7 +674,7 @@ RTLFUNC(MkDir)
// In OSL only empty directories can be deleted
// so we have to delete all files recursively
-void implRemoveDirRecursive( const String& aDirPath )
+void implRemoveDirRecursive( const OUString& aDirPath )
{
DirectoryItem aItem;
FileBase::RC nRet = DirectoryItem::get( aDirPath, aItem );
@@ -700,12 +704,13 @@ void implRemoveDirRecursive( const String& aDirPath )
DirectoryItem aItem2;
nRet = aDir.getNextItem( aItem2 );
if( nRet != FileBase::E_None )
+ {
break;
-
+ }
// Handle flags
FileStatus aFileStatus2( osl_FileStatus_Mask_Type | osl_FileStatus_Mask_FileURL );
nRet = aItem2.getFileStatus( aFileStatus2 );
- ::rtl::OUString aPath = aFileStatus2.getFileURL();
+ OUString aPath = aFileStatus2.getFileURL();
// Directory?
FileStatus::Type aType2 = aFileStatus2.getFileType();
@@ -733,7 +738,7 @@ RTLFUNC(RmDir)
rPar.Get(0)->PutEmpty();
if (rPar.Count() == 2)
{
- String aPath = rPar.Get(1)->GetString();
+ OUString aPath = rPar.Get(1)->GetOUString();
if( hasUno() )
{
uno::Reference< ucb::XSimpleFileAccess3 > xSFI = getFileAccess();
@@ -750,7 +755,7 @@ RTLFUNC(RmDir)
bool bCompatibility = ( pInst && pInst->IsCompatibility() );
if( bCompatibility )
{
- Sequence< ::rtl::OUString > aContent = xSFI->getFolderContents( aPath, true );
+ Sequence< OUString > aContent = xSFI->getFolderContents( aPath, true );
sal_Int32 nCount = aContent.getLength();
if( nCount > 0 )
{
@@ -815,7 +820,7 @@ RTLFUNC(FileLen)
else
{
SbxVariableRef pArg = rPar.Get( 1 );
- String aStr( pArg->GetString() );
+ OUString aStr( pArg->GetOUString() );
sal_Int32 nLen = 0;
if( hasUno() )
{
@@ -897,18 +902,17 @@ RTLFUNC(InStr)
StarBASIC::Error( SbERR_BAD_ARGUMENT );
else
{
- sal_uInt16 nStartPos = 1;
+ sal_Int32 nStartPos = 1;
+ sal_Int32 nFirstStringPos = 1;
- sal_uInt16 nFirstStringPos = 1;
if ( nArgCount >= 3 )
{
- sal_Int32 lStartPos = rPar.Get(1)->GetLong();
- if( lStartPos <= 0 || lStartPos > 0xffff )
+ nStartPos = rPar.Get(1)->GetLong();
+ if( nStartPos <= 0 )
{
StarBASIC::Error( SbERR_BAD_ARGUMENT );
- lStartPos = 1;
+ nStartPos = 1;
}
- nStartPos = (sal_uInt16)lStartPos;
nFirstStringPos++;
}
@@ -928,11 +932,11 @@ RTLFUNC(InStr)
{
bTextMode = rPar.Get(4)->GetInteger();
}
- sal_uInt16 nPos;
- const String& rToken = rPar.Get(nFirstStringPos+1)->GetString();
+ sal_Int32 nPos;
+ const OUString& rToken = rPar.Get(nFirstStringPos+1)->GetOUString();
// #97545 Always find empty string
- if( !rToken.Len() )
+ if( rToken.isEmpty() )
{
nPos = nStartPos;
}
@@ -940,27 +944,18 @@ RTLFUNC(InStr)
{
if( !bTextMode )
{
- const String& rStr1 = rPar.Get(nFirstStringPos)->GetString();
-
- nPos = rStr1.Search( rToken, nStartPos-1 );
- if ( nPos == STRING_NOTFOUND )
- nPos = 0;
- else
- nPos++;
+ const OUString& rStr1 = rPar.Get(nFirstStringPos)->GetOUString();
+ nPos = rStr1.indexOf( rToken, nStartPos - 1 ) + 1;
}
else
{
- String aStr1 = rPar.Get(nFirstStringPos)->GetString();
- String aToken = rToken;
+ OUString aStr1 = rPar.Get(nFirstStringPos)->GetOUString();
+ OUString aToken = rToken;
- aStr1.ToUpperAscii();
- aToken.ToUpperAscii();
+ aStr1 = aStr1.toAsciiUpperCase();
+ aToken = aToken.toAsciiUpperCase();
- nPos = aStr1.Search( aToken, nStartPos-1 );
- if ( nPos == STRING_NOTFOUND )
- nPos = 0;
- else
- nPos++;
+ nPos = aStr1.indexOf( aToken, nStartPos-1 ) + 1;
}
}
rPar.Get(0)->PutLong( nPos );
@@ -982,17 +977,17 @@ RTLFUNC(InStrRev)
}
else
{
- String aStr1 = rPar.Get(1)->GetString();
- String aToken = rPar.Get(2)->GetString();
+ OUString aStr1 = rPar.Get(1)->GetOUString();
+ OUString aToken = rPar.Get(2)->GetOUString();
- sal_Int32 lStartPos = -1;
+ sal_Int32 nStartPos = -1;
if ( nArgCount >= 3 )
{
- lStartPos = rPar.Get(3)->GetLong();
- if( (lStartPos <= 0 && lStartPos != -1) || lStartPos > 0xffff )
+ nStartPos = rPar.Get(3)->GetLong();
+ if( (nStartPos <= 0 && nStartPos != -1))
{
StarBASIC::Error( SbERR_BAD_ARGUMENT );
- lStartPos = -1;
+ nStartPos = -1;
}
}
@@ -1009,15 +1004,19 @@ RTLFUNC(InStrRev)
bTextMode = 1;;
}
if ( nArgCount == 4 )
+ {
bTextMode = rPar.Get(4)->GetInteger();
+ }
+ sal_Int32 nStrLen = aStr1.getLength();
+ if( nStartPos == -1 )
+ {
+ nStartPos = nStrLen;
+ }
- sal_uInt16 nStrLen = aStr1.Len();
- sal_uInt16 nStartPos = lStartPos == -1 ? nStrLen : (sal_uInt16)lStartPos;
-
- sal_uInt16 nPos = 0;
+ sal_Int32 nPos = 0;
if( nStartPos <= nStrLen )
{
- sal_uInt16 nTokenLen = aToken.Len();
+ sal_Int32 nTokenLen = aToken.getLength();
if( !nTokenLen )
{
// Always find empty string
@@ -1027,27 +1026,14 @@ RTLFUNC(InStrRev)
{
if( !bTextMode )
{
- ::rtl::OUString aOUStr1 ( aStr1 );
- ::rtl::OUString aOUToken( aToken );
- sal_Int32 nRet = aOUStr1.lastIndexOf( aOUToken, nStartPos );
- if( nRet == -1 )
- nPos = 0;
- else
- nPos = (sal_uInt16)nRet + 1;
+ nPos = aStr1.lastIndexOf( aToken, nStartPos ) + 1;
}
else
{
- aStr1.ToUpperAscii();
- aToken.ToUpperAscii();
-
- ::rtl::OUString aOUStr1 ( aStr1 );
- ::rtl::OUString aOUToken( aToken );
- sal_Int32 nRet = aOUStr1.lastIndexOf( aOUToken, nStartPos );
+ aStr1 = aStr1.toAsciiUpperCase();
+ aToken = aToken.toAsciiUpperCase();
- if( nRet == -1 )
- nPos = 0;
- else
- nPos = (sal_uInt16)nRet + 1;
+ nPos = aStr1.lastIndexOf( aToken, nStartPos ) + 1;
}
}
}
@@ -1117,7 +1103,7 @@ RTLFUNC(LCase)
else
{
const CharClass& rCharClass = GetCharClass();
- String aStr( rPar.Get(1)->GetString() );
+ OUString aStr( rPar.Get(1)->GetOUString() );
aStr = rCharClass.lowercase(aStr);
rPar.Get(0)->PutString( aStr );
}
@@ -1134,18 +1120,18 @@ RTLFUNC(Left)
}
else
{
- String aStr( rPar.Get(1)->GetString() );
- sal_Int32 lResultLen = rPar.Get(2)->GetLong();
- if( lResultLen > 0xffff )
+ OUString aStr( rPar.Get(1)->GetOUString() );
+ sal_Int32 nResultLen = rPar.Get(2)->GetLong();
+ if( nResultLen < 0 )
{
- lResultLen = 0xffff;
+ nResultLen = 0;
+ StarBASIC::Error( SbERR_BAD_ARGUMENT );
}
- else if( lResultLen < 0 )
+ else if(nResultLen > aStr.getLength())
{
- lResultLen = 0;
- StarBASIC::Error( SbERR_BAD_ARGUMENT );
+ nResultLen = aStr.getLength();
}
- aStr.Erase( (sal_uInt16)lResultLen );
+ aStr = aStr.copy(0, nResultLen );
rPar.Get(0)->PutString( aStr );
}
}
@@ -1199,7 +1185,7 @@ RTLFUNC(Mid)
(void)pBasic;
(void)bWrite;
- sal_uIntPtr nArgCount = rPar.Count()-1;
+ int nArgCount = rPar.Count()-1;
if ( nArgCount < 2 )
{
StarBASIC::Error( SbERR_BAD_ARGUMENT );
@@ -1211,41 +1197,46 @@ RTLFUNC(Mid)
// In contrast to the original the third parameter (nLength)
// can't be left out here. That's considered in bWrite already.
if( nArgCount == 4 )
+ {
bWrite = sal_True;
-
- String aArgStr = rPar.Get(1)->GetString();
- sal_uInt16 nStartPos = (sal_uInt16)(rPar.Get(2)->GetLong() );
+ }
+ OUString aArgStr = rPar.Get(1)->GetOUString();
+ sal_Int32 nStartPos = rPar.Get(2)->GetLong();
if ( nStartPos == 0 )
+ {
StarBASIC::Error( SbERR_BAD_ARGUMENT );
+ }
else
{
nStartPos--;
- sal_uInt16 nLen = 0xffff;
+ sal_Int32 nLen = -1;
bool bWriteNoLenParam = false;
if ( nArgCount == 3 || bWrite )
{
sal_Int32 n = rPar.Get(3)->GetLong();
if( bWrite && n == -1 )
+ {
bWriteNoLenParam = true;
- nLen = (sal_uInt16)n;
+ }
+ nLen = n;
}
- String aResultStr;
if ( bWrite )
{
+ OUStringBuffer aResultStr;
SbiInstance* pInst = GetSbData()->pInst;
bool bCompatibility = ( pInst && pInst->IsCompatibility() );
if( bCompatibility )
{
- sal_uInt16 nArgLen = aArgStr.Len();
+ sal_Int32 nArgLen = aArgStr.getLength();
if( nStartPos + 1 > nArgLen )
{
StarBASIC::Error( SbERR_BAD_ARGUMENT );
return;
}
- String aReplaceStr = rPar.Get(4)->GetString();
- sal_uInt16 nReplaceStrLen = aReplaceStr.Len();
- sal_uInt16 nReplaceLen;
+ OUString aReplaceStr = rPar.Get(4)->GetOUString();
+ sal_Int32 nReplaceStrLen = aReplaceStr.getLength();
+ sal_Int32 nReplaceLen;
if( bWriteNoLenParam )
{
nReplaceLen = nReplaceStrLen;
@@ -1253,31 +1244,35 @@ RTLFUNC(Mid)
else
{
nReplaceLen = nLen;
- if( nReplaceLen > nReplaceStrLen )
+ if( nReplaceLen < 0 || nReplaceLen > nReplaceStrLen )
+ {
nReplaceLen = nReplaceStrLen;
+ }
}
- sal_uInt16 nReplaceEndPos = nStartPos + nReplaceLen;
+ sal_Int32 nReplaceEndPos = nStartPos + nReplaceLen;
if( nReplaceEndPos > nArgLen )
+ {
nReplaceLen -= (nReplaceEndPos - nArgLen);
-
+ }
aResultStr = aArgStr;
- sal_uInt16 nErase = nReplaceLen;
- aResultStr.Erase( nStartPos, nErase );
- aResultStr.Insert( aReplaceStr, 0, nReplaceLen, nStartPos );
+ sal_Int32 nErase = nReplaceLen;
+ aResultStr.remove( nStartPos, nErase );
+ aResultStr.insert( nStartPos, aReplaceStr.getStr(), nReplaceLen);
}
else
{
aResultStr = aArgStr;
- aResultStr.Erase( nStartPos, nLen );
- aResultStr.Insert(rPar.Get(4)->GetString(),0,nLen,nStartPos);
+ aResultStr.remove( nStartPos, nLen );
+ aResultStr.insert( nStartPos, rPar.Get(4)->GetOUString().getStr(), nLen);
}
- rPar.Get(1)->PutString( aResultStr );
+ rPar.Get(1)->PutString( aResultStr.makeStringAndClear() );
}
else
{
- aResultStr = aArgStr.Copy( nStartPos, nLen );
+ OUString aResultStr;
+ aResultStr = aArgStr.copy( nStartPos, nLen );
rPar.Get(0)->PutString( aResultStr );
}
}
@@ -1323,9 +1318,9 @@ RTLFUNC(Replace)
}
else
{
- String aExpStr = rPar.Get(1)->GetString();
- String aFindStr = rPar.Get(2)->GetString();
- String aReplaceStr = rPar.Get(3)->GetString();
+ OUString aExpStr = rPar.Get(1)->GetOUString();
+ OUString aFindStr = rPar.Get(2)->GetOUString();
+ OUString aReplaceStr = rPar.Get(3)->GetOUString();
sal_Int32 lStartPos = 1;
if ( nArgCount >= 4 )
@@ -1334,7 +1329,7 @@ RTLFUNC(Replace)
{
lStartPos = rPar.Get(4)->GetLong();
}
- if( lStartPos < 1 || lStartPos > 0xffff )
+ if( lStartPos < 1)
{
StarBASIC::Error( SbERR_BAD_ARGUMENT );
lStartPos = 1;
@@ -1348,7 +1343,7 @@ RTLFUNC(Replace)
{
lCount = rPar.Get(5)->GetLong();
}
- if( lCount < -1 || lCount > 0xffff )
+ if( lCount < -1)
{
StarBASIC::Error( SbERR_BAD_ARGUMENT );
lCount = -1;
@@ -1368,28 +1363,29 @@ RTLFUNC(Replace)
bTextMode = 1;
}
if ( nArgCount == 6 )
+ {
bTextMode = rPar.Get(6)->GetInteger();
-
- sal_uInt16 nExpStrLen = aExpStr.Len();
- sal_uInt16 nFindStrLen = aFindStr.Len();
- sal_uInt16 nReplaceStrLen = aReplaceStr.Len();
+ }
+ sal_Int32 nExpStrLen = aExpStr.getLength();
+ sal_Int32 nFindStrLen = aFindStr.getLength();
+ sal_Int32 nReplaceStrLen = aReplaceStr.getLength();
if( lStartPos <= nExpStrLen )
{
- sal_uInt16 nPos = static_cast<sal_uInt16>( lStartPos - 1 );
- sal_uInt16 nCounts = 0;
+ sal_Int32 nPos = lStartPos - 1;
+ sal_Int32 nCounts = 0;
while( lCount == -1 || lCount > nCounts )
{
- String aSrcStr( aExpStr );
+ OUString aSrcStr( aExpStr );
if( bTextMode )
{
- aSrcStr.ToUpperAscii();
- aFindStr.ToUpperAscii();
+ aSrcStr = aSrcStr.toAsciiUpperCase();
+ aFindStr = aFindStr.toAsciiUpperCase();
}
- nPos = aSrcStr.Search( aFindStr, nPos );
- if( nPos != STRING_NOTFOUND )
+ nPos = aSrcStr.indexOf( aFindStr, nPos );
+ if( nPos >= 0 )
{
- aExpStr.Replace( nPos, nFindStrLen, aReplaceStr );
+ aExpStr = aExpStr.replaceAt( nPos, nFindStrLen, aReplaceStr );
nPos = nPos - nFindStrLen + nReplaceStrLen + 1;
nCounts++;
}
@@ -1399,7 +1395,7 @@ RTLFUNC(Replace)
}
}
}
- rPar.Get(0)->PutString( aExpStr.Copy( static_cast<sal_uInt16>(lStartPos - 1) ) );
+ rPar.Get(0)->PutString( aExpStr.copy( lStartPos - 1 ) );
}
}
@@ -1491,7 +1487,7 @@ RTLFUNC(Space)
}
else
{
- rtl::OUStringBuffer aBuf;
+ OUStringBuffer aBuf;
string::padToLength(aBuf, rPar.Get(1)->GetLong(), ' ');
rPar.Get(0)->PutString(aBuf.makeStringAndClear());
}
@@ -1508,7 +1504,7 @@ RTLFUNC(Spc)
}
else
{
- rtl::OUStringBuffer aBuf;
+ OUStringBuffer aBuf;
string::padToLength(aBuf, rPar.Get(1)->GetLong(), ' ');
rPar.Get(0)->PutString(aBuf.makeStringAndClear());
}
@@ -1548,7 +1544,8 @@ RTLFUNC(Str)
}
else
{
- String aStr;
+ OUString aStr;
+ OUString aStrNew("");
SbxVariableRef pArg = rPar.Get( 1 );
pArg->Format( aStr );
@@ -1556,34 +1553,47 @@ RTLFUNC(Str)
if( pArg->IsNumericRTL() )
{
// replace commas by points so that it's symmetric to Val!
- aStr.SearchAndReplace( ',', '.' );
+ aStr = aStr.replaceFirst( ",", "." );
SbiInstance* pInst = GetSbData()->pInst;
bool bCompatibility = ( pInst && pInst->IsCompatibility() );
if( bCompatibility )
{
- xub_StrLen nLen = aStr.Len();
+ sal_Int32 nLen = aStr.getLength();
- const sal_Unicode* pBuf = aStr.GetBuffer();
+ const sal_Unicode* pBuf = aStr.getStr();
bool bNeg = ( pBuf[0] == '-' );
- sal_uInt16 iZeroSearch = 0;
+ sal_Int32 iZeroSearch = 0;
if( bNeg )
+ {
+ aStrNew += "-";
iZeroSearch++;
-
- sal_uInt16 iNext = iZeroSearch + 1;
+ }
+ else
+ {
+ if( pBuf[0] != ' ' )
+ {
+ aStrNew += " ";
+ }
+ }
+ sal_Int32 iNext = iZeroSearch + 1;
if( pBuf[iZeroSearch] == '0' && nLen > iNext && pBuf[iNext] == '.' )
{
- aStr.Erase( iZeroSearch, 1 );
- pBuf = aStr.GetBuffer();
+ iZeroSearch += 1;
}
- if( !bNeg )
- aStr.Insert( ' ', 0 );
+ aStrNew += aStr.copy(iZeroSearch);
}
else
- aStr.Insert( ' ', 0 );
+ {
+ aStrNew = " " + aStr;
+ }
}
- rPar.Get(0)->PutString( aStr );
+ else
+ {
+ aStrNew = aStr;
+ }
+ rPar.Get(0)->PutString( aStrNew );
}
}
@@ -1598,8 +1608,8 @@ RTLFUNC(StrComp)
rPar.Get(0)->PutEmpty();
return;
}
- const String& rStr1 = rPar.Get(1)->GetString();
- const String& rStr2 = rPar.Get(2)->GetString();
+ const OUString& rStr1 = rPar.Get(1)->GetOUString();
+ const OUString& rStr2 = rPar.Get(2)->GetOUString();
SbiInstance* pInst = GetSbData()->pInst;
sal_Int16 nTextCompare;
@@ -1617,9 +1627,9 @@ RTLFUNC(StrComp)
nTextCompare = rPar.Get(3)->GetInteger();
if( !bCompatibility )
+ {
nTextCompare = !nTextCompare;
-
- StringCompare aResult;
+ }
sal_Int32 nRetValue = 0;
if( nTextCompare )
{
@@ -1640,13 +1650,17 @@ RTLFUNC(StrComp)
}
else
{
- aResult = rStr1.CompareTo( rStr2 );
- if ( aResult == COMPARE_LESS )
+ sal_Int32 aResult;
+ aResult = rStr1.compareTo( rStr2 );
+ if ( aResult < 0 )
+ {
nRetValue = -1;
- else if ( aResult == COMPARE_GREATER )
+ }
+ else if ( aResult > 0)
+ {
nRetValue = 1;
+ }
}
-
rPar.Get(0)->PutInteger( sal::static_int_cast< sal_Int16 >( nRetValue ) );
}
@@ -1664,17 +1678,20 @@ RTLFUNC(String)
sal_Unicode aFiller;
sal_Int32 lCount = rPar.Get(1)->GetLong();
if( lCount < 0 || lCount > 0xffff )
+ {
StarBASIC::Error( SbERR_BAD_ARGUMENT );
- sal_uInt16 nCount = (sal_uInt16)lCount;
+ }
if( rPar.Get(2)->GetType() == SbxINTEGER )
+ {
aFiller = (sal_Unicode)rPar.Get(2)->GetInteger();
+ }
else
{
- const String& rStr = rPar.Get(2)->GetString();
- aFiller = rStr.GetBuffer()[0];
+ const OUString& rStr = rPar.Get(2)->GetOUString();
+ aFiller = rStr[0];
}
- rtl::OUStringBuffer aBuf;
- string::padToLength(aBuf, nCount, aFiller);
+ OUStringBuffer aBuf(lCount);
+ string::padToLength(aBuf, lCount, aFiller);
rPar.Get(0)->PutString(aBuf.makeStringAndClear());
}
}
@@ -1707,7 +1724,7 @@ RTLFUNC(UCase)
else
{
const CharClass& rCharClass = GetCharClass();
- String aStr( rPar.Get(1)->GetString() );
+ OUString aStr( rPar.Get(1)->GetOUString() );
aStr = rCharClass.uppercase( aStr );
rPar.Get(0)->PutString( aStr );
}
@@ -1728,13 +1745,13 @@ RTLFUNC(Val)
double nResult = 0.0;
char* pEndPtr;
- String aStr( rPar.Get(1)->GetString() );
+ OUString aStr( rPar.Get(1)->GetOUString() );
FilterWhiteSpace( aStr );
- if ( aStr.GetBuffer()[0] == '&' && aStr.Len() > 1 )
+ if ( aStr[0] == '&' && aStr.getLength() > 1 )
{
int nRadix = 10;
- char aChar = (char)aStr.GetBuffer()[1];
+ char aChar = (char)aStr[1];
if ( aChar == 'h' || aChar == 'H' )
{
nRadix = 16;
@@ -1745,7 +1762,7 @@ RTLFUNC(Val)
}
if ( nRadix != 10 )
{
- rtl::OString aByteStr(rtl::OUStringToOString(aStr, osl_getThreadTextEncoding()));
+ OString aByteStr(rtl::OUStringToOString(aStr, osl_getThreadTextEncoding()));
sal_Int16 nlResult = (sal_Int16)strtol( aByteStr.getStr()+2, &pEndPtr, nRadix);
nResult = (double)nlResult;
}
@@ -1807,7 +1824,7 @@ RTLFUNC(CDateToIso)
implGetDateYear( aDate ),
implGetDateMonth( aDate ),
implGetDateDay( aDate ) );
- String aRetStr = rtl::OUString::createFromAscii( Buffer );
+ OUString aRetStr = rtl::OUString::createFromAscii( Buffer );
rPar.Get(0)->PutString( aRetStr );
}
else
@@ -1824,15 +1841,15 @@ RTLFUNC(CDateFromIso)
if ( rPar.Count() == 2 )
{
- String aStr = rPar.Get(1)->GetString();
- sal_Int16 iMonthStart = aStr.Len() - 4;
- String aYearStr = aStr.Copy( 0, iMonthStart );
- String aMonthStr = aStr.Copy( iMonthStart, 2 );
- String aDayStr = aStr.Copy( iMonthStart+2, 2 );
+ OUString aStr = rPar.Get(1)->GetOUString();
+ sal_Int16 iMonthStart = aStr.getLength() - 4;
+ OUString aYearStr = aStr.copy( 0, iMonthStart );
+ OUString aMonthStr = aStr.copy( iMonthStart, 2 );
+ OUString aDayStr = aStr.copy( iMonthStart+2, 2 );
double dDate;
- if( implDateSerial( (sal_Int16)aYearStr.ToInt32(),
- (sal_Int16)aMonthStr.ToInt32(), (sal_Int16)aDayStr.ToInt32(), dDate ) )
+ if( implDateSerial( (sal_Int16)aYearStr.toInt32(),
+ (sal_Int16)aMonthStr.toInt32(), (sal_Int16)aDayStr.toInt32(), dDate ) )
{
rPar.Get(0)->PutDate( dDate );
}
@@ -1922,7 +1939,7 @@ RTLFUNC(DateValue)
sal_uInt32 nIndex;
double fResult;
- String aStr( rPar.Get(1)->GetString() );
+ OUString aStr( rPar.Get(1)->GetOUString() );
sal_Bool bSuccess = pFormatter->IsNumberFormat( aStr, nIndex, fResult );
short nType = pFormatter->GetType( nIndex );
@@ -1991,7 +2008,7 @@ RTLFUNC(TimeValue)
sal_uInt32 nIndex;
double fResult;
- sal_Bool bSuccess = pFormatter->IsNumberFormat( rPar.Get(1)->GetString(),
+ sal_Bool bSuccess = pFormatter->IsNumberFormat( rPar.Get(1)->GetOUString(),
nIndex, fResult );
short nType = pFormatter->GetType(nIndex);
if(bSuccess && (nType==NUMBERFORMAT_TIME||nType==NUMBERFORMAT_DATETIME))
@@ -2180,13 +2197,13 @@ RTLFUNC(Time)
{
Time aTime( Time::SYSTEM );
SbxVariable* pMeth = rPar.Get( 0 );
- String aRes;
+ OUString aRes;
if( pMeth->IsFixed() )
{
// Time$: hh:mm:ss
char buf[ 20 ];
snprintf( buf, sizeof(buf), "%02d:%02d:%02d",
- aTime.GetHour(), aTime.GetMin(), aTime.GetSec() );
+ aTime.GetHour(), aTime.GetMin(), aTime.GetSec() );
aRes = rtl::OUString::createFromAscii( buf );
}
else
@@ -2253,7 +2270,7 @@ RTLFUNC(Date)
SbxVariable* pMeth = rPar.Get( 0 );
if( pMeth->IsString() )
{
- String aRes;
+ OUString aRes;
Color* pCol;
SvNumberFormatter* pFormatter = NULL;
@@ -2496,7 +2513,7 @@ RTLFUNC(IsMissing)
}
// Function looks for wildcards, removes them and always returns the pure path
-String implSetupWildcard( const String& rFileParam, SbiRTLData* pRTLData )
+OUString implSetupWildcard( const OUString& rFileParam, SbiRTLData* pRTLData )
{
static sal_Char cDelim1 = (sal_Char)'/';
static sal_Char cDelim2 = (sal_Char)'\\';
@@ -2505,47 +2522,54 @@ String implSetupWildcard( const String& rFileParam, SbiRTLData* pRTLData )
delete pRTLData->pWildCard;
pRTLData->pWildCard = NULL;
- pRTLData->sFullNameToBeChecked = String();
-
- String aFileParam = rFileParam;
- xub_StrLen nLastWild = aFileParam.SearchBackward( cWild1 );
- if( nLastWild == STRING_NOTFOUND )
- nLastWild = aFileParam.SearchBackward( cWild2 );
- bool bHasWildcards = ( nLastWild != STRING_NOTFOUND );
+ pRTLData->sFullNameToBeChecked = OUString();
+ OUString aFileParam = rFileParam;
+ sal_Int32 nLastWild = aFileParam.lastIndexOf( cWild1 );
+ if( nLastWild < 0 )
+ {
+ nLastWild = aFileParam.lastIndexOf( cWild2 );
+ }
+ bool bHasWildcards = ( nLastWild >= 0 );
- xub_StrLen nLastDelim = aFileParam.SearchBackward( cDelim1 );
- if( nLastDelim == STRING_NOTFOUND )
- nLastDelim = aFileParam.SearchBackward( cDelim2 );
+ sal_Int32 nLastDelim = aFileParam.lastIndexOf( cDelim1 );
+ if( nLastDelim < 0 )
+ {
+ nLastDelim = aFileParam.lastIndexOf( cDelim2 );
+ }
if( bHasWildcards )
{
// Wildcards in path?
- if( nLastDelim != STRING_NOTFOUND && nLastDelim > nLastWild )
+ if( nLastDelim >= 0 && nLastDelim > nLastWild )
+ {
return aFileParam;
+ }
}
else
{
- String aPathStr = getFullPath( aFileParam );
- if( nLastDelim != aFileParam.Len() - 1 )
+ OUString aPathStr = getFullPath( aFileParam );
+ if( nLastDelim != aFileParam.getLength() - 1 )
+ {
pRTLData->sFullNameToBeChecked = aPathStr;
+ }
return aPathStr;
}
- rtl::OUString aPureFileName;
- if( nLastDelim == STRING_NOTFOUND )
+ OUString aPureFileName;
+ if( nLastDelim < 0 )
{
aPureFileName = aFileParam;
- aFileParam = String();
+ aFileParam = OUString();
}
else
{
- aPureFileName = aFileParam.Copy( nLastDelim + 1 );
- aFileParam = aFileParam.Copy( 0, nLastDelim );
+ aPureFileName = aFileParam.copy( nLastDelim + 1 );
+ aFileParam = aFileParam.copy( 0, nLastDelim );
}
// Try again to get a valid URL/UNC-path with only the path
- String aPathStr = getFullPath( aFileParam );
+ OUString aPathStr = getFullPath( aFileParam );
// Is there a pure file name left? Otherwise the path is
// invalid anyway because it was not accepted by OSL before
@@ -2556,7 +2580,7 @@ String implSetupWildcard( const String& rFileParam, SbiRTLData* pRTLData )
return aPathStr;
}
-inline sal_Bool implCheckWildcard( const String& rName, SbiRTLData* pRTLData )
+inline sal_Bool implCheckWildcard( const OUString& rName, SbiRTLData* pRTLData )
{
sal_Bool bMatch = sal_True;
@@ -2568,7 +2592,7 @@ inline sal_Bool implCheckWildcard( const String& rName, SbiRTLData* pRTLData )
}
-bool isRootDir( String aDirURLStr )
+bool isRootDir( OUString aDirURLStr )
{
INetURLObject aDirURLObj( aDirURLStr );
bool bRoot = false;
@@ -2604,7 +2628,7 @@ RTLFUNC(Dir)
(void)pBasic;
(void)bWrite;
- String aPath;
+ OUString aPath;
sal_uInt16 nParCount = rPar.Count();
if( nParCount > 3 )
@@ -2628,21 +2652,21 @@ RTLFUNC(Dir)
{
if ( nParCount >= 2 )
{
- String aFileParam = rPar.Get(1)->GetString();
+ OUString aFileParam = rPar.Get(1)->GetOUString();
- String aFileURLStr = implSetupWildcard( aFileParam, pRTLData );
- if( pRTLData->sFullNameToBeChecked.Len() > 0 )
+ OUString aFileURLStr = implSetupWildcard( aFileParam, pRTLData );
+ if( !pRTLData->sFullNameToBeChecked.isEmpty())
{
sal_Bool bExists = sal_False;
try { bExists = xSFI->exists( aFileURLStr ); }
catch(const Exception & ) {}
- String aNameOnlyStr;
+ OUString aNameOnlyStr;
if( bExists )
{
INetURLObject aFileURL( aFileURLStr );
aNameOnlyStr = aFileURL.getName( INetURLObject::LAST_SEGMENT,
- true, INetURLObject::DECODE_WITH_CHARSET );
+ true, INetURLObject::DECODE_WITH_CHARSET );
}
rPar.Get(0)->PutString( aNameOnlyStr );
return;
@@ -2650,7 +2674,7 @@ RTLFUNC(Dir)
try
{
- String aDirURLStr;
+ OUString aDirURLStr;
sal_Bool bFolder = xSFI->isFolder( aFileURLStr );
if( bFolder )
@@ -2659,7 +2683,7 @@ RTLFUNC(Dir)
}
else
{
- String aEmptyStr;
+ OUString aEmptyStr;
rPar.Get(0)->PutString( aEmptyStr );
}
@@ -2721,7 +2745,7 @@ RTLFUNC(Dir)
else if( pRTLData->nCurDirPos >= pRTLData->aDirSeq.getLength() )
{
pRTLData->aDirSeq.realloc( 0 );
- aPath.Erase();
+ aPath = "";
break;
}
else
@@ -2773,9 +2797,9 @@ RTLFUNC(Dir)
// TODO: OSL
if ( nParCount >= 2 )
{
- String aFileParam = rPar.Get(1)->GetString();
+ OUString aFileParam = rPar.Get(1)->GetOUString();
- String aDirURL = implSetupWildcard( aFileParam, pRTLData );
+ OUString aDirURL = implSetupWildcard( aFileParam, pRTLData );
sal_uInt16 nFlags = 0;
if ( nParCount > 2 )
@@ -2795,7 +2819,7 @@ RTLFUNC(Dir)
{
delete pRTLData->pDir;
pRTLData->pDir = NULL;
- rPar.Get(0)->PutString( String() );
+ rPar.Get(0)->PutString( OUString() );
return;
}
@@ -2842,7 +2866,7 @@ RTLFUNC(Dir)
{
delete pRTLData->pDir;
pRTLData->pDir = NULL;
- aPath.Erase();
+ aPath = "";
break;
}
@@ -2892,12 +2916,12 @@ RTLFUNC(GetAttr)
#if defined( WNT )
if( SbiRuntime::isVBAEnabled() )
{
- DirEntry aEntry( rPar.Get(1)->GetString() );
+ DirEntry aEntry( rPar.Get(1)->GetOUString() );
aEntry.ToAbs();
// #57064 extract the real-path for virtual URLs
- rtl::OString aByteStrFullPath(rtl::OUStringToOString(aEntry.GetFull(),
- osl_getThreadTextEncoding()));
+ OString aByteStrFullPath(rtl::OUStringToOString(aEntry.GetFull(),
+ osl_getThreadTextEncoding()));
DWORD nRealFlags = GetFileAttributes (aByteStrFullPath.getStr());
if (nRealFlags != 0xffffffff)
{
@@ -2924,7 +2948,7 @@ RTLFUNC(GetAttr)
{
try
{
- String aPath = getFullPath( rPar.Get(1)->GetString() );
+ OUString aPath = getFullPath( rPar.Get(1)->GetOUString() );
sal_Bool bExists = sal_False;
try { bExists = xSFI->exists( aPath ); }
catch(const Exception & ) {}
@@ -2959,7 +2983,7 @@ RTLFUNC(GetAttr)
else
{
DirectoryItem aItem;
- DirectoryItem::get( getFullPathUNC( rPar.Get(1)->GetString() ), aItem );
+ DirectoryItem::get( getFullPathUNC( rPar.Get(1)->GetOUString() ), aItem );
FileStatus aFileStatus( osl_FileStatus_Mask_Attributes | osl_FileStatus_Mask_Type );
aItem.getFileStatus( aFileStatus );
sal_uInt64 nAttributes = aFileStatus.getAttributes();
@@ -2996,7 +3020,7 @@ RTLFUNC(FileDateTime)
}
else
{
- String aPath = rPar.Get(1)->GetString();
+ OUString aPath = rPar.Get(1)->GetOUString();
Time aTime( Time::EMPTY );
Date aDate( Date::EMPTY );
if( hasUno() )
@@ -3053,7 +3077,7 @@ RTLFUNC(FileDateTime)
SbiInstance::PrepareNumberFormatter( pFormatter, n, n, nIndex );
}
- String aRes;
+ OUString aRes;
pFormatter->GetOutputString( fSerial, nIndex, aRes, &pCol );
rPar.Get(0)->PutString( aRes );
@@ -3281,14 +3305,14 @@ RTLFUNC(Format)
}
else
{
- String aResult;
+ OUString aResult;
if( nArgCount == 2 )
{
rPar.Get(1)->Format( aResult );
}
else
{
- String aFmt( rPar.Get(2)->GetString() );
+ OUString aFmt( rPar.Get(2)->GetOUString() );
rPar.Get(1)->Format( aResult, &aFmt );
}
rPar.Get(0)->PutString( aResult );
@@ -3365,64 +3389,66 @@ RTLFUNC(Shell)
{
oslProcessOption nOptions = osl_Process_SEARCHPATH | osl_Process_DETACHED;
- String aCmdLine = rPar.Get(1)->GetString();
+ OUString aCmdLine = rPar.Get(1)->GetOUString();
// attach additional parameters - everything must be parsed anyway
if( nArgCount >= 4 )
{
- aCmdLine.AppendAscii( " " );
- aCmdLine += rPar.Get(3)->GetString();
+ aCmdLine += " ";
+ aCmdLine += rPar.Get(3)->GetOUString();
}
- else if( !aCmdLine.Len() )
+ else if( aCmdLine.isEmpty() )
{
// avaoid special treatment (empty list)
- aCmdLine.AppendAscii( " " );
+ aCmdLine += " ";
}
- sal_uInt16 nLen = aCmdLine.Len();
+ sal_Int32 nLen = aCmdLine.getLength();
// #55735 if there are parameters, they have to be seperated
// #72471 also seperate the single parameters
std::list<String> aTokenList;
- String aToken;
- sal_uInt16 i = 0;
+ OUString aToken;
+ sal_Int32 i = 0;
sal_Unicode c;
while( i < nLen )
{
for ( ;; ++i )
{
- c = aCmdLine.GetBuffer()[ i ];
+ c = aCmdLine[ i ];
if ( c != ' ' && c != '\t' )
+ {
break;
+ }
}
if( c == '\"' || c == '\'' )
{
- sal_uInt16 iFoundPos = aCmdLine.Search( c, i + 1 );
+ sal_Int32 iFoundPos = aCmdLine.indexOf( c, i + 1 );
- if( iFoundPos == STRING_NOTFOUND )
+ if( iFoundPos < 0 )
{
- aToken = aCmdLine.Copy( i, STRING_LEN );
+ aToken = aCmdLine.copy( i);
i = nLen;
}
else
{
- aToken = aCmdLine.Copy( i + 1, (iFoundPos - i - 1) );
+ aToken = aCmdLine.copy( i + 1, (iFoundPos - i - 1) );
i = iFoundPos + 1;
}
}
else
{
- sal_uInt16 iFoundSpacePos = aCmdLine.Search( ' ', i );
- sal_uInt16 iFoundTabPos = aCmdLine.Search( '\t', i );
- sal_uInt16 iFoundPos = Min( iFoundSpacePos, iFoundTabPos );
+ sal_Int32 iFoundSpacePos = aCmdLine.indexOf( ' ', i );
+ sal_Int32 iFoundTabPos = aCmdLine.indexOf( '\t', i );
+ sal_Int32 iFoundPos = iFoundSpacePos >= 0 ? iFoundTabPos >= 0 ? Min( iFoundSpacePos, iFoundTabPos ) : iFoundSpacePos : -1;
- if( iFoundPos == STRING_NOTFOUND )
+ if( iFoundPos < 0 )
{
- aToken = aCmdLine.Copy( i, STRING_LEN );
+ aToken = aCmdLine.copy( i );
i = nLen;
}
else
{
- aToken = aCmdLine.Copy( i, (iFoundPos - i) );
+ aToken = aCmdLine.copy( i, (iFoundPos - i) );
i = iFoundPos;
}
}
@@ -3462,22 +3488,21 @@ RTLFUNC(Shell)
// #72471 work parameter(s) up
std::list<String>::const_iterator iter = aTokenList.begin();
- const String& rStr = *iter;
- ::rtl::OUString aOUStrProg( rStr.GetBuffer(), rStr.Len() );
- ::rtl::OUString aOUStrProgUNC = getFullPathUNC( aOUStrProg );
+ const OUString& rStr = *iter;
+ OUString aOUStrProg( rStr.getStr(), rStr.getLength() );
+ OUString aOUStrProgUNC = getFullPathUNC( aOUStrProg );
++iter;
- sal_uInt16 nParamCount = sal::static_int_cast< sal_uInt16 >(
- aTokenList.size() - 1 );
+ sal_uInt16 nParamCount = sal::static_int_cast< sal_uInt16 >(aTokenList.size() - 1 );
rtl_uString** pParamList = NULL;
if( nParamCount )
{
pParamList = new rtl_uString*[nParamCount];
for(int iList = 0; iter != aTokenList.end(); ++iList, ++iter)
{
- const String& rParamStr = (*iter);
- const ::rtl::OUString aTempStr( rParamStr.GetBuffer(), rParamStr.Len());
+ const OUString& rParamStr = (*iter);
+ const OUString aTempStr( rParamStr.getStr(), rParamStr.getLength());
pParamList[iList] = NULL;
rtl_uString_assign(&(pParamList[iList]), aTempStr.pData);
}
@@ -3530,7 +3555,7 @@ RTLFUNC(VarType)
}
// Exported function
-rtl::OUString getBasicTypeName( SbxDataType eType )
+OUString getBasicTypeName( SbxDataType eType )
{
static const char* pTypeNames[] =
{
@@ -3590,7 +3615,9 @@ String getObjectTypeName( SbxVariable* pVar )
{
SbxBase* pObj = pVar->GetObject();
if( !pObj )
- sRet = String( RTL_CONSTASCII_USTRINGPARAM("Nothing") );
+ {
+ sRet = OUString("Nothing");
+ }
else
{
SbUnoObject* pUnoObj = PTR_CAST(SbUnoObject,pVar );
@@ -3662,7 +3689,7 @@ RTLFUNC(TypeName)
SbxDataType eType = rPar.Get(1)->GetType();
bool bIsArray = ( ( eType & SbxARRAY ) != 0 );
- String aRetStr;
+ OUString aRetStr;
if ( SbiRuntime::isVBAEnabled() && eType == SbxOBJECT )
{
aRetStr = getObjectTypeName( rPar.Get(1) );
@@ -3672,7 +3699,9 @@ RTLFUNC(TypeName)
aRetStr = getBasicTypeName( eType );
}
if( bIsArray )
- aRetStr.AppendAscii( "()" );
+ {
+ aRetStr += "()";
+ }
rPar.Get(0)->PutString( aRetStr );
}
}
@@ -3688,8 +3717,8 @@ RTLFUNC(Len)
}
else
{
- const String& rStr = rPar.Get(1)->GetString();
- rPar.Get(0)->PutLong( (sal_Int32)rStr.Len() );
+ const OUString& rStr = rPar.Get(1)->GetOUString();
+ rPar.Get(0)->PutLong( rStr.getLength() );
}
}
@@ -3711,8 +3740,8 @@ RTLFUNC(DDEInitiate)
StarBASIC::Error( SbERR_BAD_ARGUMENT );
return;
}
- const OUString& rApp = rPar.Get(1)->GetString();
- const OUString& rTopic = rPar.Get(2)->GetString();
+ const OUString& rApp = rPar.Get(1)->GetOUString();
+ const OUString& rTopic = rPar.Get(2)->GetOUString();
SbiDdeControl* pDDE = GetSbData()->pInst->GetDdeControl();
size_t nChannel;
@@ -3802,7 +3831,7 @@ RTLFUNC(DDERequest)
return;
}
size_t nChannel = rPar.Get(1)->GetInteger();
- const OUString& rItem = rPar.Get(2)->GetString();
+ const OUString& rItem = rPar.Get(2)->GetOUString();
SbiDdeControl* pDDE = GetSbData()->pInst->GetDdeControl();
OUString aResult;
SbError nDdeErr = pDDE->Request( nChannel, rItem, aResult );
@@ -3836,7 +3865,7 @@ RTLFUNC(DDEExecute)
return;
}
size_t nChannel = rPar.Get(1)->GetInteger();
- const OUString& rCommand = rPar.Get(2)->GetString();
+ const OUString& rCommand = rPar.Get(2)->GetOUString();
SbiDdeControl* pDDE = GetSbData()->pInst->GetDdeControl();
SbError nDdeErr = pDDE->Execute( nChannel, rCommand );
if( nDdeErr )
@@ -3865,8 +3894,8 @@ RTLFUNC(DDEPoke)
return;
}
size_t nChannel = rPar.Get(1)->GetInteger();
- const OUString& rItem = rPar.Get(2)->GetString();
- const OUString& rData = rPar.Get(3)->GetString();
+ const OUString& rItem = rPar.Get(2)->GetOUString();
+ const OUString& rData = rPar.Get(3)->GetOUString();
SbiDdeControl* pDDE = GetSbData()->pInst->GetDdeControl();
SbError nDdeErr = pDDE->Poke( nChannel, rItem, rData );
if( nDdeErr )
@@ -4037,12 +4066,12 @@ RTLFUNC(StrConv)
return;
}
- String aOldStr = rPar.Get(1)->GetString();
+ OUString aOldStr = rPar.Get(1)->GetOUString();
sal_Int32 nConversion = rPar.Get(2)->GetLong();
sal_uInt16 nLanguage = LANGUAGE_SYSTEM;
- sal_uInt16 nOldLen = aOldStr.Len();
+ sal_Int32 nOldLen = aOldStr.getLength();
if( nOldLen == 0 )
{
// null string,return
@@ -4054,7 +4083,7 @@ RTLFUNC(StrConv)
if ( (nConversion & 0x03) == 3 ) // vbProperCase
{
const CharClass& rCharClass = GetCharClass();
- aOldStr = rCharClass.titlecase( aOldStr.ToLowerAscii(), 0, nOldLen );
+ aOldStr = rCharClass.titlecase( aOldStr.toAsciiLowerCase(), 0, nOldLen );
}
else if ( (nConversion & 0x01) == 1 ) // vbUpperCase
{
@@ -4077,9 +4106,10 @@ RTLFUNC(StrConv)
nType |= i18n::TransliterationModules_HIRAGANA_KATAKANA;
}
else if ( (nConversion & 0x20) == 32 ) // vbHiragana
+ {
nType |= i18n::TransliterationModules_KATAKANA_HIRAGANA;
-
- String aNewStr( aOldStr );
+ }
+ OUString aNewStr( aOldStr );
if( nType != 0 )
{
uno::Reference< uno::XComponentContext > xContext = getProcessComponentContext();
@@ -4092,32 +4122,33 @@ RTLFUNC(StrConv)
if ( (nConversion & 0x40) == 64 ) // vbUnicode
{
// convert the string to byte string, preserving unicode (2 bytes per character)
- sal_uInt16 nSize = aNewStr.Len()*2;
- const sal_Unicode* pSrc = aNewStr.GetBuffer();
+ sal_Int32 nSize = aNewStr.getLength()*2;
+ const sal_Unicode* pSrc = aNewStr.getStr();
sal_Char* pChar = new sal_Char[nSize+1];
- for( sal_uInt16 i=0; i < nSize; i++ )
+ for( sal_Int32 i=0; i < nSize; i++ )
{
pChar[i] = static_cast< sal_Char >( (i%2) ? ((*pSrc) >> 8) & 0xff : (*pSrc) & 0xff );
if( i%2 )
+ {
pSrc++;
+ }
}
pChar[nSize] = '\0';
::rtl::OString aOStr(pChar);
delete[] pChar;
// there is no concept about default codepage in unix. so it is incorrectly in unix
- ::rtl::OUString aOUStr = ::rtl::OStringToOUString(aOStr, osl_getThreadTextEncoding());
- aNewStr = String(aOUStr);
- rPar.Get(0)->PutString( aNewStr );
+ OUString aOUStr = ::rtl::OStringToOUString(aOStr, osl_getThreadTextEncoding());
+ rPar.Get(0)->PutString( aOUStr );
return;
}
else if ( (nConversion & 0x80) == 128 ) // vbFromUnicode
{
- ::rtl::OUString aOUStr(aNewStr);
+ OUString aOUStr(aNewStr);
// there is no concept about default codepage in unix. so it is incorrectly in unix
::rtl::OString aOStr = ::rtl::OUStringToOString(aNewStr,osl_getThreadTextEncoding());
const sal_Char* pChar = aOStr.getStr();
- sal_uInt16 nArraySize = static_cast< sal_uInt16 >( aOStr.getLength() );
+ sal_Int32 nArraySize = aOStr.getLength();
SbxDimArray* pArray = new SbxDimArray(SbxBYTE);
bool bIncIndex = (IsBaseIndexOne() && SbiRuntime::isVBAEnabled() );
if(nArraySize)
@@ -4136,7 +4167,7 @@ RTLFUNC(StrConv)
pArray->unoAddDim( 0, -1 );
}
- for( sal_uInt16 i=0; i< nArraySize; i++)
+ for( sal_Int32 i=0; i< nArraySize; i++)
{
SbxVariable* pNew = new SbxVariable( SbxBYTE );
pNew->PutByte(*pChar);
@@ -4195,8 +4226,7 @@ RTLFUNC(Load)
}
else if( pObj->IsA( TYPE( SbxObject ) ) )
{
- SbxVariable* pVar = ((SbxObject*)pObj)->
- Find( String( RTL_CONSTASCII_USTRINGPARAM("Load") ), SbxCLASS_METHOD );
+ SbxVariable* pVar = ((SbxObject*)pObj)->Find( OUString("Load"), SbxCLASS_METHOD );
if( pVar )
{
pVar->GetInteger();
@@ -4228,8 +4258,7 @@ RTLFUNC(Unload)
}
else if( pObj->IsA( TYPE( SbxObject ) ) )
{
- SbxVariable* pVar = ((SbxObject*)pObj)->
- Find( String( RTL_CONSTASCII_USTRINGPARAM("Unload") ), SbxCLASS_METHOD );
+ SbxVariable* pVar = ((SbxObject*)pObj)->Find( OUString("Unload"), SbxCLASS_METHOD );
if( pVar )
{
pVar->GetInteger();
@@ -4249,7 +4278,7 @@ RTLFUNC(LoadPicture)
return;
}
- String aFileURL = getFullPath( rPar.Get(1)->GetString() );
+ OUString aFileURL = getFullPath( rPar.Get(1)->GetOUString() );
SvStream* pStream = utl::UcbStreamHelper::CreateStream( aFileURL, STREAM_READ );
if( pStream != NULL )
{
@@ -4279,7 +4308,7 @@ RTLFUNC(SavePicture)
SbxBase* pObj = (SbxObject*)rPar.Get(1)->GetObject();
if( pObj->IsA( TYPE( SbStdPicture ) ) )
{
- SvFileStream aOStream( rPar.Get(2)->GetString(), STREAM_WRITE | STREAM_TRUNC );
+ SvFileStream aOStream( rPar.Get(2)->GetOUString(), STREAM_WRITE | STREAM_TRUNC );
Graphic aGraphic = ((SbStdPicture*)pObj)->GetGraphic();
aOStream << aGraphic;
}
@@ -4371,10 +4400,12 @@ RTLFUNC(MsgBox)
}
nWinBits |= nWinDefBits;
- String aMsg = rPar.Get(1)->GetString();
- String aTitle;
+ OUString aMsg = rPar.Get(1)->GetOUString();
+ OUString aTitle;
if( nArgCount >= 4 )
- aTitle = rPar.Get(3)->GetString();
+ {
+ aTitle = rPar.Get(3)->GetOUString();
+ }
else
{
aTitle = GetpApp()->GetAppName();
@@ -4431,7 +4462,7 @@ RTLFUNC(SetAttr)
rPar.Get(0)->PutEmpty();
if ( rPar.Count() == 3 )
{
- String aStr = rPar.Get(1)->GetString();
+ OUString aStr = rPar.Get(1)->GetOUString();
sal_Int16 nFlags = rPar.Get(2)->GetInteger();
if( hasUno() )
@@ -4490,8 +4521,10 @@ RTLFUNC(DumpAllObjects)
{
SbxObject* p = pBasic;
while( p->GetParent() )
+ {
p = p->GetParent();
- SvFileStream aStrm( rPar.Get( 1 )->GetString(),
+ }
+ SvFileStream aStrm( rPar.Get( 1 )->GetOUString(),
STREAM_WRITE | STREAM_TRUNC );
p->Dump( aStrm, rPar.Get( 2 )->GetBool() );
aStrm.Close();
@@ -4510,7 +4543,7 @@ RTLFUNC(FileExists)
if ( rPar.Count() == 2 )
{
- String aStr = rPar.Get(1)->GetString();
+ OUString aStr = rPar.Get(1)->GetOUString();
sal_Bool bExists = sal_False;
if( hasUno() )
@@ -4622,7 +4655,7 @@ RTLFUNC(Partition)
}
}
aRetStr.append( aUpperValue );
- rPar.Get(0)->PutString( String(aRetStr.makeStringAndClear()) );
+ rPar.Get(0)->PutString( aRetStr.makeStringAndClear());
}
#endif