basic/source/runtime/methods.cxx | 120 +++++++++++++++------------------------ 1 file changed, 47 insertions(+), 73 deletions(-)
New commits: commit 26c30fd77bf31ad8c14da1413aaa61fa8aa45206 Author: U-Aarons_Laptop\Aaron <[email protected]> AuthorDate: Tue Mar 26 14:59:04 2024 -0400 Commit: Michael Weghorn <[email protected]> CommitDate: Wed Mar 27 11:48:19 2024 +0100 tdf#147132: Flatten Basic function implementations Change-Id: I9fcbc87b7ce01d96ffb45ddd3a525831c7cdcdaa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165357 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx index 34d959669747..a97e66dc6c41 100644 --- a/basic/source/runtime/methods.cxx +++ b/basic/source/runtime/methods.cxx @@ -1003,47 +1003,35 @@ void SbRtl_LCase(StarBASIC *, SbxArray & rPar, bool) void SbRtl_Left(StarBASIC *, SbxArray & rPar, bool) { if (rPar.Count() < 3) + return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); + + OUString aStr(rPar.Get(1)->GetOUString()); + sal_Int32 nResultLen = rPar.Get(2)->GetLong(); + if( nResultLen < 0 ) { + nResultLen = 0; StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); } - else + else if(nResultLen > aStr.getLength()) { - OUString aStr(rPar.Get(1)->GetOUString()); - sal_Int32 nResultLen = rPar.Get(2)->GetLong(); - if( nResultLen < 0 ) - { - nResultLen = 0; - StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); - } - else if(nResultLen > aStr.getLength()) - { - nResultLen = aStr.getLength(); - } - aStr = aStr.copy(0, nResultLen ); - rPar.Get(0)->PutString(aStr); + nResultLen = aStr.getLength(); } + aStr = aStr.copy(0, nResultLen ); + rPar.Get(0)->PutString(aStr); } void SbRtl_Log(StarBASIC *, SbxArray & rPar, bool) { if (rPar.Count() < 2) - { - StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); - } - else - { - double aArg = rPar.Get(1)->GetDouble(); - if ( aArg > 0 ) - { - double d = log( aArg ); - checkArithmeticOverflow( d ); - rPar.Get(0)->PutDouble(d); - } - else - { - StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); - } - } + return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); + + double aArg = rPar.Get(1)->GetDouble(); + if ( aArg <= 0 ) + return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); + + double d = log( aArg ); + checkArithmeticOverflow( d ); + rPar.Get(0)->PutDouble(d); } void SbRtl_LTrim(StarBASIC *, SbxArray & rPar, bool) @@ -1164,18 +1152,14 @@ void SbRtl_Mid(StarBASIC *, SbxArray & rPar, bool bWrite) void SbRtl_Oct(StarBASIC *, SbxArray & rPar, bool) { if (rPar.Count() < 2) - { - StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); - } - else - { - SbxVariableRef pArg = rPar.Get(1); - // converting value to unsigned and limit to 2 or 4 byte representation - sal_uInt32 nVal = pArg->IsInteger() ? - static_cast<sal_uInt16>(pArg->GetInteger()) : - static_cast<sal_uInt32>(pArg->GetLong()); - rPar.Get(0)->PutString(OUString::number(nVal, 8)); - } + return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); + + SbxVariableRef pArg = rPar.Get(1); + // converting value to unsigned and limit to 2 or 4 byte representation + sal_uInt32 nVal = pArg->IsInteger() ? + static_cast<sal_uInt16>(pArg->GetInteger()) : + static_cast<sal_uInt32>(pArg->GetLong()); + rPar.Get(0)->PutString(OUString::number(nVal, 8)); } // Replace(expression, find, replace[, start[, count[, compare]]]) @@ -1184,9 +1168,7 @@ void SbRtl_Replace(StarBASIC *, SbxArray & rPar, bool) { const sal_uInt32 nArgCount = rPar.Count() - 1; if ( nArgCount < 3 || nArgCount > 6 ) - { return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); - } sal_Int32 lStartPos = 1; if (nArgCount >= 4) @@ -1287,26 +1269,22 @@ void SbRtl_Replace(StarBASIC *, SbxArray & rPar, bool) void SbRtl_Right(StarBASIC *, SbxArray & rPar, bool) { if (rPar.Count() < 3) + return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); + + const OUString& rStr = rPar.Get(1)->GetOUString(); + int nResultLen = rPar.Get(2)->GetLong(); + if( nResultLen < 0 ) { + nResultLen = 0; StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); } - else + int nStrLen = rStr.getLength(); + if ( nResultLen > nStrLen ) { - const OUString& rStr = rPar.Get(1)->GetOUString(); - int nResultLen = rPar.Get(2)->GetLong(); - if( nResultLen < 0 ) - { - nResultLen = 0; - StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); - } - int nStrLen = rStr.getLength(); - if ( nResultLen > nStrLen ) - { - nResultLen = nStrLen; - } - OUString aResultStr = rStr.copy( nStrLen - nResultLen ); - rPar.Get(0)->PutString(aResultStr); + nResultLen = nStrLen; } + OUString aResultStr = rStr.copy( nStrLen - nResultLen ); + rPar.Get(0)->PutString(aResultStr); } void SbRtl_RTL(StarBASIC * pBasic, SbxArray & rPar, bool) @@ -1326,23 +1304,19 @@ void SbRtl_RTrim(StarBASIC *, SbxArray & rPar, bool) void SbRtl_Sgn(StarBASIC *, SbxArray & rPar, bool) { if (rPar.Count() < 2) + return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); + + double aDouble = rPar.Get(1)->GetDouble(); + sal_Int16 nResult = 0; + if ( aDouble > 0 ) { - StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT ); + nResult = 1; } - else + else if ( aDouble < 0 ) { - double aDouble = rPar.Get(1)->GetDouble(); - sal_Int16 nResult = 0; - if ( aDouble > 0 ) - { - nResult = 1; - } - else if ( aDouble < 0 ) - { - nResult = -1; - } - rPar.Get(0)->PutInteger(nResult); + nResult = -1; } + rPar.Get(0)->PutInteger(nResult); } void SbRtl_Space(StarBASIC *, SbxArray & rPar, bool)
