editeng/source/items/CustomPropertyField.cxx | 2 editeng/source/items/flditem.cxx | 33 ------- editeng/source/items/svdfield.cxx | 2 idl/inc/basobj.hxx | 1 idl/inc/database.hxx | 1 idl/inc/types.hxx | 1 include/editeng/CustomPropertyField.hxx | 2 include/editeng/flditem.hxx | 45 ++++++--- include/editeng/measfld.hxx | 2 include/tools/pstm.hxx | 44 --------- solenv/clang-format/blacklist | 1 svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx | 12 +- svx/source/svdraw/svdotext.cxx | 17 --- sw/source/core/inc/rolbck.hxx | 11 +- sw/source/core/undo/rolbck.cxx | 102 +++++++++------------- 15 files changed, 94 insertions(+), 182 deletions(-)
New commits: commit 99876774fbcd5409ca6a6a15c44ecd39a117236f Author: Noel Grandin <[email protected]> AuthorDate: Sat Jul 14 16:46:20 2018 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Mon Jul 16 08:39:11 2018 +0200 SvPersistBase no longer necessary Change-Id: I928c0898d77d30bd6ca755d07acac6f78b20563b Reviewed-on: https://gerrit.libreoffice.org/57436 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> diff --git a/editeng/source/items/CustomPropertyField.cxx b/editeng/source/items/CustomPropertyField.cxx index 3fbe5a89fe89..d46b47af52ae 100644 --- a/editeng/source/items/CustomPropertyField.cxx +++ b/editeng/source/items/CustomPropertyField.cxx @@ -28,8 +28,6 @@ CustomPropertyField::CustomPropertyField(OUString const & rName, OUString const CustomPropertyField::~CustomPropertyField() {} -SV_IMPL_PERSIST1(CustomPropertyField); - std::unique_ptr<SvxFieldData> CustomPropertyField::Clone() const { return o3tl::make_unique<CustomPropertyField>(msName, msCurrentPresentation); diff --git a/editeng/source/items/flditem.cxx b/editeng/source/items/flditem.cxx index 722d54a710db..3365761cd1d6 100644 --- a/editeng/source/items/flditem.cxx +++ b/editeng/source/items/flditem.cxx @@ -322,9 +322,6 @@ bool SvxFieldItem::operator==( const SfxPoolItem& rItem ) const // The following are the derivatives of SvxFieldData ... -SV_IMPL_PERSIST1( SvxDateField ); - - SvxDateField::SvxDateField() { nFixDate = Date( Date::SYSTEM ).GetDate(); @@ -436,9 +433,6 @@ MetaAction* SvxDateField::createBeginComment() const return new MetaCommentAction( "FIELD_SEQ_BEGIN" ); } -SV_IMPL_PERSIST1( SvxURLField ); - - SvxURLField::SvxURLField() { eFormat = SvxURLFormat::Url; @@ -484,8 +478,6 @@ MetaAction* SvxURLField::createBeginComment() const // SvxPageTitleField methods // -SV_IMPL_PERSIST1( SvxPageTitleField ); - SvxPageTitleField::SvxPageTitleField() {} std::unique_ptr<SvxFieldData> SvxPageTitleField::Clone() const @@ -509,8 +501,6 @@ MetaAction* SvxPageTitleField::createBeginComment() const // The fields that were removed from Calc: -SV_IMPL_PERSIST1( SvxPageField ); - SvxPageField::SvxPageField() {} std::unique_ptr<SvxFieldData> SvxPageField::Clone() const @@ -529,8 +519,6 @@ MetaAction* SvxPageField::createBeginComment() const } -SV_IMPL_PERSIST1( SvxPagesField ); - SvxPagesField::SvxPagesField() {} std::unique_ptr<SvxFieldData> SvxPagesField::Clone() const @@ -543,8 +531,6 @@ bool SvxPagesField::operator==( const SvxFieldData& rCmp ) const return ( dynamic_cast< const SvxPagesField *>(&rCmp) != nullptr); } -SV_IMPL_PERSIST1( SvxTimeField ); - SvxTimeField::SvxTimeField() {} std::unique_ptr<SvxFieldData> SvxTimeField::Clone() const @@ -562,8 +548,6 @@ MetaAction* SvxTimeField::createBeginComment() const return new MetaCommentAction( "FIELD_SEQ_BEGIN" ); } -SV_IMPL_PERSIST1( SvxFileField ); - SvxFileField::SvxFileField() {} std::unique_ptr<SvxFieldData> SvxFileField::Clone() const @@ -576,8 +560,6 @@ bool SvxFileField::operator==( const SvxFieldData& rCmp ) const return ( dynamic_cast< const SvxFileField *>(&rCmp) != nullptr ); } -SV_IMPL_PERSIST1( SvxTableField ); - SvxTableField::SvxTableField() : mnTab(0) {} SvxTableField::SvxTableField(int nTab) : mnTab(nTab) {} @@ -604,9 +586,6 @@ bool SvxTableField::operator==( const SvxFieldData& rCmp ) const // SvxExtTimeField -SV_IMPL_PERSIST1( SvxExtTimeField ); - - SvxExtTimeField::SvxExtTimeField() : m_nFixTime( tools::Time(tools::Time::SYSTEM).GetTime() ) { @@ -721,9 +700,6 @@ MetaAction* SvxExtTimeField::createBeginComment() const // SvxExtFileField -SV_IMPL_PERSIST1( SvxExtFileField ); - - SvxExtFileField::SvxExtFileField() { eType = SvxFileType::Var; @@ -836,9 +812,6 @@ OUString SvxExtFileField::GetFormatted() const // SvxAuthorField -SV_IMPL_PERSIST1( SvxAuthorField ); - - SvxAuthorField::SvxAuthorField( const OUString& rFirstName, const OUString& rLastName, const OUString& rShortName, @@ -897,8 +870,6 @@ OUString SvxAuthorField::GetFormatted() const return aString; } -SV_IMPL_PERSIST1( SvxHeaderField ); - SvxHeaderField::SvxHeaderField() {} std::unique_ptr<SvxFieldData> SvxHeaderField::Clone() const @@ -911,8 +882,6 @@ bool SvxHeaderField::operator==( const SvxFieldData& rCmp ) const return ( dynamic_cast< const SvxHeaderField *>(&rCmp) != nullptr ); } -SV_IMPL_PERSIST1( SvxFooterField ); - SvxFooterField::SvxFooterField() {} std::unique_ptr<SvxFieldData> SvxFooterField::Clone() const @@ -925,8 +894,6 @@ bool SvxFooterField::operator==( const SvxFieldData& rCmp ) const return ( dynamic_cast< const SvxFooterField *>(&rCmp) != nullptr ); } -SV_IMPL_PERSIST1( SvxDateTimeField ); - std::unique_ptr<SvxFieldData> SvxDateTimeField::Clone() const { return o3tl::make_unique<SvxDateTimeField>(); // empty diff --git a/editeng/source/items/svdfield.cxx b/editeng/source/items/svdfield.cxx index ac3c0900de37..4050871d515f 100644 --- a/editeng/source/items/svdfield.cxx +++ b/editeng/source/items/svdfield.cxx @@ -21,8 +21,6 @@ #include <editeng/measfld.hxx> #include <o3tl/make_unique.hxx> -SV_IMPL_PERSIST1(SdrMeasureField); - SdrMeasureField::~SdrMeasureField() { } diff --git a/idl/inc/basobj.hxx b/idl/inc/basobj.hxx index f74b9230fb8a..d3ea84fdc7a9 100644 --- a/idl/inc/basobj.hxx +++ b/idl/inc/basobj.hxx @@ -22,7 +22,6 @@ #include <tools/ref.hxx> #include "bastype.hxx" -#include <tools/pstm.hxx> #include <functional> #include <vector> diff --git a/idl/inc/database.hxx b/idl/inc/database.hxx index 6b3904b55c1a..86e45c0dc844 100644 --- a/idl/inc/database.hxx +++ b/idl/inc/database.hxx @@ -24,7 +24,6 @@ #include "hash.hxx" #include "lex.hxx" #include <rtl/string.hxx> -#include <tools/pstm.hxx> #include <rtl/ustring.hxx> #include <set> diff --git a/idl/inc/types.hxx b/idl/inc/types.hxx index e946ed35436b..a0f796fc66f9 100644 --- a/idl/inc/types.hxx +++ b/idl/inc/types.hxx @@ -21,6 +21,7 @@ #define INCLUDED_IDL_INC_TYPES_HXX #include <rtl/strbuf.hxx> +#include <tools/solar.h> #include <tools/ref.hxx> #include "basobj.hxx" diff --git a/include/editeng/CustomPropertyField.hxx b/include/editeng/CustomPropertyField.hxx index 43580ac4b178..fbfc0410f727 100644 --- a/include/editeng/CustomPropertyField.hxx +++ b/include/editeng/CustomPropertyField.hxx @@ -34,7 +34,7 @@ public: virtual ~CustomPropertyField() override; - SV_DECL_PERSIST1(CustomPropertyField, css::text::textfield::Type::DOCINFO_CUSTOM) + virtual sal_Int32 GetClassId() const override { return css::text::textfield::Type::DOCINFO_CUSTOM; } virtual std::unique_ptr<SvxFieldData> Clone() const override; virtual bool operator==(const SvxFieldData&) const override; diff --git a/include/editeng/flditem.hxx b/include/editeng/flditem.hxx index 065dc60969f2..9ed775c01c1c 100644 --- a/include/editeng/flditem.hxx +++ b/include/editeng/flditem.hxx @@ -23,7 +23,6 @@ #include <tools/time.hxx> #include <tools/date.hxx> #include <svl/poolitem.hxx> -#include <tools/pstm.hxx> #include <editeng/editengdllapi.h> #include <com/sun/star/text/textfield/Type.hpp> @@ -47,7 +46,8 @@ public: static SvxFieldData* Create(const css::uno::Reference<css::text::XTextContent>& xContent); - virtual sal_Int32 GetClassId() const { return css::text::textfield::Type::UNSPECIFIED; } + static constexpr auto CLASS_ID = css::text::textfield::Type::UNSPECIFIED; + virtual sal_Int32 GetClassId() const { return CLASS_ID; } SvxFieldData(); virtual ~SvxFieldData(); @@ -104,7 +104,8 @@ class EDITENG_DLLPUBLIC SvxDateField : public SvxFieldData SvxDateFormat eFormat; public: - SV_DECL_PERSIST1( SvxDateField, css::text::textfield::Type::DATE ) + static constexpr auto CLASS_ID = css::text::textfield::Type::DATE; + virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxDateField(); explicit SvxDateField( const Date& rDate, @@ -147,7 +148,8 @@ private: OUString aTargetFrame; // In what Frame public: - SV_DECL_PERSIST1( SvxURLField, css::text::textfield::Type::URL ) + static constexpr auto CLASS_ID = css::text::textfield::Type::URL; + virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxURLField(); SvxURLField( const OUString& rURL, const OUString& rRepres, SvxURLFormat eFmt = SvxURLFormat::Url ); @@ -173,7 +175,7 @@ public: class EDITENG_DLLPUBLIC SvxPageField final: public SvxFieldData { public: - SV_DECL_PERSIST1( SvxPageField, css::text::textfield::Type::PAGE ) + virtual sal_Int32 GetClassId() const override { return css::text::textfield::Type::PAGE; } SvxPageField(); virtual std::unique_ptr<SvxFieldData> Clone() const override; @@ -185,7 +187,8 @@ public: class EDITENG_DLLPUBLIC SvxPageTitleField final: public SvxFieldData { public: - SV_DECL_PERSIST1( SvxPageTitleField, css::text::textfield::Type::PAGE_NAME ) + static constexpr auto CLASS_ID = css::text::textfield::Type::PAGE_NAME; + virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxPageTitleField(); virtual std::unique_ptr<SvxFieldData> Clone() const override; @@ -197,7 +200,8 @@ public: class EDITENG_DLLPUBLIC SvxPagesField final: public SvxFieldData { public: - SV_DECL_PERSIST1( SvxPagesField, css::text::textfield::Type::PAGES ) + static constexpr auto CLASS_ID = css::text::textfield::Type::PAGES; + virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxPagesField(); virtual std::unique_ptr<SvxFieldData> Clone() const override; @@ -207,7 +211,8 @@ public: class EDITENG_DLLPUBLIC SvxTimeField final: public SvxFieldData { public: - SV_DECL_PERSIST1( SvxTimeField, css::text::textfield::Type::TIME ) + static constexpr auto CLASS_ID = css::text::textfield::Type::TIME; + virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxTimeField(); virtual std::unique_ptr<SvxFieldData> Clone() const override; @@ -219,7 +224,8 @@ public: class EDITENG_DLLPUBLIC SvxFileField final: public SvxFieldData { public: - SV_DECL_PERSIST1( SvxFileField, css::text::textfield::Type::DOCINFO_TITLE ) + static constexpr auto CLASS_ID = css::text::textfield::Type::DOCINFO_TITLE; + virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxFileField(); virtual std::unique_ptr<SvxFieldData> Clone() const override; @@ -230,7 +236,8 @@ class EDITENG_DLLPUBLIC SvxTableField final: public SvxFieldData { int mnTab; public: - SV_DECL_PERSIST1( SvxTableField, css::text::textfield::Type::TABLE ) + static constexpr auto CLASS_ID = css::text::textfield::Type::TABLE; + virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxTableField(); explicit SvxTableField(int nTab); @@ -269,7 +276,8 @@ private: SvxTimeFormat eFormat; public: - SV_DECL_PERSIST1( SvxExtTimeField, css::text::textfield::Type::EXTENDED_TIME ) + static constexpr auto CLASS_ID = css::text::textfield::Type::EXTENDED_TIME; + virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxExtTimeField(); explicit SvxExtTimeField( const tools::Time& rTime, SvxTimeType eType, @@ -316,7 +324,8 @@ private: SvxFileFormat eFormat; public: - SV_DECL_PERSIST1( SvxExtFileField, css::text::textfield::Type::EXTENDED_FILE ) + static constexpr auto CLASS_ID = css::text::textfield::Type::EXTENDED_FILE; + virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxExtFileField(); explicit SvxExtFileField( const OUString& rString, SvxFileType eType = SvxFileType::Var, @@ -358,7 +367,8 @@ private: SvxAuthorFormat eFormat; public: - SV_DECL_PERSIST1( SvxAuthorField, css::text::textfield::Type::AUTHOR ) + static constexpr auto CLASS_ID = css::text::textfield::Type::AUTHOR; + virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxAuthorField( const OUString& rFirstName, const OUString& rLastName, @@ -383,7 +393,8 @@ public: class EDITENG_DLLPUBLIC SvxHeaderField final: public SvxFieldData { public: - SV_DECL_PERSIST1( SvxHeaderField, css::text::textfield::Type::PRESENTATION_HEADER ) + static constexpr auto CLASS_ID = css::text::textfield::Type::PRESENTATION_HEADER; + virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxHeaderField(); virtual std::unique_ptr<SvxFieldData> Clone() const override; @@ -395,7 +406,8 @@ public: class EDITENG_DLLPUBLIC SvxFooterField final: public SvxFieldData { public: - SV_DECL_PERSIST1( SvxFooterField, css::text::textfield::Type::PRESENTATION_FOOTER ) + static constexpr auto CLASS_ID = css::text::textfield::Type::PRESENTATION_FOOTER; + virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxFooterField(); virtual std::unique_ptr<SvxFieldData> Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; @@ -406,7 +418,8 @@ public: class EDITENG_DLLPUBLIC SvxDateTimeField final: public SvxFieldData { public: - SV_DECL_PERSIST1( SvxDateTimeField, css::text::textfield::Type::PRESENTATION_DATE_TIME ) + static constexpr auto CLASS_ID = css::text::textfield::Type::PRESENTATION_DATE_TIME; + virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxDateTimeField(); static OUString GetFormatted( Date const & rDate, tools::Time const & rTime, diff --git a/include/editeng/measfld.hxx b/include/editeng/measfld.hxx index 50bf3cc3e8df..2422ed9a8462 100644 --- a/include/editeng/measfld.hxx +++ b/include/editeng/measfld.hxx @@ -32,7 +32,7 @@ enum class SdrMeasureFieldKind { Value, Unit, Rotate90Blanks }; class EDITENG_DLLPUBLIC SdrMeasureField: public SvxFieldData { SdrMeasureFieldKind eMeasureFieldKind; public: - SV_DECL_PERSIST1(SdrMeasureField, css::text::textfield::Type::MEASURE) + virtual sal_Int32 GetClassId() const override { return css::text::textfield::Type::MEASURE; } SdrMeasureField(SdrMeasureFieldKind eNewKind): eMeasureFieldKind(eNewKind) {} virtual ~SdrMeasureField() override; virtual std::unique_ptr<SvxFieldData> Clone() const override; diff --git a/include/tools/pstm.hxx b/include/tools/pstm.hxx deleted file mode 100644 index 062025891826..000000000000 --- a/include/tools/pstm.hxx +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ -#ifndef INCLUDED_TOOLS_PSTM_HXX -#define INCLUDED_TOOLS_PSTM_HXX - -#include <tools/toolsdllapi.h> -#include <tools/ref.hxx> -#include <tools/stream.hxx> -#include <map> -#include <unordered_map> - -#define SV_DECL_PERSIST1( Class, CLASS_ID ) \ - static sal_Int32 StaticClassId() { return CLASS_ID; } \ - virtual sal_Int32 GetClassId() const override; \ - -#define SV_IMPL_PERSIST1( Class ) \ - sal_Int32 Class::GetClassId() const \ - { return StaticClassId(); } \ - -class SvPersistBase : public SvRefBase -{ -public: - virtual sal_Int32 GetClassId() const = 0; -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist index 05ef966593b9..6f7e23976278 100644 --- a/solenv/clang-format/blacklist +++ b/solenv/clang-format/blacklist @@ -7776,7 +7776,6 @@ include/tools/mempool.hxx include/tools/multisel.hxx include/tools/pathutils.hxx include/tools/poly.hxx -include/tools/pstm.hxx include/tools/ref.hxx include/tools/resary.hxx include/tools/solar.h diff --git a/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx index e3d7aba47366..334f390756d7 100644 --- a/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx +++ b/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx @@ -111,12 +111,12 @@ namespace drawinglayer { const EditTextObject& rETO = maOutlinerParaObject.GetTextObject(); - mbContainsPageField = rETO.HasField(SvxPageField::StaticClassId()); - mbContainsPageCountField = rETO.HasField(SvxPagesField::StaticClassId()); - mbContainsOtherFields = rETO.HasField(SvxHeaderField::StaticClassId()) - || rETO.HasField(SvxFooterField::StaticClassId()) - || rETO.HasField(SvxDateTimeField::StaticClassId()) - || rETO.HasField(SvxAuthorField::StaticClassId()); + mbContainsPageField = rETO.HasField(SvxPageField::CLASS_ID); + mbContainsPageCountField = rETO.HasField(SvxPagesField::CLASS_ID); + mbContainsOtherFields = rETO.HasField(SvxHeaderField::CLASS_ID) + || rETO.HasField(SvxFooterField::CLASS_ID) + || rETO.HasField(SvxDateTimeField::CLASS_ID) + || rETO.HasField(SvxAuthorField::CLASS_ID); } const SdrText* SdrTextPrimitive2D::getSdrText() const { return mrSdrText.get(); } diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index 167b8e50825e..d40dadb35131 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -1140,19 +1140,10 @@ void SdrTextObj::ImpCheckMasterCachable() if(!bNotVisibleAsMaster && pOutlinerParaObject && pOutlinerParaObject->IsEditDoc() ) { const EditTextObject& rText= pOutlinerParaObject->GetTextObject(); - bNotMasterCachable=rText.HasField(SvxPageField::StaticClassId()); - if( !bNotMasterCachable ) - { - bNotMasterCachable=rText.HasField(SvxHeaderField::StaticClassId()); - if( !bNotMasterCachable ) - { - bNotMasterCachable=rText.HasField(SvxFooterField::StaticClassId()); - if( !bNotMasterCachable ) - { - bNotMasterCachable=rText.HasField(SvxDateTimeField::StaticClassId()); - } - } - } + bNotMasterCachable = rText.HasField(SvxPageField::CLASS_ID) + || rText.HasField(SvxHeaderField::CLASS_ID) + || rText.HasField(SvxFooterField::CLASS_ID) + || rText.HasField(SvxDateTimeField::CLASS_ID); } } commit 9df9e5b0a92caeda305c53214632a3ba42f02b2d Author: Noel Grandin <[email protected]> AuthorDate: Fri Jul 13 11:53:26 2018 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Mon Jul 16 08:38:58 2018 +0200 loplugin:useuniqueptr in SwHistory Change-Id: Ie36cdf1e7b3d09ae27cb2a5b51f8a644693fe2b3 Reviewed-on: https://gerrit.libreoffice.org/57424 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> diff --git a/sw/source/core/inc/rolbck.hxx b/sw/source/core/inc/rolbck.hxx index 60edcb313033..5163fd59ca0e 100644 --- a/sw/source/core/inc/rolbck.hxx +++ b/sw/source/core/inc/rolbck.hxx @@ -311,7 +311,7 @@ class SwHistory friend class SwDoc; // actually only SwDoc::DelUndoObj may access friend class SwRegHistory; // for inserting History attributes - std::vector<SwHistoryHint*> m_SwpHstry; + std::vector<std::unique_ptr<SwHistoryHint>> m_SwpHstry; sal_uInt16 m_nEndDiff; public: @@ -338,9 +338,9 @@ public: sal_uInt16 Count() const { return m_SwpHstry.size(); } sal_uInt16 GetTmpEnd() const { return m_SwpHstry.size() - m_nEndDiff; } sal_uInt16 SetTmpEnd( sal_uInt16 nTmpEnd ); // return previous value - SwHistoryHint * operator[]( sal_uInt16 nPos ) { return m_SwpHstry[nPos]; } + SwHistoryHint * operator[]( sal_uInt16 nPos ) { return m_SwpHstry[nPos].get(); } SwHistoryHint const* operator[]( sal_uInt16 nPos ) const - { return m_SwpHstry[nPos]; } + { return m_SwpHstry[nPos].get(); } // for SwUndoDelete::Undo/Redo void Move( sal_uInt16 nPos, SwHistory *pIns, @@ -348,8 +348,9 @@ public: { auto itSourceBegin = pIns->m_SwpHstry.begin() + nStart; auto itSourceEnd = pIns->m_SwpHstry.end(); - if (itSourceBegin == itSourceEnd) return; - m_SwpHstry.insert(m_SwpHstry.begin() + nPos, itSourceBegin, itSourceEnd); + if (itSourceBegin == itSourceEnd) + return; + m_SwpHstry.insert(m_SwpHstry.begin() + nPos, std::make_move_iterator(itSourceBegin), std::make_move_iterator(itSourceEnd)); pIns->m_SwpHstry.erase( itSourceBegin, itSourceEnd ); } diff --git a/sw/source/core/undo/rolbck.cxx b/sw/source/core/undo/rolbck.cxx index 4d1b3889c21e..9de53a698523 100644 --- a/sw/source/core/undo/rolbck.cxx +++ b/sw/source/core/undo/rolbck.cxx @@ -879,10 +879,6 @@ SwHistory::SwHistory() SwHistory::~SwHistory() { - Delete(); - std::vector<SwHistoryHint*>::const_iterator it; - for(it = m_SwpHstry.begin(); it != m_SwpHstry.end(); ++it) - delete *it; } void SwHistory::Add( @@ -900,7 +896,7 @@ void SwHistory::Add( } // no default Attribute? - SwHistoryHint* pHt = nullptr; + std::unique_ptr<SwHistoryHint> pHt; // To be able to include the DrawingLayer FillItems something more // general has to be done to check if an Item is default than to check @@ -911,14 +907,14 @@ void SwHistory::Add( // global tooling aka IsDefaultItem(const SfxPoolItem*) for now if(pOldValue && !IsDefaultItem(pOldValue)) { - pHt = new SwHistorySetFormat( pOldValue, nNodeIdx ); + pHt.reset( new SwHistorySetFormat( pOldValue, nNodeIdx ) ); } else { - pHt = new SwHistoryResetFormat( pNewValue, nNodeIdx ); + pHt.reset( new SwHistoryResetFormat( pNewValue, nNodeIdx ) ); } - m_SwpHstry.push_back( pHt ); + m_SwpHstry.push_back( std::move(pHt) ); } // FIXME: refactor the following "Add" methods (DRY)? @@ -926,65 +922,65 @@ void SwHistory::Add( SwTextAttr* pHint, sal_uLong nNodeIdx, bool bNewAttr ) { OSL_ENSURE( !m_nEndDiff, "History was not deleted after REDO" ); - SwHistoryHint * pHt = nullptr; + std::unique_ptr<SwHistoryHint> pHt; if( !bNewAttr ) { switch ( pHint->Which() ) { case RES_TXTATR_FTN: - pHt = new SwHistorySetFootnote( - static_cast<SwTextFootnote*>(pHint), nNodeIdx ); + pHt.reset( new SwHistorySetFootnote( + static_cast<SwTextFootnote*>(pHint), nNodeIdx ) ); break; case RES_TXTATR_FLYCNT: - pHt = new SwHistoryTextFlyCnt( static_cast<SwTextFlyCnt*>(pHint) - ->GetFlyCnt().GetFrameFormat() ); + pHt.reset( new SwHistoryTextFlyCnt( static_cast<SwTextFlyCnt*>(pHint) + ->GetFlyCnt().GetFrameFormat() ) ); break; case RES_TXTATR_FIELD: case RES_TXTATR_ANNOTATION: - pHt = new SwHistorySetTextField( - static_txtattr_cast<SwTextField*>(pHint), nNodeIdx); + pHt.reset( new SwHistorySetTextField( + static_txtattr_cast<SwTextField*>(pHint), nNodeIdx) ); break; case RES_TXTATR_TOXMARK: - pHt = new SwHistorySetTOXMark( - static_txtattr_cast<SwTextTOXMark*>(pHint), nNodeIdx); + pHt.reset( new SwHistorySetTOXMark( + static_txtattr_cast<SwTextTOXMark*>(pHint), nNodeIdx) ); break; case RES_TXTATR_REFMARK: - pHt = new SwHistorySetRefMark( - static_txtattr_cast<SwTextRefMark*>(pHint), nNodeIdx); + pHt.reset( new SwHistorySetRefMark( + static_txtattr_cast<SwTextRefMark*>(pHint), nNodeIdx) ); break; default: - pHt = new SwHistorySetText( pHint, nNodeIdx ); + pHt.reset( new SwHistorySetText( pHint, nNodeIdx ) ); } } else { - pHt = new SwHistoryResetText( pHint->Which(), pHint->GetStart(), - *pHint->GetAnyEnd(), nNodeIdx ); + pHt.reset( new SwHistoryResetText( pHint->Which(), pHint->GetStart(), + *pHint->GetAnyEnd(), nNodeIdx ) ); } - m_SwpHstry.push_back( pHt ); + m_SwpHstry.push_back( std::move(pHt) ); } void SwHistory::Add( SwFormatColl* pColl, sal_uLong nNodeIdx, SwNodeType nWhichNd ) { OSL_ENSURE( !m_nEndDiff, "History was not deleted after REDO" ); - SwHistoryHint * pHt = - new SwHistoryChangeFormatColl( pColl, nNodeIdx, nWhichNd ); - m_SwpHstry.push_back( pHt ); + std::unique_ptr<SwHistoryHint> pHt( + new SwHistoryChangeFormatColl( pColl, nNodeIdx, nWhichNd )); + m_SwpHstry.push_back( std::move(pHt) ); } void SwHistory::Add(const ::sw::mark::IMark& rBkmk, bool bSavePos, bool bSaveOtherPos) { OSL_ENSURE( !m_nEndDiff, "History was not deleted after REDO" ); - SwHistoryHint * pHt = new SwHistoryBookmark(rBkmk, bSavePos, bSaveOtherPos); - m_SwpHstry.push_back( pHt ); + std::unique_ptr<SwHistoryHint> pHt(new SwHistoryBookmark(rBkmk, bSavePos, bSaveOtherPos)); + m_SwpHstry.push_back( std::move(pHt) ); } void SwHistory::Add( SwFrameFormat& rFormat ) { - SwHistoryHint * pHt = new SwHistoryChangeFlyAnchor( rFormat ); - m_SwpHstry.push_back( pHt ); + std::unique_ptr<SwHistoryHint> pHt(new SwHistoryChangeFlyAnchor( rFormat )); + m_SwpHstry.push_back( std::move(pHt) ); } void SwHistory::Add( SwFlyFrameFormat& rFormat, sal_uInt16& rSetPos ) @@ -994,8 +990,8 @@ void SwHistory::Add( SwFlyFrameFormat& rFormat, sal_uInt16& rSetPos ) const sal_uInt16 nWh = rFormat.Which(); if( RES_FLYFRMFMT == nWh || RES_DRAWFRMFMT == nWh ) { - SwHistoryHint * pHint = new SwHistoryTextFlyCnt( &rFormat ); - m_SwpHstry.push_back( pHint ); + std::unique_ptr<SwHistoryHint> pHint(new SwHistoryTextFlyCnt( &rFormat )); + m_SwpHstry.push_back( std::move(pHint) ); const SwFormatChain* pChainItem; if( SfxItemState::SET == rFormat.GetItemState( RES_CHAIN, false, @@ -1003,9 +999,9 @@ void SwHistory::Add( SwFlyFrameFormat& rFormat, sal_uInt16& rSetPos ) { if( pChainItem->GetNext() || pChainItem->GetPrev() ) { - SwHistoryHint * pHt = - new SwHistoryChangeFlyChain( rFormat, *pChainItem ); - m_SwpHstry.insert( m_SwpHstry.begin() + rSetPos++, pHt ); + std::unique_ptr<SwHistoryHint> pHt( + new SwHistoryChangeFlyChain( rFormat, *pChainItem )); + m_SwpHstry.insert( m_SwpHstry.begin() + rSetPos++, std::move(pHt) ); if ( pChainItem->GetNext() ) { SwFormatChain aTmp( pChainItem->GetNext()->GetChain() ); @@ -1026,15 +1022,15 @@ void SwHistory::Add( SwFlyFrameFormat& rFormat, sal_uInt16& rSetPos ) void SwHistory::Add( const SwTextFootnote& rFootnote ) { - SwHistoryHint *pHt = new SwHistorySetFootnote( rFootnote ); - m_SwpHstry.push_back( pHt ); + std::unique_ptr<SwHistoryHint> pHt(new SwHistorySetFootnote( rFootnote )); + m_SwpHstry.push_back( std::move(pHt) ); } // #i27615# void SwHistory::Add(const SfxItemSet & rSet, const SwCharFormat & rFormat) { - SwHistoryHint * pHt = new SwHistoryChangeCharFormat(rSet, rFormat.GetName()); - m_SwpHstry.push_back( pHt ); + std::unique_ptr<SwHistoryHint> pHt(new SwHistoryChangeCharFormat(rSet, rFormat.GetName())); + m_SwpHstry.push_back( std::move(pHt) ); } bool SwHistory::Rollback( SwDoc* pDoc, sal_uInt16 nStart ) @@ -1044,9 +1040,8 @@ bool SwHistory::Rollback( SwDoc* pDoc, sal_uInt16 nStart ) for ( sal_uInt16 i = Count(); i > nStart ; ) { - SwHistoryHint * pHHt = m_SwpHstry[ --i ]; + SwHistoryHint * pHHt = m_SwpHstry[ --i ].get(); pHHt->SetInDoc( pDoc, false ); - delete pHHt; } m_SwpHstry.erase( m_SwpHstry.begin() + nStart, m_SwpHstry.end() ); m_nEndDiff = 0; @@ -1059,12 +1054,11 @@ bool SwHistory::TmpRollback( SwDoc* pDoc, sal_uInt16 nStart, bool bToFirst ) if ( !Count() || !nEnd || nStart >= nEnd ) return false; - SwHistoryHint * pHHt; if ( bToFirst ) { for ( ; nEnd > nStart; ++m_nEndDiff ) { - pHHt = m_SwpHstry[ --nEnd ]; + SwHistoryHint* pHHt = m_SwpHstry[ --nEnd ].get(); pHHt->SetInDoc( pDoc, true ); } } @@ -1072,7 +1066,7 @@ bool SwHistory::TmpRollback( SwDoc* pDoc, sal_uInt16 nStart, bool bToFirst ) { for ( ; nStart < nEnd; ++m_nEndDiff, ++nStart ) { - pHHt = m_SwpHstry[ nStart ]; + SwHistoryHint* pHHt = m_SwpHstry[ nStart ].get(); pHHt->SetInDoc( pDoc, true ); } } @@ -1081,11 +1075,7 @@ bool SwHistory::TmpRollback( SwDoc* pDoc, sal_uInt16 nStart, bool bToFirst ) void SwHistory::Delete() { - for ( sal_uInt16 n = Count(); n > 0; ) - { - delete m_SwpHstry[ --n ]; - m_SwpHstry.erase( m_SwpHstry.begin() + n ); - } + m_SwpHstry.clear(); m_nEndDiff = 0; } @@ -1245,27 +1235,27 @@ void SwRegHistory::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) } else if (pOld && RES_ATTRSET_CHG == pNew->Which()) { - SwHistoryHint* pNewHstr(nullptr); + std::unique_ptr<SwHistoryHint> pNewHstr; const SfxItemSet& rSet = *static_cast< const SwAttrSetChg* >(pOld)->GetChgSet(); if ( 1 < rSet.Count() ) { - pNewHstr = new SwHistorySetAttrSet( rSet, m_nNodeIndex, m_WhichIdSet ); + pNewHstr.reset( new SwHistorySetAttrSet( rSet, m_nNodeIndex, m_WhichIdSet ) ); } else if (const SfxPoolItem* pItem = SfxItemIter( rSet ).FirstItem()) { if ( m_WhichIdSet.count( pItem->Which() ) ) { - pNewHstr = new SwHistorySetFormat( pItem, m_nNodeIndex ); + pNewHstr.reset( new SwHistorySetFormat( pItem, m_nNodeIndex ) ); } else { - pNewHstr = new SwHistoryResetFormat( pItem, m_nNodeIndex ); + pNewHstr.reset( new SwHistoryResetFormat( pItem, m_nNodeIndex ) ); } } if (pNewHstr) - m_pHistory->m_SwpHstry.push_back( pNewHstr ); + m_pHistory->m_SwpHstry.push_back( std::move(pNewHstr) ); } } } @@ -1322,9 +1312,9 @@ bool SwRegHistory::InsertItems( const SfxItemSet& rSet, // nothing at all to be inserted assert(std::find_if( m_pHistory->m_SwpHstry.begin(), m_pHistory->m_SwpHstry.end(), - [nExpected](SwHistoryHint *const pHint) -> bool { + [nExpected](std::unique_ptr<SwHistoryHint> const& pHint) -> bool { SwHistoryResetText const*const pReset( - dynamic_cast<SwHistoryResetText const*>(pHint)); + dynamic_cast<SwHistoryResetText const*>(pHint.get())); return pReset && (pReset->GetWhich() == nExpected); }) != m_pHistory->m_SwpHstry.end()); } _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
