summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/source/core/data/dpoutput.cxx38
1 files changed, 22 insertions, 16 deletions
diff --git a/sc/source/core/data/dpoutput.cxx b/sc/source/core/data/dpoutput.cxx
index 54c4a204dedb..558d4bde8d4b 100644
--- a/sc/source/core/data/dpoutput.cxx
+++ b/sc/source/core/data/dpoutput.cxx
@@ -1152,6 +1152,18 @@ long ScDPOutput::GetHeaderRows() const
return pPageFields.size() + ( bDoFilter ? 1 : 0 );
}
+namespace
+{
+ void insertNames(ScDPUniqueStringSet& rNames, const uno::Sequence<sheet::MemberResult>& rMemberResults)
+ {
+ for (const sheet::MemberResult& rMemberResult : rMemberResults)
+ {
+ if (rMemberResult.Flags & sheet::MemberResultFlags::HASMEMBER)
+ rNames.insert(rMemberResult.Name);
+ }
+ }
+}
+
void ScDPOutput::GetMemberResultNames(ScDPUniqueStringSet& rNames, long nDimension)
{
// Return the list of all member names in a dimension's MemberResults.
@@ -1161,26 +1173,20 @@ void ScDPOutput::GetMemberResultNames(ScDPUniqueStringSet& rNames, long nDimensi
auto lFindDimension = [nDimension](const ScDPOutLevelData& rField) { return rField.mnDim == nDimension; };
// look in column fields
- auto it = std::find_if(pColFields.begin(), pColFields.end(), lFindDimension);
- bool bFound = it != pColFields.end();
-
- if (!bFound)
+ auto colit = std::find_if(pColFields.begin(), pColFields.end(), lFindDimension);
+ if (colit != pColFields.end())
{
- // look in row fields
- it = std::find_if(pRowFields.begin(), pRowFields.end(), lFindDimension);
- bFound = it != pRowFields.end();
+ // collect the member names
+ insertNames(rNames, colit->maResult);
+ return;
}
- // collect the member names
-
- if ( bFound )
+ // look in row fields
+ auto rowit = std::find_if(pRowFields.begin(), pRowFields.end(), lFindDimension);
+ if (rowit != pRowFields.end())
{
- const uno::Sequence<sheet::MemberResult> aMemberResults = it->maResult;
- for (const sheet::MemberResult& rMemberResult : aMemberResults)
- {
- if ( rMemberResult.Flags & sheet::MemberResultFlags::HASMEMBER )
- rNames.insert(rMemberResult.Name);
- }
+ // collect the member names
+ insertNames(rNames, rowit->maResult);
}
}