diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2018-07-11 21:53:47 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2018-07-13 08:38:57 +0200 |
commit | ddef60b9c26b1d2990c6c49dbbda73e7831f21fb (patch) | |
tree | 011cbead2168b4620536d840a9ff983f20b1dcdd /editeng | |
parent | 1a8435a23e84f3ceeee580eb9d4404a738d98888 (diff) |
pass SvxFieldData around by std::unique_ptr
Change-Id: I9c826547d348000dd6c80e45d833e048caae0ed8
Reviewed-on: https://gerrit.libreoffice.org/57308
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'editeng')
-rw-r--r-- | editeng/source/items/CustomPropertyField.cxx | 5 | ||||
-rw-r--r-- | editeng/source/items/flditem.cxx | 82 | ||||
-rw-r--r-- | editeng/source/items/svdfield.cxx | 5 | ||||
-rw-r--r-- | editeng/source/uno/unofield.cxx | 58 | ||||
-rw-r--r-- | editeng/source/uno/unotext.cxx | 13 |
5 files changed, 82 insertions, 81 deletions
diff --git a/editeng/source/items/CustomPropertyField.cxx b/editeng/source/items/CustomPropertyField.cxx index e8ef53ceebb2..3fbe5a89fe89 100644 --- a/editeng/source/items/CustomPropertyField.cxx +++ b/editeng/source/items/CustomPropertyField.cxx @@ -9,6 +9,7 @@ */ #include <editeng/CustomPropertyField.hxx> +#include <o3tl/make_unique.hxx> #include <vcl/metaact.hxx> #include <com/sun/star/beans/XPropertyContainer.hpp> #include <com/sun/star/beans/XPropertySet.hpp> @@ -29,9 +30,9 @@ CustomPropertyField::~CustomPropertyField() SV_IMPL_PERSIST1(CustomPropertyField); -tools::SvRef<SvxFieldData> CustomPropertyField::Clone() const +std::unique_ptr<SvxFieldData> CustomPropertyField::Clone() const { - return new CustomPropertyField(msName, msCurrentPresentation); + return o3tl::make_unique<CustomPropertyField>(msName, msCurrentPresentation); } bool CustomPropertyField::operator==(const SvxFieldData& rOther) const diff --git a/editeng/source/items/flditem.cxx b/editeng/source/items/flditem.cxx index eca2d4a7ec78..722d54a710db 100644 --- a/editeng/source/items/flditem.cxx +++ b/editeng/source/items/flditem.cxx @@ -21,6 +21,7 @@ #include <vcl/metaact.hxx> #include <svl/zforlist.hxx> #include <tools/urlobj.hxx> +#include <o3tl/make_unique.hxx> #include <editeng/flditem.hxx> #include <editeng/CustomPropertyField.hxx> @@ -238,9 +239,6 @@ SvxFieldData* SvxFieldData::Create(const uno::Reference<text::XTextContent>& xTe } -SV_IMPL_PERSIST1( SvxFieldData ); - - SvxFieldData::SvxFieldData() { } @@ -251,9 +249,9 @@ SvxFieldData::~SvxFieldData() } -tools::SvRef<SvxFieldData> SvxFieldData::Clone() const +std::unique_ptr<SvxFieldData> SvxFieldData::Clone() const { - return new SvxFieldData; + return o3tl::make_unique<SvxFieldData>(); } @@ -276,16 +274,22 @@ MetaAction* SvxFieldData::createEndComment() } +SvxFieldItem::SvxFieldItem( std::unique_ptr<SvxFieldData> pField, const sal_uInt16 nId ) : + SfxPoolItem( nId ) + , mpField( std::move(pField) ) +{ +} + SvxFieldItem::SvxFieldItem( const SvxFieldData& rField, const sal_uInt16 nId ) : SfxPoolItem( nId ) - , mxField( rField.Clone() ) + , mpField( rField.Clone() ) { } SvxFieldItem::SvxFieldItem( const SvxFieldItem& rItem ) : SfxPoolItem ( rItem ) - , mxField( rItem.GetField() ? rItem.GetField()->Clone() : nullptr ) + , mpField( rItem.GetField() ? rItem.GetField()->Clone() : nullptr ) { } @@ -306,12 +310,12 @@ bool SvxFieldItem::operator==( const SfxPoolItem& rItem ) const assert(SfxPoolItem::operator==(rItem)); const SvxFieldData* pOtherFld = static_cast<const SvxFieldItem&>(rItem).GetField(); - if( mxField.get() == pOtherFld ) + if( mpField.get() == pOtherFld ) return true; - if( mxField == nullptr || pOtherFld == nullptr ) + if( mpField == nullptr || pOtherFld == nullptr ) return false; - return ( typeid(*mxField) == typeid(*pOtherFld) ) - && ( *mxField == *pOtherFld ); + return ( typeid(*mpField) == typeid(*pOtherFld) ) + && ( *mpField == *pOtherFld ); } @@ -337,9 +341,9 @@ SvxDateField::SvxDateField( const Date& rDate, SvxDateType eT, SvxDateFormat eF } -tools::SvRef<SvxFieldData> SvxDateField::Clone() const +std::unique_ptr<SvxFieldData> SvxDateField::Clone() const { - return new SvxDateField( *this ); + return o3tl::make_unique<SvxDateField>( *this ); } @@ -448,9 +452,9 @@ SvxURLField::SvxURLField( const OUString& rURL, const OUString& rRepres, SvxURLF } -tools::SvRef<SvxFieldData> SvxURLField::Clone() const +std::unique_ptr<SvxFieldData> SvxURLField::Clone() const { - return new SvxURLField( *this ); + return o3tl::make_unique<SvxURLField>( *this ); } @@ -484,9 +488,9 @@ SV_IMPL_PERSIST1( SvxPageTitleField ); SvxPageTitleField::SvxPageTitleField() {} -tools::SvRef<SvxFieldData> SvxPageTitleField::Clone() const +std::unique_ptr<SvxFieldData> SvxPageTitleField::Clone() const { - return new SvxPageTitleField(); + return o3tl::make_unique<SvxPageTitleField>(); } bool SvxPageTitleField::operator==( const SvxFieldData& rCmp ) const @@ -509,9 +513,9 @@ SV_IMPL_PERSIST1( SvxPageField ); SvxPageField::SvxPageField() {} -tools::SvRef<SvxFieldData> SvxPageField::Clone() const +std::unique_ptr<SvxFieldData> SvxPageField::Clone() const { - return new SvxPageField; // empty + return o3tl::make_unique<SvxPageField>(); // empty } bool SvxPageField::operator==( const SvxFieldData& rCmp ) const @@ -529,9 +533,9 @@ SV_IMPL_PERSIST1( SvxPagesField ); SvxPagesField::SvxPagesField() {} -tools::SvRef<SvxFieldData> SvxPagesField::Clone() const +std::unique_ptr<SvxFieldData> SvxPagesField::Clone() const { - return new SvxPagesField; // empty + return o3tl::make_unique<SvxPagesField>(); // empty } bool SvxPagesField::operator==( const SvxFieldData& rCmp ) const @@ -543,9 +547,9 @@ SV_IMPL_PERSIST1( SvxTimeField ); SvxTimeField::SvxTimeField() {} -tools::SvRef<SvxFieldData> SvxTimeField::Clone() const +std::unique_ptr<SvxFieldData> SvxTimeField::Clone() const { - return new SvxTimeField; // empty + return o3tl::make_unique<SvxTimeField>(); // empty } bool SvxTimeField::operator==( const SvxFieldData& rCmp ) const @@ -562,9 +566,9 @@ SV_IMPL_PERSIST1( SvxFileField ); SvxFileField::SvxFileField() {} -tools::SvRef<SvxFieldData> SvxFileField::Clone() const +std::unique_ptr<SvxFieldData> SvxFileField::Clone() const { - return new SvxFileField; // empty + return o3tl::make_unique<SvxFileField>(); // empty } bool SvxFileField::operator==( const SvxFieldData& rCmp ) const @@ -584,9 +588,9 @@ void SvxTableField::SetTab(int nTab) } -tools::SvRef<SvxFieldData> SvxTableField::Clone() const +std::unique_ptr<SvxFieldData> SvxTableField::Clone() const { - return new SvxTableField(mnTab); + return o3tl::make_unique<SvxTableField>(mnTab); } bool SvxTableField::operator==( const SvxFieldData& rCmp ) const @@ -619,9 +623,9 @@ SvxExtTimeField::SvxExtTimeField( const tools::Time& rTime, SvxTimeType eT, SvxT } -tools::SvRef<SvxFieldData> SvxExtTimeField::Clone() const +std::unique_ptr<SvxFieldData> SvxExtTimeField::Clone() const { - return new SvxExtTimeField( *this ); + return o3tl::make_unique<SvxExtTimeField>( *this ); } @@ -735,9 +739,9 @@ SvxExtFileField::SvxExtFileField( const OUString& rStr, SvxFileType eT, SvxFileF } -tools::SvRef<SvxFieldData> SvxExtFileField::Clone() const +std::unique_ptr<SvxFieldData> SvxExtFileField::Clone() const { - return new SvxExtFileField( *this ); + return o3tl::make_unique<SvxExtFileField>( *this ); } @@ -848,9 +852,9 @@ SvxAuthorField::SvxAuthorField( const OUString& rFirstName, } -tools::SvRef<SvxFieldData> SvxAuthorField::Clone() const +std::unique_ptr<SvxFieldData> SvxAuthorField::Clone() const { - return new SvxAuthorField( *this ); + return o3tl::make_unique<SvxAuthorField>( *this ); } @@ -897,9 +901,9 @@ SV_IMPL_PERSIST1( SvxHeaderField ); SvxHeaderField::SvxHeaderField() {} -tools::SvRef<SvxFieldData> SvxHeaderField::Clone() const +std::unique_ptr<SvxFieldData> SvxHeaderField::Clone() const { - return new SvxHeaderField; // empty + return o3tl::make_unique<SvxHeaderField>(); // empty } bool SvxHeaderField::operator==( const SvxFieldData& rCmp ) const @@ -911,9 +915,9 @@ SV_IMPL_PERSIST1( SvxFooterField ); SvxFooterField::SvxFooterField() {} -tools::SvRef<SvxFieldData> SvxFooterField::Clone() const +std::unique_ptr<SvxFieldData> SvxFooterField::Clone() const { - return new SvxFooterField; // empty + return o3tl::make_unique<SvxFooterField>(); // empty } bool SvxFooterField::operator==( const SvxFieldData& rCmp ) const @@ -923,9 +927,9 @@ bool SvxFooterField::operator==( const SvxFieldData& rCmp ) const SV_IMPL_PERSIST1( SvxDateTimeField ); -tools::SvRef<SvxFieldData> SvxDateTimeField::Clone() const +std::unique_ptr<SvxFieldData> SvxDateTimeField::Clone() const { - return new SvxDateTimeField; // empty + return o3tl::make_unique<SvxDateTimeField>(); // empty } bool SvxDateTimeField::operator==( const SvxFieldData& rCmp ) const diff --git a/editeng/source/items/svdfield.cxx b/editeng/source/items/svdfield.cxx index e448126b5d39..ac3c0900de37 100644 --- a/editeng/source/items/svdfield.cxx +++ b/editeng/source/items/svdfield.cxx @@ -19,6 +19,7 @@ #include <editeng/measfld.hxx> +#include <o3tl/make_unique.hxx> SV_IMPL_PERSIST1(SdrMeasureField); @@ -26,9 +27,9 @@ SdrMeasureField::~SdrMeasureField() { } -tools::SvRef<SvxFieldData> SdrMeasureField::Clone() const +std::unique_ptr<SvxFieldData> SdrMeasureField::Clone() const { - return new SdrMeasureField(*this); + return o3tl::make_unique<SdrMeasureField>(*this); } bool SdrMeasureField::operator==(const SvxFieldData& rSrc) const diff --git a/editeng/source/uno/unofield.cxx b/editeng/source/uno/unofield.cxx index 29b84fd2833b..6cc201e93725 100644 --- a/editeng/source/uno/unofield.cxx +++ b/editeng/source/uno/unofield.cxx @@ -411,9 +411,9 @@ SvxUnoTextField::~SvxUnoTextField() throw() { } -SvxFieldData* SvxUnoTextField::CreateFieldData() const throw() +std::unique_ptr<SvxFieldData> SvxUnoTextField::CreateFieldData() const throw() { - SvxFieldData* pData = nullptr; + std::unique_ptr<SvxFieldData> pData; switch( mnServiceId ) { @@ -424,25 +424,25 @@ SvxFieldData* SvxUnoTextField::CreateFieldData() const throw() if( mpImpl->mbBoolean2 ) // IsDate? { Date aDate( setDate( mpImpl->maDateTime ) ); - pData = new SvxDateField( aDate, mpImpl->mbBoolean1?SvxDateType::Fix:SvxDateType::Var ); + pData.reset( new SvxDateField( aDate, mpImpl->mbBoolean1?SvxDateType::Fix:SvxDateType::Var ) ); if( mpImpl->mnInt32 >= static_cast<sal_Int32>(SvxDateFormat::AppDefault) && mpImpl->mnInt32 <= static_cast<sal_Int32>(SvxDateFormat::F) ) - static_cast<SvxDateField*>(pData)->SetFormat( static_cast<SvxDateFormat>(mpImpl->mnInt32) ); + static_cast<SvxDateField*>(pData.get())->SetFormat( static_cast<SvxDateFormat>(mpImpl->mnInt32) ); } else { if( mnServiceId != text::textfield::Type::TIME && mnServiceId != text::textfield::Type::DATE ) { tools::Time aTime( setTime( mpImpl->maDateTime ) ); - pData = new SvxExtTimeField( aTime, mpImpl->mbBoolean1?SvxTimeType::Fix:SvxTimeType::Var ); + pData.reset( new SvxExtTimeField( aTime, mpImpl->mbBoolean1?SvxTimeType::Fix:SvxTimeType::Var ) ); if( static_cast<SvxTimeFormat>(mpImpl->mnInt32) >= SvxTimeFormat::AppDefault && static_cast<SvxTimeFormat>(mpImpl->mnInt32) <= SvxTimeFormat::HH12_MM_SS_00_AMPM ) - static_cast<SvxExtTimeField*>(pData)->SetFormat( static_cast<SvxTimeFormat>(mpImpl->mnInt32) ); + static_cast<SvxExtTimeField*>(pData.get())->SetFormat( static_cast<SvxTimeFormat>(mpImpl->mnInt32) ); } else { - pData = new SvxTimeField(); + pData.reset( new SvxTimeField() ); } } @@ -450,35 +450,35 @@ SvxFieldData* SvxUnoTextField::CreateFieldData() const throw() break; case text::textfield::Type::URL: - pData = new SvxURLField( mpImpl->msString3, mpImpl->msString1, !mpImpl->msString1.isEmpty() ? SvxURLFormat::Repr : SvxURLFormat::Url ); - static_cast<SvxURLField*>(pData)->SetTargetFrame( mpImpl->msString2 ); + pData.reset( new SvxURLField( mpImpl->msString3, mpImpl->msString1, !mpImpl->msString1.isEmpty() ? SvxURLFormat::Repr : SvxURLFormat::Url ) ); + static_cast<SvxURLField*>(pData.get())->SetTargetFrame( mpImpl->msString2 ); if( static_cast<SvxURLFormat>(mpImpl->mnInt16) >= SvxURLFormat::AppDefault && static_cast<SvxURLFormat>(mpImpl->mnInt16) <= SvxURLFormat::Repr ) - static_cast<SvxURLField*>(pData)->SetFormat( static_cast<SvxURLFormat>(mpImpl->mnInt16) ); + static_cast<SvxURLField*>(pData.get())->SetFormat( static_cast<SvxURLFormat>(mpImpl->mnInt16) ); break; case text::textfield::Type::PAGE: - pData = new SvxPageField(); + pData.reset( new SvxPageField() ); break; case text::textfield::Type::PAGES: - pData = new SvxPagesField(); + pData.reset( new SvxPagesField() ); break; case text::textfield::Type::DOCINFO_TITLE: - pData = new SvxFileField(); + pData.reset( new SvxFileField() ); break; case text::textfield::Type::TABLE: - pData = new SvxTableField(); + pData.reset( new SvxTableField() ); break; case text::textfield::Type::EXTENDED_FILE: { // #92009# pass fixed attribute to constructor - pData = new SvxExtFileField( mpImpl->msString1, + pData.reset( new SvxExtFileField( mpImpl->msString1, mpImpl->mbBoolean1 ? SvxFileType::Fix : SvxFileType::Var, - setFileNameDisplayFormat(mpImpl->mnInt16 ) ); + setFileNameDisplayFormat(mpImpl->mnInt16 ) ) ); break; } @@ -509,17 +509,17 @@ SvxFieldData* SvxUnoTextField::CreateFieldData() const throw() } // #92009# pass fixed attribute to constructor - pData = new SvxAuthorField( aFirstName, aLastName, "", - mpImpl->mbBoolean1 ? SvxAuthorType::Fix : SvxAuthorType::Var ); + pData.reset( new SvxAuthorField( aFirstName, aLastName, "", + mpImpl->mbBoolean1 ? SvxAuthorType::Fix : SvxAuthorType::Var ) ); if( !mpImpl->mbBoolean2 ) { - static_cast<SvxAuthorField*>(pData)->SetFormat( SvxAuthorFormat::ShortName ); + static_cast<SvxAuthorField*>(pData.get())->SetFormat( SvxAuthorFormat::ShortName ); } else if( static_cast<SvxAuthorFormat>(mpImpl->mnInt16) >= SvxAuthorFormat::FullName && static_cast<SvxAuthorFormat>(mpImpl->mnInt16) <= SvxAuthorFormat::ShortName ) { - static_cast<SvxAuthorField*>(pData)->SetFormat( static_cast<SvxAuthorFormat>(mpImpl->mnInt16) ); + static_cast<SvxAuthorField*>(pData.get())->SetFormat( static_cast<SvxAuthorFormat>(mpImpl->mnInt16) ); } break; @@ -530,23 +530,23 @@ SvxFieldData* SvxUnoTextField::CreateFieldData() const throw() SdrMeasureFieldKind eKind = SdrMeasureFieldKind::Value; if( mpImpl->mnInt16 == sal_Int16(SdrMeasureFieldKind::Unit) || mpImpl->mnInt16 == sal_Int16(SdrMeasureFieldKind::Rotate90Blanks) ) eKind = static_cast<SdrMeasureFieldKind>(mpImpl->mnInt16); - pData = new SdrMeasureField( eKind); + pData.reset( new SdrMeasureField( eKind) ); break; } case text::textfield::Type::PRESENTATION_HEADER: - pData = new SvxHeaderField(); + pData.reset( new SvxHeaderField() ); break; case text::textfield::Type::PRESENTATION_FOOTER: - pData = new SvxFooterField(); + pData.reset( new SvxFooterField() ); break; case text::textfield::Type::PRESENTATION_DATE_TIME: - pData = new SvxDateTimeField(); + pData.reset( new SvxDateTimeField() ); break; case text::textfield::Type::PAGE_NAME: - pData = new SvxPageTitleField(); + pData.reset( new SvxPageTitleField() ); break; case text::textfield::Type::DOCINFO_CUSTOM: - pData = new editeng::CustomPropertyField(mpImpl->msString1, mpImpl->msString2); + pData.reset( new editeng::CustomPropertyField(mpImpl->msString1, mpImpl->msString2) ); break; }; @@ -666,11 +666,9 @@ void SAL_CALL SvxUnoTextField::attach( const uno::Reference< text::XTextRange >& if(pRange == nullptr) throw lang::IllegalArgumentException(); - SvxFieldData* pData = CreateFieldData(); + std::unique_ptr<SvxFieldData> pData = CreateFieldData(); if( pData ) - pRange->attachField( pData ); - - delete pData; + pRange->attachField( std::move(pData) ); } uno::Reference< text::XTextRange > SAL_CALL SvxUnoTextField::getAnchor() diff --git a/editeng/source/uno/unotext.cxx b/editeng/source/uno/unotext.cxx index 261c8e30490e..22699090a93c 100644 --- a/editeng/source/uno/unotext.cxx +++ b/editeng/source/uno/unotext.cxx @@ -279,18 +279,15 @@ void SvxUnoTextRangeBase::SetEditSource( SvxEditSource* pSource ) throw() /** puts a field item with a copy of the given FieldData into the itemset corresponding with this range */ -void SvxUnoTextRangeBase::attachField( const SvxFieldData* pData ) throw() +void SvxUnoTextRangeBase::attachField( std::unique_ptr<SvxFieldData> pData ) throw() { SolarMutexGuard aGuard; - if( pData ) + SvxTextForwarder* pForwarder = mpEditSource ? mpEditSource->GetTextForwarder() : nullptr; + if( pForwarder ) { - SvxTextForwarder* pForwarder = mpEditSource ? mpEditSource->GetTextForwarder() : nullptr; - if( pForwarder ) - { - SvxFieldItem aField( *pData, EE_FEATURE_FIELD ); - pForwarder->QuickInsertField( aField, maSelection ); - } + SvxFieldItem aField( std::move(pData), EE_FEATURE_FIELD ); + pForwarder->QuickInsertField( std::move(aField), maSelection ); } } |