tdf#147132 Flatten Basic function implementations.

Change-Id: I5e5d01c43b39f68f38290ce04b26730af362b43e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180282
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
This commit is contained in:
bruh
2025-01-15 18:05:36 +05:30
committed by Mike Kaganski
parent 28e449d31f
commit c67bd0a332

View File

@@ -785,9 +785,8 @@ void SbRtl_InStr(StarBASIC *, SbxArray & rPar, bool)
{
const sal_uInt32 nArgCount = rPar.Count() - 1;
if ( nArgCount < 2 )
StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
else
{
return StarBASIC::Error(ERRCODE_BASIC_BAD_ARGUMENT);
sal_Int32 nStartPos = 1;
sal_Int32 nFirstStringPos = 1;
@@ -857,7 +856,6 @@ void SbRtl_InStr(StarBASIC *, SbxArray & rPar, bool)
}
}
rPar.Get(0)->PutLong(nPos);
}
}
@@ -1041,10 +1039,8 @@ void SbRtl_Mid(StarBASIC *, SbxArray & rPar, bool bWrite)
int nArgCount = rPar.Count() - 1;
if ( nArgCount < 2 )
{
StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
return StarBASIC::Error(ERRCODE_BASIC_BAD_ARGUMENT);
}
else
{
// #23178: replicate the functionality of Mid$ as a command
// by adding a replacement-string as a fourth parameter.
// In contrast to the original the third parameter (nLength)
@@ -1057,10 +1053,9 @@ void SbRtl_Mid(StarBASIC *, SbxArray & rPar, bool bWrite)
sal_Int32 nStartPos = rPar.Get(2)->GetLong();
if ( nStartPos < 1 )
{
StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
}
else
{
nStartPos--;
sal_Int32 nLen = -1;
bool bWriteNoLenParam = false;
@@ -1135,8 +1130,6 @@ void SbRtl_Mid(StarBASIC *, SbxArray & rPar, bool bWrite)
}
rPar.Get(0)->PutString(aResultStr);
}
}
}
}
void SbRtl_Oct(StarBASIC *, SbxArray & rPar, bool)
@@ -1313,45 +1306,37 @@ void SbRtl_Space(StarBASIC *, SbxArray & rPar, bool)
{
if (rPar.Count() < 2)
{
StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
return StarBASIC::Error(ERRCODE_BASIC_BAD_ARGUMENT);
}
else
{
const sal_Int32 nCount = rPar.Get(1)->GetLong();
OUStringBuffer aBuf(nCount);
string::padToLength(aBuf, nCount, ' ');
rPar.Get(0)->PutString(aBuf.makeStringAndClear());
}
}
void SbRtl_Sqr(StarBASIC *, SbxArray & rPar, bool)
{
if (rPar.Count() < 2)
{
StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
return StarBASIC::Error(ERRCODE_BASIC_BAD_ARGUMENT);
}
else
{
double aDouble = rPar.Get(1)->GetDouble();
if ( aDouble >= 0 )
if ( aDouble < 0 )
{
return StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
}
rPar.Get(0)->PutDouble(sqrt(aDouble));
}
else
{
StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
}
}
}
void SbRtl_Str(StarBASIC *, SbxArray & rPar, bool)
{
if (rPar.Count() < 2)
{
StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
return StarBASIC::Error(ERRCODE_BASIC_BAD_ARGUMENT);
}
else
{
OUString aStr;
OUString aStrNew(u""_ustr);
SbxVariableRef pArg = rPar.Get(1);
@@ -1402,7 +1387,6 @@ void SbRtl_Str(StarBASIC *, SbxArray & rPar, bool)
aStrNew = aStr;
}
rPar.Get(0)->PutString(aStrNew);
}
}
void SbRtl_StrComp(StarBASIC *, SbxArray & rPar, bool)
@@ -1474,10 +1458,9 @@ void SbRtl_String(StarBASIC *, SbxArray & rPar, bool)
{
if (rPar.Count() < 2)
{
StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
return StarBASIC::Error(ERRCODE_BASIC_BAD_ARGUMENT);
}
else
{
sal_Unicode aFiller;
sal_Int32 lCount = rPar.Get(1)->GetLong();
if( lCount < 0 || lCount > 0xffff )
@@ -1496,48 +1479,43 @@ void SbRtl_String(StarBASIC *, SbxArray & rPar, bool)
OUStringBuffer aBuf(lCount);
string::padToLength(aBuf, lCount, aFiller);
rPar.Get(0)->PutString(aBuf.makeStringAndClear());
}
}
void SbRtl_Tab(StarBASIC *, SbxArray & rPar, bool)
{
if (rPar.Count() < 2)
StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
else
{
return StarBASIC::Error(ERRCODE_BASIC_BAD_ARGUMENT);
}
const sal_Int32 nCount = std::max(rPar.Get(1)->GetLong(), sal_Int32(0));
OUStringBuffer aStr(nCount);
comphelper::string::padToLength(aStr, nCount, '\t');
rPar.Get(0)->PutString(aStr.makeStringAndClear());
}
}
void SbRtl_Tan(StarBASIC *, SbxArray & rPar, bool)
{
if (rPar.Count() < 2)
{
StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
return StarBASIC::Error(ERRCODE_BASIC_BAD_ARGUMENT);
}
else
{
SbxVariableRef pArg = rPar.Get(1);
rPar.Get(0)->PutDouble(tan(pArg->GetDouble()));
}
}
void SbRtl_UCase(StarBASIC *, SbxArray & rPar, bool)
{
if (rPar.Count() < 2)
{
StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
return StarBASIC::Error(ERRCODE_BASIC_BAD_ARGUMENT);
}
else
{
const CharClass& rCharClass = GetCharClass();
OUString aStr(rPar.Get(1)->GetOUString());
aStr = rCharClass.uppercase( aStr );
rPar.Get(0)->PutString(aStr);
}
}
@@ -1545,10 +1523,8 @@ void SbRtl_Val(StarBASIC *, SbxArray & rPar, bool)
{
if (rPar.Count() < 2)
{
StarBASIC::Error( ERRCODE_BASIC_BAD_ARGUMENT );
return StarBASIC::Error(ERRCODE_BASIC_BAD_ARGUMENT);
}
else
{
double nResult = 0.0;
char* pEndPtr;
@@ -1593,7 +1569,6 @@ void SbRtl_Val(StarBASIC *, SbxArray & rPar, bool)
}
rPar.Get(0)->PutDouble(nResult);
}
}