summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-09-12 16:23:16 +0100
committerCaolán McNamara <caolanm@redhat.com>2020-09-13 15:14:59 +0200
commita881a800255269fd607dfc144f9207932e5074fc (patch)
treee4806be6f3c19bafea175a1448bff24b1f80cc19
parent6cf2d7e9b5ea749fe4770a4cf7d12d86a4791978 (diff)
establish ScValueIterator::pDoc is never null
Change-Id: Ie9b60da4993bc1255dab4784f876e4fae0a45bbf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102524 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--sc/inc/dociter.hxx4
-rw-r--r--sc/qa/unit/ucalc.cxx2
-rw-r--r--sc/source/core/data/dociter.cxx36
-rw-r--r--sc/source/core/tool/interpr1.cxx14
-rw-r--r--sc/source/core/tool/interpr2.cxx4
-rw-r--r--sc/source/core/tool/interpr3.cxx16
-rw-r--r--sc/source/core/tool/interpr5.cxx4
-rw-r--r--sc/source/core/tool/interpr6.cxx2
8 files changed, 41 insertions, 41 deletions
diff --git a/sc/inc/dociter.hxx b/sc/inc/dociter.hxx
index f1092b1c1906..7727a67faa5a 100644
--- a/sc/inc/dociter.hxx
+++ b/sc/inc/dociter.hxx
@@ -53,7 +53,7 @@ class ScValueIterator // walk through all values in an area
{
typedef sc::CellStoreType::const_position_type PositionType;
- ScDocument* pDoc;
+ ScDocument& mrDoc;
ScInterpreterContext* pContext;
const ScAttrArray* pAttrArray;
sal_uInt32 nNumFormat; // for CalcAsShown
@@ -85,7 +85,7 @@ class ScValueIterator // walk through all values in an area
public:
ScValueIterator(
- ScDocument* pDocument, const ScRange& rRange, SubtotalFlags nSubTotalFlags = SubtotalFlags::NONE,
+ ScDocument& rDocument, const ScRange& rRange, SubtotalFlags nSubTotalFlags = SubtotalFlags::NONE,
bool bTextAsZero = false );
void GetCurNumFmtInfo( const ScInterpreterContext& rContext, SvNumFormatType& nType, sal_uInt32& nIndex );
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index f29d1ab33f54..b084cb78350c 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -1093,7 +1093,7 @@ void Test::testValueIterator()
{
const double aChecks[] = { 1.0, 2.0, 3.0 };
size_t const nCheckLen = SAL_N_ELEMENTS(aChecks);
- ScValueIterator aIter(m_pDoc, ScRange(1,2,0,3,2,0));
+ ScValueIterator aIter(*m_pDoc, ScRange(1,2,0,3,2,0));
bool bHas = false;
size_t nCheckPos = 0;
double fVal;
diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx
index 0fbbdadd4e18..7b5b6f9d83f4 100644
--- a/sc/source/core/data/dociter.cxx
+++ b/sc/source/core/data/dociter.cxx
@@ -97,9 +97,9 @@ static void ScAttrArray_IterGetNumberFormat( sal_uInt32& nFormat, const ScAttrAr
nAttrEndRow = nRowEnd;
}
-ScValueIterator::ScValueIterator( ScDocument* pDocument, const ScRange& rRange,
+ScValueIterator::ScValueIterator( ScDocument& rDocument, const ScRange& rRange,
SubtotalFlags nSubTotalFlags, bool bTextZero )
- : pDoc(pDocument)
+ : mrDoc(rDocument)
, pContext(nullptr)
, pAttrArray(nullptr)
, nNumFormat(0) // Initialized in GetNumberFormat
@@ -112,16 +112,16 @@ ScValueIterator::ScValueIterator( ScDocument* pDocument, const ScRange& rRange,
, mnSubTotalFlags(nSubTotalFlags)
, nNumFmtType(SvNumFormatType::UNDEFINED)
, bNumValid(false)
- , bCalcAsShown(pDocument->GetDocOptions().IsCalcAsShown())
+ , bCalcAsShown(rDocument.GetDocOptions().IsCalcAsShown())
, bTextAsZero(bTextZero)
, mpCells(nullptr)
{
- SCTAB nDocMaxTab = pDocument->GetTableCount() - 1;
+ SCTAB nDocMaxTab = rDocument.GetTableCount() - 1;
- if (!pDocument->ValidCol(maStartPos.Col())) maStartPos.SetCol(pDoc->MaxCol());
- if (!pDocument->ValidCol(maEndPos.Col())) maEndPos.SetCol(pDoc->MaxCol());
- if (!pDocument->ValidRow(maStartPos.Row())) maStartPos.SetRow(pDoc->MaxRow());
- if (!pDocument->ValidRow(maEndPos.Row())) maEndPos.SetRow(pDoc->MaxRow());
+ if (!rDocument.ValidCol(maStartPos.Col())) maStartPos.SetCol(mrDoc.MaxCol());
+ if (!rDocument.ValidCol(maEndPos.Col())) maEndPos.SetCol(mrDoc.MaxCol());
+ if (!rDocument.ValidRow(maStartPos.Row())) maStartPos.SetRow(mrDoc.MaxRow());
+ if (!rDocument.ValidRow(maEndPos.Row())) maEndPos.SetRow(mrDoc.MaxRow());
if (!ValidTab(maStartPos.Tab()) || maStartPos.Tab() > nDocMaxTab) maStartPos.SetTab(nDocMaxTab);
if (!ValidTab(maEndPos.Tab()) || maEndPos.Tab() > nDocMaxTab) maEndPos.SetTab(nDocMaxTab);
}
@@ -162,14 +162,14 @@ bool ScValueIterator::GetThis(double& rValue, FormulaError& rErr)
ScColumn* pCol;
if (!bNextColumn)
- pCol = &(pDoc->maTabs[mnTab])->aCol[mnCol];
+ pCol = &(mrDoc.maTabs[mnTab])->aCol[mnCol];
else
{
// Find the next available column.
do
{
++mnCol;
- if (mnCol > maEndPos.Col() || mnCol >= pDoc->maTabs[mnTab]->GetAllocatedColumnsCount())
+ if (mnCol > maEndPos.Col() || mnCol >= mrDoc.maTabs[mnTab]->GetAllocatedColumnsCount())
{
mnCol = maStartPos.Col();
++mnTab;
@@ -179,7 +179,7 @@ bool ScValueIterator::GetThis(double& rValue, FormulaError& rErr)
return false; // Over and out
}
}
- pCol = &(pDoc->maTabs[mnTab])->aCol[mnCol];
+ pCol = &(mrDoc.maTabs[mnTab])->aCol[mnCol];
}
while (pCol->IsEmptyData());
@@ -191,9 +191,9 @@ bool ScValueIterator::GetThis(double& rValue, FormulaError& rErr)
SCROW nLastRow;
// Skip all filtered or hidden rows, depending on mnSubTotalFlags
if ( ( ( mnSubTotalFlags & SubtotalFlags::IgnoreFiltered ) &&
- pDoc->RowFiltered( nCurRow, mnTab, nullptr, &nLastRow ) ) ||
+ mrDoc.RowFiltered( nCurRow, mnTab, nullptr, &nLastRow ) ) ||
( ( mnSubTotalFlags & SubtotalFlags::IgnoreHidden ) &&
- pDoc->RowHidden( nCurRow, mnTab, nullptr, &nLastRow ) ) )
+ mrDoc.RowHidden( nCurRow, mnTab, nullptr, &nLastRow ) ) )
{
maCurPos = mpCells->position(maCurPos.first, nLastRow+1);
continue;
@@ -209,8 +209,8 @@ bool ScValueIterator::GetThis(double& rValue, FormulaError& rErr)
if (bCalcAsShown)
{
ScAttrArray_IterGetNumberFormat(nNumFormat, pAttrArray,
- nAttrEndRow, pCol->pAttrArray.get(), nCurRow, pDoc, pContext);
- rValue = pDoc->RoundValueAsShown(rValue, nNumFormat, pContext);
+ nAttrEndRow, pCol->pAttrArray.get(), nCurRow, &mrDoc, pContext);
+ rValue = mrDoc.RoundValueAsShown(rValue, nNumFormat, pContext);
}
return true; // Found it!
}
@@ -269,10 +269,10 @@ bool ScValueIterator::GetThis(double& rValue, FormulaError& rErr)
void ScValueIterator::GetCurNumFmtInfo( const ScInterpreterContext& rContext, SvNumFormatType& nType, sal_uInt32& nIndex )
{
- if (!bNumValid && mnTab < pDoc->GetTableCount())
+ if (!bNumValid && mnTab < mrDoc.GetTableCount())
{
SCROW nCurRow = GetRow();
- const ScColumn* pCol = &(pDoc->maTabs[mnTab])->aCol[mnCol];
+ const ScColumn* pCol = &(mrDoc.maTabs[mnTab])->aCol[mnCol];
nNumFmtIndex = pCol->GetNumberFormat(rContext, nCurRow);
nNumFmtType = rContext.GetNumberFormatType( nNumFmtIndex );
bNumValid = true;
@@ -287,7 +287,7 @@ bool ScValueIterator::GetFirst(double& rValue, FormulaError& rErr)
mnCol = maStartPos.Col();
mnTab = maStartPos.Tab();
- ScTable* pTab = pDoc->FetchTable(mnTab);
+ ScTable* pTab = mrDoc.FetchTable(mnTab);
if (!pTab)
return false;
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index b66d84ae41e2..575ee9bd162c 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -1314,7 +1314,7 @@ void ScInterpreter::ScAnd()
{
double fVal;
FormulaError nErr = FormulaError::NONE;
- ScValueIterator aValIter( &mrDoc, aRange );
+ ScValueIterator aValIter( mrDoc, aRange );
if ( aValIter.GetFirst( fVal, nErr ) && nErr == FormulaError::NONE )
{
bHaveValue = true;
@@ -1412,7 +1412,7 @@ void ScInterpreter::ScOr()
{
double fVal;
FormulaError nErr = FormulaError::NONE;
- ScValueIterator aValIter( &mrDoc, aRange );
+ ScValueIterator aValIter( mrDoc, aRange );
if ( aValIter.GetFirst( fVal, nErr ) )
{
bHaveValue = true;
@@ -1514,7 +1514,7 @@ void ScInterpreter::ScXor()
{
double fVal;
FormulaError nErr = FormulaError::NONE;
- ScValueIterator aValIter( &mrDoc, aRange );
+ ScValueIterator aValIter( mrDoc, aRange );
if ( aValIter.GetFirst( fVal, nErr ) )
{
bHaveValue = true;
@@ -3668,7 +3668,7 @@ void ScInterpreter::ScMin( bool bTextAsZero )
{
FormulaError nErr = FormulaError::NONE;
PopDoubleRef( aRange, nParamCount, nRefInList);
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags, bTextAsZero );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags, bTextAsZero );
aValIter.SetInterpreterContext( &mrContext );
if (aValIter.GetFirst(nVal, nErr))
{
@@ -3826,7 +3826,7 @@ void ScInterpreter::ScMax( bool bTextAsZero )
{
FormulaError nErr = FormulaError::NONE;
PopDoubleRef( aRange, nParamCount, nRefInList);
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags, bTextAsZero );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags, bTextAsZero );
aValIter.SetInterpreterContext( &mrContext );
if (aValIter.GetFirst(nVal, nErr))
{
@@ -4002,7 +4002,7 @@ void ScInterpreter::GetStVarParams( bool bTextAsZero, double(*VarResult)( double
ArrayRefListValue& rArrayValue = vArrayValues[nRefArrayPos];
FormulaError nErr = FormulaError::NONE;
PopDoubleRef( aRange, nParamCount, nRefInList);
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags, bTextAsZero );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags, bTextAsZero );
if (aValIter.GetFirst(fVal, nErr))
{
do
@@ -4027,7 +4027,7 @@ void ScInterpreter::GetStVarParams( bool bTextAsZero, double(*VarResult)( double
{
FormulaError nErr = FormulaError::NONE;
PopDoubleRef( aRange, nParamCount, nRefInList);
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags, bTextAsZero );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags, bTextAsZero );
if (aValIter.GetFirst(fVal, nErr))
{
do
diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx
index 083601458a5d..61d730798cf3 100644
--- a/sc/source/core/tool/interpr2.cxx
+++ b/sc/source/core/tool/interpr2.cxx
@@ -1446,7 +1446,7 @@ void ScInterpreter::ScIRR()
double fDenom = 0.0;
FormulaError nErr = FormulaError::NONE;
PopDoubleRef( aRange );
- ScValueIterator aValIter(&mrDoc, aRange, mnSubTotalFlags);
+ ScValueIterator aValIter(mrDoc, aRange, mnSubTotalFlags);
if (aValIter.GetFirst(fValue, nErr))
{
double fCount = 0.0;
@@ -1557,7 +1557,7 @@ void ScInterpreter::ScMIRR()
}
else
{
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags );
double fCellValue;
FormulaError nIterError = FormulaError::NONE;
diff --git a/sc/source/core/tool/interpr3.cxx b/sc/source/core/tool/interpr3.cxx
index ad850a8ca105..4b8f55b9e6fd 100644
--- a/sc/source/core/tool/interpr3.cxx
+++ b/sc/source/core/tool/interpr3.cxx
@@ -2510,7 +2510,7 @@ void ScInterpreter::ScZTest()
ScRange aRange;
FormulaError nErr = FormulaError::NONE;
PopDoubleRef( aRange, nParam, nRefInList);
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags );
if (aValIter.GetFirst(fVal, nErr))
{
fSum += fVal;
@@ -2962,7 +2962,7 @@ void ScInterpreter::ScHarMean()
FormulaError nErr = FormulaError::NONE;
PopDoubleRef( aRange, nParamCount, nRefInList);
double nCellVal;
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags );
if (aValIter.GetFirst(nCellVal, nErr))
{
if (nCellVal > 0.0)
@@ -3100,7 +3100,7 @@ void ScInterpreter::ScGeoMean()
FormulaError nErr = FormulaError::NONE;
PopDoubleRef( aRange, nParamCount, nRefInList);
double nCellVal;
- ScValueIterator aValIter(&mrDoc, aRange, mnSubTotalFlags);
+ ScValueIterator aValIter(mrDoc, aRange, mnSubTotalFlags);
if (aValIter.GetFirst(nCellVal, nErr))
{
if (nCellVal > 0.0)
@@ -3266,7 +3266,7 @@ bool ScInterpreter::CalculateSkew(double& fSum,double& fCount,double& vSum,std::
{
PopDoubleRef( aRange, nParamCount, nRefInList);
FormulaError nErr = FormulaError::NONE;
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags );
if (aValIter.GetFirst(fVal, nErr))
{
fSum += fVal;
@@ -3901,7 +3901,7 @@ std::vector<double> ScInterpreter::GetTopNumberArray( SCSIZE& rCol, SCSIZE& rRow
FormulaError nErr = FormulaError::NONE;
double fCellVal;
- ScValueIterator aValIter(&mrDoc, aRange, mnSubTotalFlags);
+ ScValueIterator aValIter(mrDoc, aRange, mnSubTotalFlags);
if (aValIter.GetFirst(fCellVal, nErr))
{
do
@@ -3982,7 +3982,7 @@ void ScInterpreter::GetNumberSequenceArray( sal_uInt8 nParamCount, vector<double
FormulaError nErr = FormulaError::NONE;
double fCellVal;
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags );
if (aValIter.GetFirst( fCellVal, nErr))
{
if (bIgnoreErrVal)
@@ -4320,7 +4320,7 @@ void ScInterpreter::ScAveDev()
FormulaError nErr = FormulaError::NONE;
double nCellVal;
PopDoubleRef( aRange, nParam, nRefInList);
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags );
if (aValIter.GetFirst(nCellVal, nErr))
{
rVal += nCellVal;
@@ -4399,7 +4399,7 @@ void ScInterpreter::ScAveDev()
FormulaError nErr = FormulaError::NONE;
double nCellVal;
PopDoubleRef( aRange, nParam, nRefInList);
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags );
if (aValIter.GetFirst(nCellVal, nErr))
{
rVal += (fabs(nCellVal - nMiddle));
diff --git a/sc/source/core/tool/interpr5.cxx b/sc/source/core/tool/interpr5.cxx
index d8ef23913f66..098d987aec2a 100644
--- a/sc/source/core/tool/interpr5.cxx
+++ b/sc/source/core/tool/interpr5.cxx
@@ -159,7 +159,7 @@ void ScInterpreter::ScGCD()
FormulaError nErr = FormulaError::NONE;
PopDoubleRef( aRange, nParamCount, nRefInList);
double nCellVal;
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags );
if (aValIter.GetFirst(nCellVal, nErr))
{
do
@@ -236,7 +236,7 @@ void ScInterpreter:: ScLCM()
FormulaError nErr = FormulaError::NONE;
PopDoubleRef( aRange, nParamCount, nRefInList);
double nCellVal;
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags );
if (aValIter.GetFirst(nCellVal, nErr))
{
do
diff --git a/sc/source/core/tool/interpr6.cxx b/sc/source/core/tool/interpr6.cxx
index 263b67b22e5f..5fb8e3bd1124 100644
--- a/sc/source/core/tool/interpr6.cxx
+++ b/sc/source/core/tool/interpr6.cxx
@@ -859,7 +859,7 @@ void ScInterpreter::IterateParameters( ScIterFunc eFunc, bool bTextAsZero )
}
else
{
- ScValueIterator aValIter( &mrDoc, aRange, mnSubTotalFlags, bTextAsZero );
+ ScValueIterator aValIter( mrDoc, aRange, mnSubTotalFlags, bTextAsZero );
aValIter.SetInterpreterContext( &mrContext );
FormulaError nErr = FormulaError::NONE;
if (aValIter.GetFirst(fVal, nErr))