diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2019-10-05 13:32:10 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-10-06 11:58:50 +0200 |
commit | 6a789e617ed07bfddc516c8fc0cf94cd6dfe7250 (patch) | |
tree | 11d6097893a301ae65cf4668077134ac7510091a /sfx2 | |
parent | 070b3a848d6824ea154ae2d68fc7571feed60a5f (diff) |
improve SfxPoolItem operator== implementations
(*) make them all call the superclass operator==
(*) make the base class check which and typeid to ensure
we are only comparing the safe subclasses together
(*) remove a couple of operator== that were not doing
anything useful
Change-Id: Ia6234aed42df04157a5d6a323dc951916a9cb316
Reviewed-on: https://gerrit.libreoffice.org/80308
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/control/sorgitm.cxx | 3 | ||||
-rw-r--r-- | sfx2/source/dialog/dinfdlg.cxx | 2 | ||||
-rw-r--r-- | sfx2/source/doc/objitem.cxx | 7 | ||||
-rw-r--r-- | sfx2/source/view/frame.cxx | 11 | ||||
-rw-r--r-- | sfx2/source/view/viewfrm.cxx | 3 |
5 files changed, 15 insertions, 11 deletions
diff --git a/sfx2/source/control/sorgitm.cxx b/sfx2/source/control/sorgitm.cxx index 1a5709f00a51..76bc397efee0 100644 --- a/sfx2/source/control/sorgitm.cxx +++ b/sfx2/source/control/sorgitm.cxx @@ -42,8 +42,7 @@ SfxPoolItem* SfxScriptOrganizerItem::Clone( SfxItemPool * ) const bool SfxScriptOrganizerItem::operator==( const SfxPoolItem& rItem) const { - return typeid(rItem) == typeid(*this) && - SfxStringItem::operator==(rItem) && + return SfxStringItem::operator==(rItem) && aLanguage == static_cast<const SfxScriptOrganizerItem &>(rItem).aLanguage; } diff --git a/sfx2/source/dialog/dinfdlg.cxx b/sfx2/source/dialog/dinfdlg.cxx index 27239b8ba1f7..184509187e2f 100644 --- a/sfx2/source/dialog/dinfdlg.cxx +++ b/sfx2/source/dialog/dinfdlg.cxx @@ -302,7 +302,7 @@ SfxPoolItem* SfxDocumentInfoItem::Clone( SfxItemPool * ) const bool SfxDocumentInfoItem::operator==( const SfxPoolItem& rItem) const { - if (!(typeid(rItem) == typeid(*this) && SfxStringItem::operator==(rItem))) + if (!SfxStringItem::operator==(rItem)) return false; const SfxDocumentInfoItem& rInfoItem(static_cast<const SfxDocumentInfoItem&>(rItem)); diff --git a/sfx2/source/doc/objitem.cxx b/sfx2/source/doc/objitem.cxx index 8e907b7602fc..5b5483df5ce8 100644 --- a/sfx2/source/doc/objitem.cxx +++ b/sfx2/source/doc/objitem.cxx @@ -32,7 +32,8 @@ SfxPoolItem* SfxObjectItem::CreateDefault() { return new SfxObjectItem; } bool SfxObjectShellItem::operator==( const SfxPoolItem &rItem ) const { - return dynamic_cast<const SfxObjectShellItem&>(rItem).pObjSh == pObjSh; + return SfxPoolItem::operator==(rItem) && + static_cast<const SfxObjectShellItem&>(rItem).pObjSh == pObjSh; } SfxPoolItem* SfxObjectShellItem::Clone( SfxItemPool *) const @@ -92,8 +93,8 @@ SfxObjectItem::SfxObjectItem( sal_uInt16 nWhichId, SfxShell *pSh ) bool SfxObjectItem::operator==( const SfxPoolItem &rItem ) const { - const SfxObjectItem& rOther = dynamic_cast<const SfxObjectItem&>(rItem); - return rOther._pSh == _pSh; + return SfxPoolItem::operator==(rItem) && + static_cast<const SfxObjectItem&>(rItem)._pSh == _pSh; } SfxPoolItem* SfxObjectItem::Clone( SfxItemPool *) const diff --git a/sfx2/source/view/frame.cxx b/sfx2/source/view/frame.cxx index 5d341803996c..9cee64be4ccd 100644 --- a/sfx2/source/view/frame.cxx +++ b/sfx2/source/view/frame.cxx @@ -415,8 +415,9 @@ SfxFrameItem::SfxFrameItem( SfxFrame *p ): bool SfxFrameItem::operator==( const SfxPoolItem &rItem ) const { - return static_cast<const SfxFrameItem&>(rItem).pFrame == pFrame && - static_cast<const SfxFrameItem&>(rItem).wFrame == wFrame; + return SfxPoolItem::operator==(rItem) && + static_cast<const SfxFrameItem&>(rItem).pFrame == pFrame && + static_cast<const SfxFrameItem&>(rItem).wFrame == wFrame; } SfxPoolItem* SfxFrameItem::Clone( SfxItemPool *) const @@ -470,8 +471,9 @@ SfxUnoAnyItem::SfxUnoAnyItem( sal_uInt16 nWhichId, const css::uno::Any& rAny ) aValue = rAny; } -bool SfxUnoAnyItem::operator==( const SfxPoolItem& /*rItem*/ ) const +bool SfxUnoAnyItem::operator==( const SfxPoolItem& rItem ) const { + assert(SfxPoolItem::operator==(rItem)); (void)rItem; return false; } @@ -506,7 +508,8 @@ SfxUnoFrameItem::SfxUnoFrameItem( sal_uInt16 nWhichId, const css::uno::Reference bool SfxUnoFrameItem::operator==( const SfxPoolItem& i_rItem ) const { - return dynamic_cast< const SfxUnoFrameItem* >(&i_rItem) != nullptr && static_cast< const SfxUnoFrameItem& >( i_rItem ).m_xFrame == m_xFrame; + return SfxPoolItem::operator==(i_rItem) && + static_cast< const SfxUnoFrameItem& >( i_rItem ).m_xFrame == m_xFrame; } SfxPoolItem* SfxUnoFrameItem::Clone( SfxItemPool* ) const diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx index 90e79b29ff08..3540e91851de 100644 --- a/sfx2/source/view/viewfrm.cxx +++ b/sfx2/source/view/viewfrm.cxx @@ -1745,7 +1745,8 @@ void SfxViewFrame::DoAdjustPosSizePixel //! divide on Inner.../Outer... bool SfxViewFrameItem::operator==( const SfxPoolItem &rItem ) const { - return dynamic_cast<const SfxViewFrameItem&>(rItem).pFrame == pFrame; + return SfxPoolItem::operator==(rItem) && + static_cast<const SfxViewFrameItem&>(rItem).pFrame == pFrame; } SfxPoolItem* SfxViewFrameItem::Clone( SfxItemPool *) const |