tdf#63640 FILEOPEN/FILESAVE: particular .odt loads/saves very slow, part1
Make CntUnencodedStringItem sortable, implementing operator<.
This takes the load time from 4s to 3.3s
Change-Id: I532cdf65149a733d41d2caf367675800d2ba4d41
Reviewed-on: https://gerrit.libreoffice.org/71460
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/include/svl/custritm.hxx b/include/svl/custritm.hxx
index 65facd5..3899df7 100644
--- a/include/svl/custritm.hxx
+++ b/include/svl/custritm.hxx
@@ -38,6 +38,8 @@
{}
virtual bool operator ==(const SfxPoolItem & rItem) const override;
virtual bool operator <(const SfxPoolItem & rItem) const override;
virtual bool IsSortable() const override { return true; }
virtual bool GetPresentation(SfxItemPresentation,
MapUnit, MapUnit,
diff --git a/include/svx/xbtmpit.hxx b/include/svx/xbtmpit.hxx
index bce24f8..dedff05 100644
--- a/include/svx/xbtmpit.hxx
+++ b/include/svx/xbtmpit.hxx
@@ -42,6 +42,8 @@
XFillBitmapItem( const XFillBitmapItem& rItem );
virtual bool operator==( const SfxPoolItem& rItem ) const override;
// NameOrIndex is sortable, but we are not
virtual bool IsSortable() const override { return false; }
virtual SfxPoolItem* Clone( SfxItemPool* pPool = nullptr ) const override;
virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
diff --git a/include/svx/xcolit.hxx b/include/svx/xcolit.hxx
index df37235..63d5e47 100644
--- a/include/svx/xcolit.hxx
+++ b/include/svx/xcolit.hxx
@@ -47,6 +47,8 @@
XColorItem(const XColorItem& rItem);
virtual bool operator==(const SfxPoolItem& rItem) const override;
// NameOrIndex is sortable, but we are not
virtual bool IsSortable() const override { return false; }
virtual SfxPoolItem* Clone(SfxItemPool* pPool = nullptr) const override;
const Color& GetColorValue() const;
diff --git a/include/svx/xflgrit.hxx b/include/svx/xflgrit.hxx
index 159c686..8e931cb 100644
--- a/include/svx/xflgrit.hxx
+++ b/include/svx/xflgrit.hxx
@@ -42,6 +42,8 @@
XFillGradientItem(const XFillGradientItem& rItem);
virtual bool operator==(const SfxPoolItem& rItem) const override;
// NameOrIndex is sortable, but we are not
virtual bool IsSortable() const override { return false; }
virtual SfxPoolItem* Clone(SfxItemPool* pPool = nullptr) const override;
virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
diff --git a/include/svx/xflhtit.hxx b/include/svx/xflhtit.hxx
index a81e723..1f85088 100644
--- a/include/svx/xflhtit.hxx
+++ b/include/svx/xflhtit.hxx
@@ -41,6 +41,8 @@
XFillHatchItem(const XFillHatchItem& rItem);
virtual bool operator==(const SfxPoolItem& rItem) const override;
// NameOrIndex is sortable, but we are not
virtual bool IsSortable() const override { return false; }
virtual SfxPoolItem* Clone(SfxItemPool* pPool = nullptr) const override;
virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
diff --git a/include/svx/xlndsit.hxx b/include/svx/xlndsit.hxx
index a19e5060..8afc715 100644
--- a/include/svx/xlndsit.hxx
+++ b/include/svx/xlndsit.hxx
@@ -42,6 +42,8 @@
XLineDashItem(const XLineDashItem& rItem);
virtual bool operator==(const SfxPoolItem& rItem) const override;
// NameOrIndex is sortable, but we are not
virtual bool IsSortable() const override { return false; }
virtual SfxPoolItem* Clone(SfxItemPool* pPool = nullptr) const override;
virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
diff --git a/include/svx/xlnedit.hxx b/include/svx/xlnedit.hxx
index b24d482..2896138 100644
--- a/include/svx/xlnedit.hxx
+++ b/include/svx/xlnedit.hxx
@@ -41,6 +41,8 @@
XLineEndItem(const XLineEndItem& rItem);
virtual bool operator==(const SfxPoolItem& rItem) const override;
// NameOrIndex is sortable, but we are not
virtual bool IsSortable() const override { return false; }
virtual SfxPoolItem* Clone(SfxItemPool* pPool = nullptr) const override;
virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
diff --git a/include/svx/xlnstit.hxx b/include/svx/xlnstit.hxx
index 3e9c402..c37cfc3 100644
--- a/include/svx/xlnstit.hxx
+++ b/include/svx/xlnstit.hxx
@@ -41,6 +41,8 @@
XLineStartItem(const XLineStartItem& rItem);
virtual bool operator==(const SfxPoolItem& rItem) const override;
// NameOrIndex is sortable, but we are not
virtual bool IsSortable() const override { return false; }
virtual SfxPoolItem* Clone(SfxItemPool* pPool = nullptr) const override;
virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override;
diff --git a/svl/source/items/custritm.cxx b/svl/source/items/custritm.cxx
index b132456..4cba917 100644
--- a/svl/source/items/custritm.cxx
+++ b/svl/source/items/custritm.cxx
@@ -28,13 +28,20 @@
// virtual
bool CntUnencodedStringItem::operator ==(const SfxPoolItem & rItem) const
{
DBG_ASSERT(dynamic_cast<const CntUnencodedStringItem*>( &rItem ) != nullptr,
"CntUnencodedStringItem::operator ==(): Bad type");
assert(dynamic_cast<const CntUnencodedStringItem*>( &rItem ));
return m_aValue
== static_cast< const CntUnencodedStringItem * >(&rItem)->
m_aValue;
}
bool CntUnencodedStringItem::operator<(const SfxPoolItem & rItem) const
{
assert(dynamic_cast<const CntUnencodedStringItem*>( &rItem ));
return m_aValue
< static_cast< const CntUnencodedStringItem * >(&rItem)->
m_aValue;
}
// virtual
bool CntUnencodedStringItem::GetPresentation(SfxItemPresentation, MapUnit,
MapUnit, OUString & rText,