Kaydet (Commit) 7535eaf6 authored tarafından Noel Grandin's avatar Noel Grandin

loplugin:useuniqueptr in ScDPResultData

Change-Id: I5cef91c2cdb13e33ad19597cd722e77e7c7796c9
Reviewed-on: https://gerrit.libreoffice.org/55745Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 044b5d31
...@@ -292,7 +292,7 @@ class ScDPResultData ...@@ -292,7 +292,7 @@ class ScDPResultData
bool bDataAtRow:1; bool bDataAtRow:1;
//! add "displayed values" settings //! add "displayed values" settings
mutable std::vector<ResultMembers*> maDimMembers; mutable std::vector<std::unique_ptr<ResultMembers>> maDimMembers;
public: public:
ScDPResultData( ScDPSource& rSrc ); ScDPResultData( ScDPSource& rSrc );
~ScDPResultData(); ~ScDPResultData();
...@@ -328,7 +328,7 @@ public: ...@@ -328,7 +328,7 @@ public:
bool HasCommonElement( SCROW nFirstDataId, long nFirstIndex, bool HasCommonElement( SCROW nFirstDataId, long nFirstIndex,
const ScDPItemData& rSecondData, long nSecondIndex ) const; const ScDPItemData& rSecondData, long nSecondIndex ) const;
ResultMembers* GetDimResultMembers(long nDim, const ScDPDimension* pDim, ScDPLevel* pLevel) const; ResultMembers& GetDimResultMembers(long nDim, const ScDPDimension* pDim, ScDPLevel* pLevel) const;
const ScDPSource& GetSource() const { return mrSource;} const ScDPSource& GetSource() const { return mrSource;}
}; };
......
...@@ -758,7 +758,6 @@ ScDPResultData::ScDPResultData( ScDPSource& rSrc ) : ...@@ -758,7 +758,6 @@ ScDPResultData::ScDPResultData( ScDPSource& rSrc ) :
ScDPResultData::~ScDPResultData() ScDPResultData::~ScDPResultData()
{ {
std::for_each(maDimMembers.begin(), maDimMembers.end(), std::default_delete<ResultMembers>());
} }
void ScDPResultData::SetMeasureData( void ScDPResultData::SetMeasureData(
...@@ -909,15 +908,15 @@ bool ScDPResultData::HasCommonElement( SCROW nFirstDataId, long nFirstIndex, ...@@ -909,15 +908,15 @@ bool ScDPResultData::HasCommonElement( SCROW nFirstDataId, long nFirstIndex,
return false; return false;
} }
ResultMembers* ScDPResultData::GetDimResultMembers(long nDim, const ScDPDimension* pDim, ScDPLevel* pLevel) const ResultMembers& ScDPResultData::GetDimResultMembers(long nDim, const ScDPDimension* pDim, ScDPLevel* pLevel) const
{ {
if (nDim < static_cast<long>(maDimMembers.size()) && maDimMembers[nDim]) if (nDim < static_cast<long>(maDimMembers.size()) && maDimMembers[nDim])
return maDimMembers[nDim]; return *maDimMembers[nDim];
if (nDim >= static_cast<long>(maDimMembers.size())) if (nDim >= static_cast<long>(maDimMembers.size()))
maDimMembers.resize(nDim+1, nullptr); maDimMembers.resize(nDim+1);
ResultMembers* pResultMembers = new ResultMembers(); std::unique_ptr<ResultMembers> pResultMembers(new ResultMembers());
// global order is used to initialize aMembers, so it doesn't have to be looked at later // global order is used to initialize aMembers, so it doesn't have to be looked at later
const ScMemberSortOrder& rGlobalOrder = pLevel->GetGlobalOrder(); const ScMemberSortOrder& rGlobalOrder = pLevel->GetGlobalOrder();
...@@ -934,8 +933,8 @@ ResultMembers* ScDPResultData::GetDimResultMembers(long nDim, const ScDPDimensio ...@@ -934,8 +933,8 @@ ResultMembers* ScDPResultData::GetDimResultMembers(long nDim, const ScDPDimensio
} }
} }
maDimMembers[nDim] = pResultMembers; maDimMembers[nDim] = std::move(pResultMembers);
return maDimMembers[nDim]; return *maDimMembers[nDim];
} }
ScDPResultMember::ScDPResultMember( ScDPResultMember::ScDPResultMember(
...@@ -2902,12 +2901,12 @@ void ScDPResultDimension::LateInitFrom( ...@@ -2902,12 +2901,12 @@ void ScDPResultDimension::LateInitFrom(
if ( !bLateInitAllMembers ) if ( !bLateInitAllMembers )
{ {
ResultMembers* pMembers = pResultData->GetDimResultMembers(nDimSource, pThisDim, pThisLevel); ResultMembers& rMembers = pResultData->GetDimResultMembers(nDimSource, pThisDim, pThisLevel);
bLateInitAllMembers = pMembers->IsHasHideDetailsMembers(); bLateInitAllMembers = rMembers.IsHasHideDetailsMembers();
SAL_INFO("sc.core", aDimensionName << (pMembers->IsHasHideDetailsMembers() ? " HasHideDetailsMembers" : "")); SAL_INFO("sc.core", aDimensionName << (rMembers.IsHasHideDetailsMembers() ? " HasHideDetailsMembers" : ""));
pMembers->SetHasHideDetailsMembers( false ); rMembers.SetHasHideDetailsMembers( false );
} }
bool bNewAllMembers = (!rParams.IsRow()) || nPos == 0 || bLateInitAllMembers; bool bNewAllMembers = (!rParams.IsRow()) || nPos == 0 || bLateInitAllMembers;
...@@ -4011,7 +4010,7 @@ void ScDPResultDimension::InitWithMembers( ...@@ -4011,7 +4010,7 @@ void ScDPResultDimension::InitWithMembers(
long nDimSource = pThisDim->GetDimension(); //TODO: check GetSourceDim? long nDimSource = pThisDim->GetDimension(); //TODO: check GetSourceDim?
// create all members at the first call (preserve order) // create all members at the first call (preserve order)
ResultMembers* pMembers = pResultData->GetDimResultMembers(nDimSource, pThisDim, pThisLevel); ResultMembers& rMembers = pResultData->GetDimResultMembers(nDimSource, pThisDim, pThisLevel);
ScDPGroupCompare aCompare( pResultData, rInitState, nDimSource ); ScDPGroupCompare aCompare( pResultData, rInitState, nDimSource );
// initialize only specific member (or all if "show empty" flag is set) // initialize only specific member (or all if "show empty" flag is set)
ScDPResultMember* pResultMember = nullptr; ScDPResultMember* pResultMember = nullptr;
...@@ -4022,7 +4021,7 @@ void ScDPResultDimension::InitWithMembers( ...@@ -4022,7 +4021,7 @@ void ScDPResultDimension::InitWithMembers(
if ( pResultMember == nullptr ) if ( pResultMember == nullptr )
{ //only insert found item { //only insert found item
ScDPParentDimData* pMemberData = pMembers->FindMember( nDataID ); ScDPParentDimData* pMemberData = rMembers.FindMember( nDataID );
if ( pMemberData && aCompare.IsIncluded( *( pMemberData->mpMemberDesc ) ) ) if ( pMemberData && aCompare.IsIncluded( *( pMemberData->mpMemberDesc ) ) )
pResultMember = InsertMember( pMemberData ); pResultMember = InsertMember( pMemberData );
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment