sc/source/core/inc/interpre.hxx | 3 sc/source/core/tool/interpr1.cxx | 185 +++++++++++++++++++++------------------ sc/source/core/tool/interpr2.cxx | 7 - sc/source/core/tool/interpr3.cxx | 56 ++++++----- sc/source/core/tool/interpr4.cxx | 15 --- sc/source/core/tool/interpr5.cxx | 24 ++--- 6 files changed, 152 insertions(+), 138 deletions(-)
New commits: commit 35506095fcb7ac68dc3e18e8409ddb625d8f86ed Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Thu Mar 28 10:42:10 2013 -0400 Remove HasCellValueData() and adjusted all its call sites. Change-Id: Idd651a0f970607d5f5434128e5270af10336048c diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx index 8a3fc77..4cac100 100644 --- a/sc/source/core/inc/interpre.hxx +++ b/sc/source/core/inc/interpre.hxx @@ -196,7 +196,6 @@ ScBaseCell* GetCell( const ScAddress& rPos ); void GetCellString( String& rStr, const ScBaseCell* pCell ); void GetCellString( OUString& rStr, ScRefCellValue& rCell ); sal_uInt16 GetCellErrCode( const ScRefCellValue& rCell ); -bool HasCellValueData( const ScBaseCell* pCell ); bool CreateDoubleArr(SCCOL nCol1, SCROW nRow1, SCTAB nTab1, SCCOL nCol2, SCROW nRow2, SCTAB nTab2, sal_uInt8* pCellArr); diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index fcdf226..53ebdf2 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -1415,11 +1415,12 @@ void ScInterpreter::ScAnd() PopSingleRef( aAdr ); if ( !nGlobalError ) { - ScBaseCell* pCell = GetCell( aAdr ); - if ( HasCellValueData( pCell ) ) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { bHaveValue = true; - nRes &= ( GetCellValue( aAdr, pCell ) != 0.0 ); + nRes &= ( GetCellValue(aAdr, aCell) != 0.0 ); } // else: Xcl raises no error here } @@ -1515,11 +1516,12 @@ void ScInterpreter::ScOr() PopSingleRef( aAdr ); if ( !nGlobalError ) { - ScBaseCell* pCell = GetCell( aAdr ); - if ( HasCellValueData( pCell ) ) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { bHaveValue = true; - nRes |= ( GetCellValue( aAdr, pCell ) != 0.0 ); + nRes |= ( GetCellValue(aAdr, aCell) != 0.0 ); } // else: Xcl raises no error here } @@ -1617,11 +1619,12 @@ void ScInterpreter::ScXor() PopSingleRef( aAdr ); if ( !nGlobalError ) { - ScBaseCell* pCell = GetCell( aAdr ); - if ( HasCellValueData( pCell ) ) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { bHaveValue = true; - nRes ^= ( GetCellValue( aAdr, pCell ) != 0.0 ); + nRes ^= ( GetCellValue(aAdr, aCell) != 0.0 ); } /* TODO: set error? Excel doesn't have XOR, but * doesn't set an error in this case for AND and @@ -5110,7 +5113,7 @@ void ScInterpreter::ScMatch() if (nGlobalError == 0) { double fVal; - String sStr; + OUString sStr; ScQueryParam rParam; rParam.nCol1 = nCol1; rParam.nRow1 = nRow1; @@ -5149,16 +5152,17 @@ void ScInterpreter::ScMatch() PushInt(0); return ; } - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { - fVal = GetCellValue( aAdr, pCell ); + fVal = GetCellValue(aAdr, aCell); rItem.meType = ScQueryEntry::ByValue; rItem.mfVal = fVal; } else { - GetCellString(sStr, pCell); + GetCellString(sStr, aCell); rItem.meType = ScQueryEntry::ByString; rItem.maString = sStr; } @@ -5741,10 +5745,11 @@ double ScInterpreter::IterateParametersIf( ScIterFuncIf eFunc ) { aAdr.SetCol( nCol + nColDiff); aAdr.SetRow( nRow + nRowDiff); - ScBaseCell* pCell = GetCell( aAdr ); - if ( HasCellValueData(pCell) ) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { - fVal = GetCellValue( aAdr, pCell ); + fVal = GetCellValue(aAdr, aCell); ++fCount; if ( bNull && fVal != 0.0 ) { @@ -5792,10 +5797,11 @@ double ScInterpreter::IterateParametersIf( ScIterFuncIf eFunc ) { aAdr.SetCol( aCellIter.GetCol() + nColDiff); aAdr.SetRow( aCellIter.GetRow() + nRowDiff); - ScBaseCell* pCell = GetCell( aAdr ); - if ( HasCellValueData(pCell) ) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { - fVal = GetCellValue( aAdr, pCell ); + fVal = GetCellValue(aAdr, aCell); ++fCount; if ( bNull && fVal != 0.0 ) { @@ -6397,10 +6403,11 @@ double ScInterpreter::IterateParametersIfs( ScIterFuncIfs eFunc ) { aAdr.SetCol( static_cast<SCCOL>(nCol) + nMainCol1); aAdr.SetRow( static_cast<SCROW>(nRow) + nMainRow1); - ScBaseCell* pCell = GetCell( aAdr ); - if ( HasCellValueData(pCell) ) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { - fVal = GetCellValue( aAdr, pCell ); + fVal = GetCellValue(aAdr, aCell); ++fCount; if ( bNull && fVal != 0.0 ) { @@ -7399,7 +7406,7 @@ ScDBQueryParamBase* ScInterpreter::GetDBParams( bool& rMissingField ) bool bByVal = true; double nVal = 0.0; - String aStr; + OUString aStr; ScRange aMissingRange; bool bRangeFake = false; switch (GetStackType()) @@ -7417,13 +7424,14 @@ ScDBQueryParamBase* ScInterpreter::GetDBParams( bool& rMissingField ) { ScAddress aAdr; PopSingleRef( aAdr ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) - nVal = GetCellValue( aAdr, pCell ); + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) + nVal = GetCellValue(aAdr, aCell); else { bByVal = false; - GetCellString(aStr, pCell); + GetCellString(aStr, aCell); } } break; diff --git a/sc/source/core/tool/interpr3.cxx b/sc/source/core/tool/interpr3.cxx index bb87e61..3fadc45 100644 --- a/sc/source/core/tool/interpr3.cxx +++ b/sc/source/core/tool/interpr3.cxx @@ -2234,10 +2234,11 @@ void ScInterpreter::ScZTest() { ScAddress aAdr; PopSingleRef( aAdr ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { - fVal = GetCellValue( aAdr, pCell ); + fVal = GetCellValue(aAdr, aCell); fSum += fVal; fSumSqr += fVal*fVal; rValCount++; @@ -2665,10 +2666,11 @@ void ScInterpreter::ScHarMean() case svSingleRef : { PopSingleRef( aAdr ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { - double x = GetCellValue( aAdr, pCell ); + double x = GetCellValue(aAdr, aCell); if (x > 0.0) { nVal += 1.0/x; @@ -2788,10 +2790,11 @@ void ScInterpreter::ScGeoMean() case svSingleRef : { PopSingleRef( aAdr ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { - double x = GetCellValue( aAdr, pCell ); + double x = GetCellValue(aAdr, aCell); if (x > 0.0) { nVal += log(x); @@ -2927,10 +2930,11 @@ bool ScInterpreter::CalculateSkew(double& fSum,double& fCount,double& vSum,std:: case svSingleRef : { PopSingleRef( aAdr ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { - fVal = GetCellValue( aAdr, pCell ); + fVal = GetCellValue(aAdr, aCell); fSum += fVal; values.push_back(fVal); fCount++; @@ -3345,9 +3349,10 @@ void ScInterpreter::GetNumberSequenceArray( sal_uInt8 nParamCount, vector<double case svSingleRef : { PopSingleRef( aAdr ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) - rArray.push_back( GetCellValue( aAdr, pCell)); + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) + rArray.push_back(GetCellValue(aAdr, aCell)); } break; case formula::svDoubleRef : @@ -3532,10 +3537,11 @@ void ScInterpreter::ScRank() ScAddress aAdr; PopSingleRef( aAdr ); double fVal = GetDouble(); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { - double x = GetCellValue( aAdr, pCell ); + double x = GetCellValue(aAdr, aCell); if (x == fVal) bValid = true; } @@ -3651,10 +3657,11 @@ void ScInterpreter::ScAveDev() case svSingleRef : { PopSingleRef( aAdr ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { - rVal += GetCellValue( aAdr, pCell ); + rVal += GetCellValue(aAdr, aCell); rValCount++; } } @@ -3733,9 +3740,10 @@ void ScInterpreter::ScAveDev() case svSingleRef : { PopSingleRef( aAdr ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) - rVal += fabs(GetCellValue( aAdr, pCell ) - nMiddle); + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) + rVal += fabs(GetCellValue(aAdr, aCell) - nMiddle); } break; case formula::svDoubleRef : diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index 92d4467..8f9133a 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -193,11 +193,6 @@ sal_uInt16 ScInterpreter::GetCellErrCode( const ScRefCellValue& rCell ) return rCell.meType == CELLTYPE_FORMULA ? rCell.mpFormula->GetErrorCode() : 0; } -bool ScInterpreter::HasCellValueData( const ScBaseCell* pCell ) -{ - return pCell ? pCell->HasValueData() : false; -} - /** Convert string content to numeric value. Converted are only integer numbers including exponent, and ISO 8601 dates diff --git a/sc/source/core/tool/interpr5.cxx b/sc/source/core/tool/interpr5.cxx index 5e0c464..829a1e0 100644 --- a/sc/source/core/tool/interpr5.cxx +++ b/sc/source/core/tool/interpr5.cxx @@ -666,13 +666,14 @@ void ScInterpreter::ScMatValue() { ScAddress aAdr( sal::static_int_cast<SCCOL>( nCol1 + nR ), sal::static_int_cast<SCROW>( nRow1 + nC ), nTab1 ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) - PushDouble(GetCellValue( aAdr, pCell )); + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) + PushDouble(GetCellValue(aAdr, aCell)); else { - String aStr; - GetCellString(aStr, pCell); + OUString aStr; + GetCellString(aStr, aCell); PushString(aStr); } } commit 2f55dd643f813799efd0193f13c080fa734a461b Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Thu Mar 28 10:27:20 2013 -0400 Remove HasCellStringData() and modifiy all its call sites. Change-Id: I2a127b8433bc6f2629ad8d41b532c630a433c59b diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx index 26082b4..8a3fc77 100644 --- a/sc/source/core/inc/interpre.hxx +++ b/sc/source/core/inc/interpre.hxx @@ -197,7 +197,6 @@ void GetCellString( String& rStr, const ScBaseCell* pCell ); void GetCellString( OUString& rStr, ScRefCellValue& rCell ); sal_uInt16 GetCellErrCode( const ScRefCellValue& rCell ); bool HasCellValueData( const ScBaseCell* pCell ); -bool HasCellStringData( const ScBaseCell* pCell ); bool CreateDoubleArr(SCCOL nCol1, SCROW nRow1, SCTAB nTab1, SCCOL nCol2, SCROW nRow2, SCTAB nTab2, sal_uInt8* pCellArr); diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index 4dc426c..fcdf226 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -2449,7 +2449,8 @@ void ScInterpreter::ScCell() PushIllegalParameter(); else { - ScBaseCell* pCell = GetCell( aCellPos ); + ScRefCellValue aCell; + aCell.assign(*pDok, aCellPos); ScCellKeywordTranslator::transKeyword(aInfoType, ScGlobal::GetLocale(), ocCell); @@ -2518,22 +2519,22 @@ void ScInterpreter::ScCell() // *** CELL PROPERTIES *** else if( aInfoType.EqualsAscii( "CONTENTS" ) ) { // contents of the cell, no formatting - if( pCell && pCell->HasStringData() ) + if (aCell.hasString()) { - String aStr; - GetCellString( aStr, pCell ); + OUString aStr; + GetCellString(aStr, aCell); PushString( aStr ); } else - PushDouble( GetCellValue( aCellPos, pCell ) ); + PushDouble(GetCellValue(aCellPos, aCell)); } else if( aInfoType.EqualsAscii( "TYPE" ) ) { // b = blank; l = string (label); v = otherwise (value) sal_Unicode c; - if( HasCellStringData( pCell ) ) + if (aCell.hasString()) c = 'l'; else - c = HasCellValueData( pCell ) ? 'v' : 'b'; + c = aCell.hasNumeric() ? 'v' : 'b'; PushString( OUString(c) ); } else if( aInfoType.EqualsAscii( "WIDTH" ) ) @@ -2556,7 +2557,7 @@ void ScInterpreter::ScCell() else if( aInfoType.EqualsAscii( "PREFIX" ) ) { // ' = left; " = right; ^ = centered sal_Unicode c = 0; - if( HasCellStringData( pCell ) ) + if (aCell.hasString()) { const SvxHorJustifyItem* pJustAttr = (const SvxHorJustifyItem*) pDok->GetAttr( aCellPos.Col(), aCellPos.Row(), aCellPos.Tab(), ATTR_HOR_JUSTIFY ); @@ -3685,14 +3686,15 @@ void ScInterpreter::ScMin( bool bTextAsZero ) case svSingleRef : { PopSingleRef( aAdr ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { - nVal = GetCellValue( aAdr, pCell ); + nVal = GetCellValue(aAdr, aCell); CurFmtToFuncFmt(); if (nMin > nVal) nMin = nVal; } - else if ( bTextAsZero && HasCellStringData( pCell ) ) + else if (bTextAsZero && aCell.hasString()) { if ( nMin > 0.0 ) nMin = 0.0; @@ -3808,14 +3810,15 @@ void ScInterpreter::ScMax( bool bTextAsZero ) case svSingleRef : { PopSingleRef( aAdr ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { - nVal = GetCellValue( aAdr, pCell ); + nVal = GetCellValue(aAdr, aCell); CurFmtToFuncFmt(); if (nMax < nVal) nMax = nVal; } - else if ( bTextAsZero && HasCellStringData( pCell ) ) + else if (bTextAsZero && aCell.hasString()) { if ( nMax < 0.0 ) nMax = 0.0; @@ -4371,15 +4374,16 @@ void ScInterpreter::GetStVarParams( double& rVal, double& rValCount, case svSingleRef : { PopSingleRef( aAdr ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellValueData(pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasNumeric()) { - fVal = GetCellValue( aAdr, pCell ); + fVal = GetCellValue(aAdr, aCell); values.push_back(fVal); fSum += fVal; rValCount++; } - else if ( bTextAsZero && HasCellStringData( pCell ) ) + else if (bTextAsZero && aCell.hasString()) { values.push_back(0.0); rValCount++; diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index 361663c..92d4467 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -198,11 +198,6 @@ bool ScInterpreter::HasCellValueData( const ScBaseCell* pCell ) return pCell ? pCell->HasValueData() : false; } -bool ScInterpreter::HasCellStringData( const ScBaseCell* pCell ) -{ - return pCell ? pCell->HasStringData() : false; -} - /** Convert string content to numeric value. Converted are only integer numbers including exponent, and ISO 8601 dates commit 38ffd5653c38046722ffbfdc06c05158a30518a7 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Thu Mar 28 10:14:46 2013 -0400 Remove HasCellEmptyData() from ScInterpreter. Change-Id: Ide68fed6195adb655539e2d3ea3d16cf0b3363d5 diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx index 6359e82..26082b4 100644 --- a/sc/source/core/inc/interpre.hxx +++ b/sc/source/core/inc/interpre.hxx @@ -196,7 +196,6 @@ ScBaseCell* GetCell( const ScAddress& rPos ); void GetCellString( String& rStr, const ScBaseCell* pCell ); void GetCellString( OUString& rStr, ScRefCellValue& rCell ); sal_uInt16 GetCellErrCode( const ScRefCellValue& rCell ); -bool HasCellEmptyData( const ScBaseCell* pCell ); bool HasCellValueData( const ScBaseCell* pCell ); bool HasCellStringData( const ScBaseCell* pCell ); diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index 3e480e1..4dc426c 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -617,12 +617,13 @@ bool ScInterpreter::JumpMatrix( short nStackLevel ) } else { - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellEmptyData( pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasEmptyValue()) pResMat->PutEmpty( nC, nR ); - else if (HasCellValueData( pCell)) + else if (aCell.hasNumeric()) { - double fVal = GetCellValue( aAdr, pCell); + double fVal = GetCellValue(aAdr, aCell); if ( nGlobalError ) { fVal = CreateDoubleError( @@ -633,8 +634,8 @@ bool ScInterpreter::JumpMatrix( short nStackLevel ) } else { - String aStr; - GetCellString( aStr, pCell ); + OUString aStr; + GetCellString(aStr, aCell); if ( nGlobalError ) { pResMat->PutDouble( CreateDoubleError( @@ -684,12 +685,13 @@ bool ScInterpreter::JumpMatrix( short nStackLevel ) nRow = aRange.aStart.Row(); aAdr.SetCol( static_cast<SCCOL>(nCol) ); aAdr.SetRow( static_cast<SCROW>(nRow) ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellEmptyData( pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasEmptyValue()) pResMat->PutEmpty( nC, nR ); - else if (HasCellValueData( pCell)) + else if (aCell.hasNumeric()) { - double fCellVal = GetCellValue( aAdr, pCell); + double fCellVal = GetCellValue(aAdr, aCell); if ( nGlobalError ) { fCellVal = CreateDoubleError( @@ -700,8 +702,8 @@ bool ScInterpreter::JumpMatrix( short nStackLevel ) } else { - String aStr; - GetCellString( aStr, pCell ); + OUString aStr; + GetCellString(aStr, aCell); if ( nGlobalError ) { pResMat->PutDouble( CreateDoubleError( @@ -1022,18 +1024,21 @@ double ScInterpreter::Compare() ScAddress aAdr; if ( !PopDoubleRefOrSingleRef( aAdr ) ) break; - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellEmptyData( pCell)) - aComp.bEmpty[ i ] = true; - else if (HasCellStringData( pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasEmptyValue()) + aComp.bEmpty[i] = true; + else if (aCell.hasString()) { - GetCellString( *aComp.pVal[ i ], pCell); - aComp.bVal[ i ] = false; + OUString aStr; + GetCellString(aStr, aCell); + *aComp.pVal[i] = aStr; + aComp.bVal[i] = false; } else { - aComp.nVal[ i ] = GetCellValue( aAdr, pCell ); - aComp.bVal[ i ] = true; + aComp.nVal[i] = GetCellValue(aAdr, aCell); + aComp.bVal[i] = true; } } break; @@ -1108,18 +1113,21 @@ ScMatrixRef ScInterpreter::CompareMat( ScCompareOptions* pOptions ) case svSingleRef: { PopSingleRef( aAdr ); - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellEmptyData( pCell)) - aComp.bEmpty[ i ] = true; - else if (HasCellStringData( pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasEmptyValue()) + aComp.bEmpty[i] = true; + else if (aCell.hasString()) { - GetCellString( *aComp.pVal[ i ], pCell); - aComp.bVal[ i ] = false; + OUString aStr; + GetCellString(aStr, aCell); + *aComp.pVal[i] = aStr; + aComp.bVal[i] = false; } else { - aComp.nVal[ i ] = GetCellValue( aAdr, pCell ); - aComp.bVal[ i ] = true; + aComp.nVal[i] = GetCellValue(aAdr, aCell); + aComp.bVal[i] = true; } } break; @@ -6521,7 +6529,7 @@ void ScInterpreter::ScLookup() // For double, string and single reference. double fDataVal = 0.0; - String aDataStr; + OUString aDataStr; ScAddress aDataAdr; bool bValueData = false; @@ -6575,19 +6583,20 @@ void ScInterpreter::ScLookup() case svSingleRef: { PopSingleRef( aDataAdr ); - const ScBaseCell* pDataCell = GetCell( aDataAdr ); - if (HasCellEmptyData( pDataCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aDataAdr); + if (aCell.hasEmptyValue()) { // Empty cells aren't found anywhere, bail out early. SetError( NOTAVAILABLE); } - else if (HasCellValueData( pDataCell)) + else if (aCell.hasNumeric()) { - fDataVal = GetCellValue( aDataAdr, pDataCell ); + fDataVal = GetCellValue(aDataAdr, aCell); bValueData = true; } else - GetCellString( aDataStr, pDataCell ); + GetCellString(aDataStr, aCell); } break; default: diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx index a2b6041..449806f 100644 --- a/sc/source/core/tool/interpr2.cxx +++ b/sc/source/core/tool/interpr2.cxx @@ -793,10 +793,11 @@ void ScInterpreter::ScNPV() { ScAddress aAdr; PopSingleRef( aAdr ); - ScBaseCell* pCell = GetCell( aAdr ); - if (!HasCellEmptyData(pCell) && HasCellValueData(pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (!aCell.hasEmptyValue() && aCell.hasNumeric()) { - double nCellVal = GetCellValue( aAdr, pCell ); + double nCellVal = GetCellValue(aAdr, aCell); nVal += (nCellVal / pow(1.0 + nZins, (double)nCount)); nCount++; } diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index ef39a4a..361663c 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -193,11 +193,6 @@ sal_uInt16 ScInterpreter::GetCellErrCode( const ScRefCellValue& rCell ) return rCell.meType == CELLTYPE_FORMULA ? rCell.mpFormula->GetErrorCode() : 0; } -bool ScInterpreter::HasCellEmptyData( const ScBaseCell* pCell ) -{ - return pCell ? pCell->HasEmptyData() : true; -} - bool ScInterpreter::HasCellValueData( const ScBaseCell* pCell ) { return pCell ? pCell->HasValueData() : false; diff --git a/sc/source/core/tool/interpr5.cxx b/sc/source/core/tool/interpr5.cxx index f574c4a..5e0c464 100644 --- a/sc/source/core/tool/interpr5.cxx +++ b/sc/source/core/tool/interpr5.cxx @@ -521,15 +521,16 @@ ScMatrixRef ScInterpreter::GetMatrix() pMat = GetNewMat(1, 1); if (pMat) { - ScBaseCell* pCell = GetCell( aAdr ); - if (HasCellEmptyData(pCell)) + ScRefCellValue aCell; + aCell.assign(*pDok, aAdr); + if (aCell.hasEmptyValue()) pMat->PutEmpty(0, 0); - else if (HasCellValueData(pCell)) - pMat->PutDouble(GetCellValue(aAdr, pCell), 0); + else if (aCell.hasNumeric()) + pMat->PutDouble(GetCellValue(aAdr, aCell), 0); else { - String aStr; - GetCellString(aStr, pCell); + OUString aStr; + GetCellString(aStr, aCell); pMat->PutString(aStr, 0); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits