tdf#100244,126710:sc:Use GetMember() in most places

Use GetMember() for most cases rather than directly
accessing the member array, since soon we'll have
two member arrays.

Change-Id: I76eca012af6743b29de1e53e96a2ff46187f8a8a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209097
Tested-by: Jenkins
Reviewed-by: David Gilbert <freedesktop@treblig.org>
This commit is contained in:
Dr. David Alan Gilbert
2026-08-21 14:27:21 +02:00
committed by David Gilbert
parent a25675d5ed
commit 91cbdc057d
2 changed files with 30 additions and 29 deletions
+3 -3
View File
@@ -439,7 +439,7 @@ public:
virtual ScDPAggData* GetColTotal(tools::Long nMeasure) = 0;
void FillVisibilityData(ScDPResultVisibilityData& rData) const;
void FillVisibilityData(ScDPResultVisibilityData& rData);
};
class ScDPResultMemberSlim : public ScDPResultMember
@@ -885,9 +885,9 @@ public:
tools::Long GetAutoMeasure() const { return nAutoMeasure; }
tools::Long GetAutoCount() const { return nAutoCount; }
ScDPResultDimension* GetFirstChildDimension() const;
ScDPResultDimension* GetFirstChildDimension();
void FillVisibilityData(ScDPResultVisibilityData& rData) const;
void FillVisibilityData(ScDPResultVisibilityData& rData);
// Called by an ScDPResultMemberSlim which has already been promoted
// but something with an older pointer calls one of its member functions
+27 -26
View File
@@ -1974,7 +1974,7 @@ ScDPAggData* ScDPResultMemberFull::GetColTotal(tools::Long nMeasure)
return lcl_GetChildTotal(pColTotal.get(), nMeasure);
}
void ScDPResultMember::FillVisibilityData(ScDPResultVisibilityData& rData) const
void ScDPResultMember::FillVisibilityData(ScDPResultVisibilityData& rData)
{
if (GetChildDimension())
GetChildDimension()->FillVisibilityData(rData);
@@ -3257,13 +3257,13 @@ tools::Long ScDPResultDimension::GetSize(tools::Long nMeasure) const
OSL_ENSURE(nMeasure == SC_DPMEASURE_ALL || pResultData->GetMeasureCount() == 1,
"DataLayout dimension twice?");
// repeat first member...
nTotal = nMemberCount * maMemberArray[0]->GetSize(0); // all measures have equal size
nTotal = nMemberCount * GetMember(0)->GetSize(0); // all measures have equal size
}
else
{
// add all members
for (tools::Long nMem=0; nMem<nMemberCount; nMem++)
nTotal += maMemberArray[nMem]->GetSize(nMeasure);
nTotal += GetMember(nMem)->GetSize(nMeasure);
}
return nTotal;
}
@@ -3316,14 +3316,14 @@ void ScDPResultDimension::FillMemberResults( uno::Sequence<sheet::MemberResult>*
{
tools::Long nSorted = aMemberOrder.empty() ? i : aMemberOrder[i];
ScDPResultMember* pMember = maMemberArray[nSorted].get();
ScDPResultMember* pMember = GetMember(nSorted);
// in data layout dimension, use first member with different measures/names
if ( bIsDataLayout )
{
bool bTotalResult = false;
OUString aMbrName = pResultData->GetMeasureDimensionName( nSorted );
OUString aMbrCapt = pResultData->GetMeasureString( nSorted, false, SUBTOTAL_FUNC_NONE, bTotalResult );
maMemberArray[0]->FillMemberResults( pSequences, nPos, nSorted, false, &aMbrName, &aMbrCapt );
GetMember(0)->FillMemberResults(pSequences, nPos, nSorted, false, &aMbrName, &aMbrCapt);
}
else if ( pMember->IsVisible() )
{
@@ -3351,11 +3351,11 @@ void ScDPResultDimension::FillDataResults(
{
OSL_ENSURE(nMeasure == SC_DPMEASURE_ALL || pResultData->GetMeasureCount() == 1,
"DataLayout dimension twice?");
pMember = maMemberArray[0].get();
pMember = GetMember(0);
nMemberMeasure = nSorted;
}
else
pMember = maMemberArray[nSorted].get();
pMember = GetMember(nSorted);
if ( pMember->IsVisible() )
pMember->FillDataResults(pRefMember, rFilterCxt, rSequence, nMemberMeasure);
@@ -3374,11 +3374,11 @@ void ScDPResultDimension::UpdateDataResults(const ScDPResultMember* pRefMember,
{
OSL_ENSURE(nMeasure == SC_DPMEASURE_ALL || pResultData->GetMeasureCount() == 1,
"DataLayout dimension twice?");
pMember = maMemberArray[0].get();
pMember = GetMember(0);
nMemberMeasure = i;
}
else
pMember = maMemberArray[i].get();
pMember = GetMember(i);
if ( pMember->IsVisible() )
pMember->UpdateDataResults( pRefMember, nMemberMeasure );
@@ -3408,7 +3408,7 @@ void ScDPResultDimension::SortMembers(ScDPResultMember* pRefMember)
tools::Long nLoopCount = bIsDataLayout ? std::min<tools::Long>(1, nCount) : nCount;
for (tools::Long i=0; i<nLoopCount; i++)
{
ScDPResultMember* pMember = maMemberArray[i].get();
ScDPResultMember* pMember = GetMember(i);
if ( pMember->IsVisible() )
pMember->SortMembers( pRefMember );
}
@@ -3424,7 +3424,7 @@ void ScDPResultDimension::DoAutoShow(ScDPResultMember* pRefMember)
tools::Long nLoopCount = bIsDataLayout ? 1 : nCount;
for (tools::Long i=0; i<nLoopCount; i++)
{
ScDPResultMember* pMember = maMemberArray[i].get();
ScDPResultMember* pMember = GetMember(i);
if ( pMember->IsVisible() )
pMember->DoAutoShow( pRefMember );
}
@@ -3446,7 +3446,7 @@ void ScDPResultDimension::DoAutoShow(ScDPResultMember* pRefMember)
// look for equal values to the last included one
tools::Long nIncluded = nAutoCount;
const ScDPResultMember* pMember1 = maMemberArray[aAutoOrder[nIncluded - 1]].get();
const ScDPResultMember* pMember1 = GetMember(aAutoOrder[nIncluded - 1]);
const ScDPDataMember* pDataMember1 = pMember1->IsVisible() ? pMember1->GetDataRoot() : nullptr;
bool bContinue = true;
while ( bContinue )
@@ -3454,7 +3454,7 @@ void ScDPResultDimension::DoAutoShow(ScDPResultMember* pRefMember)
bContinue = false;
if ( nIncluded < nCount )
{
const ScDPResultMember* pMember2 = maMemberArray[aAutoOrder[nIncluded]].get();
const ScDPResultMember* pMember2 = GetMember(aAutoOrder[nIncluded]);
const ScDPDataMember* pDataMember2 = pMember2->IsVisible() ? pMember2->GetDataRoot() : nullptr;
if ( lcl_IsEqual( pDataMember1, pDataMember2, nAutoMeasure ) )
@@ -3469,7 +3469,7 @@ void ScDPResultDimension::DoAutoShow(ScDPResultMember* pRefMember)
for (nPos = nIncluded; nPos < nCount; nPos++)
{
ScDPResultMember* pMember = maMemberArray[aAutoOrder[nPos]].get();
ScDPResultMember* pMember = GetMember(aAutoOrder[nPos]);
pMember->SetAutoHidden();
}
}
@@ -3480,7 +3480,7 @@ void ScDPResultDimension::ResetResults()
for (tools::Long i=0; i<nCount; i++)
{
// sort order doesn't matter
ScDPResultMember* pMember = maMemberArray[bIsDataLayout ? 0 : i].get();
ScDPResultMember* pMember = GetMember(bIsDataLayout ? 0 : i);
pMember->ResetResults();
}
}
@@ -3505,11 +3505,11 @@ void ScDPResultDimension::UpdateRunningTotals(ScDPResultMember* pRefMember, tool
{
OSL_ENSURE(nMeasure == SC_DPMEASURE_ALL || pResultData->GetMeasureCount() == 1,
"DataLayout dimension twice?");
pMember = maMemberArray[0].get();
pMember = GetMember(0);
nMemberMeasure = nSorted;
}
else
pMember = maMemberArray[nSorted].get();
pMember = GetMember(nSorted);
if ( pMember->IsVisible() )
{
@@ -3548,14 +3548,14 @@ ScDPDataMember* ScDPResultDimension::GetRowReferenceMember(
{
// search for named member
const ScDPResultMember* pRowMember = maMemberArray[GetSortedIndex(nMemberIndex)].get();
const ScDPResultMember* pRowMember = GetMember(GetSortedIndex(nMemberIndex));
//TODO: use ScDPItemData, as in ScDPDimension::IsValidPage?
while ( pRowMember && pRowMember->GetName() != *pName )
{
++nMemberIndex;
if ( nMemberIndex < nMemberCount )
pRowMember = maMemberArray[GetSortedIndex(nMemberIndex)].get();
pRowMember = GetMember(GetSortedIndex(nMemberIndex));
else
pRowMember = nullptr;
}
@@ -3564,7 +3564,7 @@ ScDPDataMember* ScDPResultDimension::GetRowReferenceMember(
bool bContinue = true;
while ( bContinue && nMemberIndex >= 0 && nMemberIndex < nMemberCount )
{
const ScDPResultMember* pRowMember = maMemberArray[GetSortedIndex(nMemberIndex)].get();
const ScDPResultMember* pRowMember = GetMember(GetSortedIndex(nMemberIndex));
// get child members by given indexes
@@ -3778,22 +3778,23 @@ ScDPResultMember* ScDPResultDimension::GetMember(tools::Long n)
return maMemberArray[n].get();
}
ScDPResultDimension* ScDPResultDimension::GetFirstChildDimension() const
ScDPResultDimension* ScDPResultDimension::GetFirstChildDimension()
{
if (GetMemberCount())
return maMemberArray[0]->GetChildDimension();
return GetMember(0)->GetChildDimension();
else
return nullptr;
}
void ScDPResultDimension::FillVisibilityData(ScDPResultVisibilityData& rData) const
void ScDPResultDimension::FillVisibilityData(ScDPResultVisibilityData& rData)
{
if (IsDataLayout())
return;
for (const auto& rxMember : maMemberArray)
tools::Long nCount = GetMemberCount();
for (tools::Long i = 0; i < nCount; i++)
{
ScDPResultMember* pMember = rxMember.get();
ScDPResultMember* pMember = GetMember(i);
if (pMember->IsValid())
{
ScDPItemData aItem(pMember->FillItemData());
@@ -4400,7 +4401,7 @@ void ScDPResultDimension::CheckShowEmpty( bool bShow )
for (tools::Long i=0; i<nCount; i++)
{
ScDPResultMember* pMember = maMemberArray.at(i).get();
ScDPResultMember* pMember = GetMember(i);
pMember->CheckShowEmpty(bShow);
}