svl/source/items/itemset.cxx |   40 ++++++++--------------------------------
 1 file changed, 8 insertions(+), 32 deletions(-)

New commits:
commit 1738f106bd73fa2cf153905fc28b198d6f0cf211
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Tue Jul 20 09:52:22 2021 +0300
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Jul 20 09:32:08 2021 +0200

    Simplify SfxItemSet ctors and TotalCount using delegation
    
    Change-Id: I6f40cf80bcd6c8a53f5d25f99688526d4b946bdf
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119238
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/svl/source/items/itemset.cxx b/svl/source/items/itemset.cxx
index 55804cdfe723..70ec5d1c825f 100644
--- a/svl/source/items/itemset.cxx
+++ b/svl/source/items/itemset.cxx
@@ -41,18 +41,12 @@
  *
  * For Sfx programmers: an SfxItemSet constructed in this way cannot
  * contain any Items with SlotIds as Which values.
+ *
+ * Don't create ItemSets with full range before FreezeIdRanges()!
  */
 SfxItemSet::SfxItemSet(SfxItemPool& rPool)
-    : m_pPool( &rPool )
-    , m_pParent(nullptr)
-    , m_nCount(0)
+    : SfxItemSet(rPool, rPool.GetFrozenIdRanges())
 {
-    m_pWhichRanges = m_pPool->GetFrozenIdRanges();
-    assert( !m_pWhichRanges.empty() && "don't create ItemSets with full range 
before FreezeIdRanges()" );
-    assert(svl::detail::validRanges2(m_pWhichRanges));
-
-    const sal_uInt16 nSize = TotalCount();
-    m_pItems.reset(new const SfxPoolItem*[nSize]{});
 }
 
 SfxItemSet::SfxItemSet( SfxItemPool& rPool, SfxAllItemSetFlag )
@@ -96,27 +90,14 @@ SfxItemSet::SfxItemSet(
     assert(svl::detail::validRanges2(m_pWhichRanges));
 }
 
-SfxItemSet::SfxItemSet(
-    SfxItemPool & pool, const WhichRangesContainer& wids):
-    m_pPool(&pool), m_pParent(nullptr),
-    m_pWhichRanges(wids),
-    m_nCount(0)
+SfxItemSet::SfxItemSet(SfxItemPool& pool, const WhichRangesContainer& wids)
+    : SfxItemSet(pool, wids, svl::detail::CountRanges(wids))
 {
-    assert(wids.size() != 0);
-    assert(svl::detail::validRanges2(m_pWhichRanges));
-    std::size_t size = svl::detail::CountRanges(wids);
-    m_pItems.reset( new SfxPoolItem const *[size]{} );
 }
 
-SfxItemSet::SfxItemSet(
-    SfxItemPool & pool, WhichRangesContainer&& wids):
-    m_pPool(&pool), m_pParent(nullptr),
-    m_pWhichRanges(std::move(wids)),
-    m_nCount(0)
+SfxItemSet::SfxItemSet(SfxItemPool& pool, WhichRangesContainer&& wids)
+    : SfxItemSet(pool, wids, svl::detail::CountRanges(wids))
 {
-    assert(svl::detail::validRanges2(m_pWhichRanges));
-    std::size_t size = svl::detail::CountRanges(m_pWhichRanges);
-    m_pItems.reset( new SfxPoolItem const *[size]{} );
 }
 
 SfxItemSet::SfxItemSet( const SfxItemSet& rASet )
@@ -800,12 +781,7 @@ void SfxItemSet::Changed( const SfxPoolItem&, const 
SfxPoolItem& )
 
 sal_uInt16 SfxItemSet::TotalCount() const
 {
-    sal_uInt16 nRet = 0;
-    for (auto const & pPtr : m_pWhichRanges)
-    {
-        nRet += ( pPtr.second - pPtr.first ) + 1;
-    }
-    return nRet;
+    return svl::detail::CountRanges(m_pWhichRanges);
 }
 
 /**
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to