Kaydet (Commit) 97c934d9 authored tarafından Noel Grandin's avatar Noel Grandin

convert SwGlblDocContents to sorted_vector<unique_ptr<>>

Change-Id: I9766a03739aa63be8f42fc99012577cfa154298d
Reviewed-on: https://gerrit.libreoffice.org/60738
Tested-by: Jenkins
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst ace6bbf3
......@@ -60,10 +60,7 @@ public:
{ return GetDocPos() < rCmp.GetDocPos(); }
};
class SwGlblDocContents : public o3tl::sorted_vector<SwGlblDocContent*, o3tl::less_ptr_to<SwGlblDocContent> > {
public:
~SwGlblDocContents() { DeleteAndDestroyAll(); }
};
class SwGlblDocContents : public o3tl::sorted_vector<std::unique_ptr<SwGlblDocContent>, o3tl::less_uniqueptr_to<SwGlblDocContent> > {};
#endif
......
......@@ -53,7 +53,7 @@ bool SwEditShell::IsGlblDocSaveLinks() const
void SwEditShell::GetGlobalDocContent( SwGlblDocContents& rArr ) const
{
rArr.DeleteAndDestroyAll();
rArr.clear();
if( !getIDocumentSettingAccess().get(DocumentSettingId::GLOBAL_DOCUMENT) )
return;
......@@ -67,22 +67,21 @@ void SwEditShell::GetGlobalDocContent( SwGlblDocContents& rArr ) const
const SwSection* pSect = rSectFormats[ --n ]->GetGlobalDocSection();
if( pSect )
{
SwGlblDocContent* pNew = nullptr;
std::unique_ptr<SwGlblDocContent> pNew;
switch( pSect->GetType() )
{
case TOX_HEADER_SECTION:
break; // ignore
case TOX_CONTENT_SECTION:
OSL_ENSURE( dynamic_cast<const SwTOXBaseSection*>( pSect) != nullptr, "no TOXBaseSection!" );
pNew = new SwGlblDocContent( static_cast<const SwTOXBaseSection*>(pSect) );
pNew.reset(new SwGlblDocContent( static_cast<const SwTOXBaseSection*>(pSect) ));
break;
default:
pNew = new SwGlblDocContent( pSect );
pNew.reset(new SwGlblDocContent( pSect ));
break;
}
if( pNew && !rArr.insert( pNew ).second )
delete pNew;
rArr.insert( std::move(pNew) );
}
}
......@@ -98,10 +97,8 @@ void SwEditShell::GetGlobalDocContent( SwGlblDocContents& rArr ) const
if( ( pNd = pMyDoc->GetNodes()[ nSttIdx ])->IsContentNode()
|| pNd->IsSectionNode() || pNd->IsTableNode() )
{
SwGlblDocContent* pNew = new SwGlblDocContent( nSttIdx );
if( !rArr.insert( pNew ).second )
delete pNew;
else
std::unique_ptr<SwGlblDocContent> pNew(new SwGlblDocContent( nSttIdx ));
if( rArr.insert( std::move(pNew) ).second )
++n; // to the next position
break;
}
......@@ -119,17 +116,15 @@ void SwEditShell::GetGlobalDocContent( SwGlblDocContents& rArr ) const
if( ( pNd = pMyDoc->GetNodes()[ nSttIdx ])->IsContentNode()
|| pNd->IsSectionNode() || pNd->IsTableNode() )
{
SwGlblDocContent* pNew = new SwGlblDocContent( nSttIdx );
if( !rArr.insert( pNew ).second )
delete pNew;
rArr.insert( o3tl::make_unique<SwGlblDocContent>( nSttIdx ) );
break;
}
}
else
{
SwGlblDocContent* pNew = new SwGlblDocContent(
pMyDoc->GetNodes().GetEndOfExtras().GetIndex() + 2 );
rArr.insert( pNew );
std::unique_ptr<SwGlblDocContent> pNew(new SwGlblDocContent(
pMyDoc->GetNodes().GetEndOfExtras().GetIndex() + 2 ));
rArr.insert( std::move(pNew) );
}
}
......
......@@ -270,7 +270,7 @@ sal_Int8 SwGlobalTree::ExecuteDrop( const ExecuteDropEvent& rEvt )
{
nEntryCount++;
nAbsContPos++;
pCnt = (*pTempContents)[ nAbsContPos ];
pCnt = (*pTempContents)[ nAbsContPos ].get();
}
}
}
......@@ -659,7 +659,7 @@ void SwGlobalTree::Display(bool bOnlyUpdateUserData)
SvTreeListEntry* pEntry = First();
for (size_t i = 0; i < nCount && pEntry; i++)
{
SwGlblDocContent* pCont = (*m_pSwGlblDocContents)[i];
SwGlblDocContent* pCont = (*m_pSwGlblDocContents)[i].get();
pEntry->SetUserData(pCont);
pEntry = Next(pEntry);
assert(pEntry || i == nCount - 1);
......@@ -683,7 +683,7 @@ void SwGlobalTree::Display(bool bOnlyUpdateUserData)
SvTreeListEntry* pSelEntry = nullptr;
for( size_t i = 0; i < nCount; i++)
{
SwGlblDocContent* pCont = (*m_pSwGlblDocContents)[i];
SwGlblDocContent* pCont = (*m_pSwGlblDocContents)[i].get();
OUString sEntry;
Image aImage;
switch( pCont->GetType() )
......@@ -1130,8 +1130,8 @@ bool SwGlobalTree::Update(bool bHard)
{
for(size_t i = 0; i < pTempContents->size() && !bCopy; i++)
{
SwGlblDocContent* pLeft = (*pTempContents)[i];
SwGlblDocContent* pRight = (*m_pSwGlblDocContents)[i];
SwGlblDocContent* pLeft = (*pTempContents)[i].get();
SwGlblDocContent* pRight = (*m_pSwGlblDocContents)[i].get();
GlobalDocContentType eType = pLeft->GetType();
SvTreeListEntry* pEntry = GetEntry(i);
OUString sTemp = GetEntryText(pEntry);
......@@ -1153,10 +1153,7 @@ bool SwGlobalTree::Update(bool bHard)
}
if(bCopy || bHard)
{
m_pSwGlblDocContents->DeleteAndDestroyAll();
m_pSwGlblDocContents->insert( *pTempContents );
pTempContents->clear();
*m_pSwGlblDocContents = std::move( *pTempContents );
}
}
......@@ -1165,7 +1162,7 @@ bool SwGlobalTree::Update(bool bHard)
{
Clear();
if(m_pSwGlblDocContents)
m_pSwGlblDocContents->DeleteAndDestroyAll();
m_pSwGlblDocContents->clear();
}
// FIXME: Implement a test for changes!
return bRet;
......@@ -1308,9 +1305,9 @@ void SwGlobalTree::InsertRegion( const SwGlblDocContent* _pContent, const Sequen
SwGlblDocContent* pAnchorContent = nullptr;
OSL_ENSURE(aTempContents.size() > (nAnchorContent + nFile), "invalid anchor content -> last insertion failed");
if ( aTempContents.size() > (nAnchorContent + nFile) )
pAnchorContent = aTempContents[nAnchorContent + nFile];
pAnchorContent = aTempContents[nAnchorContent + nFile].get();
else
pAnchorContent = aTempContents.back();
pAnchorContent = aTempContents.back().get();
OUString sFileName(pFileNames[nFile]);
INetURLObject aFileUrl;
aFileUrl.SetSmartURL( sFileName );
......
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