[Libreoffice-commits] core.git: include/svl sfx2/source svl/source
Jochen Nitschke
j.nitschke+logerrit at ok.de
Thu Sep 22 19:07:05 UTC 2016
include/svl/poolitem.hxx | 19 ++++++++-------
sfx2/source/control/itemdel.cxx | 2 -
svl/source/items/itempool.cxx | 12 ++++-----
svl/source/items/poolio.cxx | 50 +++++++++++++++++++++++-----------------
svl/source/items/poolitem.cxx | 4 +--
5 files changed, 48 insertions(+), 39 deletions(-)
New commits:
commit a49748caf2bc3d236862eef5d26383212d35e648
Author: Jochen Nitschke <j.nitschke+logerrit at ok.de>
Date: Thu Sep 22 16:02:24 2016 +0200
convert SfxItemKind to scoped enum
reduced size because it is stored in widely used SfxPoolItem.
converted 'if' chains to 'switch case'
Change-Id: Id9b5e375b681c88e8c91c561abd1a50610aa4815
Reviewed-on: https://gerrit.libreoffice.org/29186
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/include/svl/poolitem.hxx b/include/svl/poolitem.hxx
index b758849..cf7c96e 100644
--- a/include/svl/poolitem.hxx
+++ b/include/svl/poolitem.hxx
@@ -34,11 +34,12 @@
class IntlWrapper;
class SvStream;
-enum SfxItemKind {
- SFX_ITEMS_NONE,
- SFX_ITEMS_DELETEONIDLE,
- SFX_ITEMS_STATICDEFAULT,
- SFX_ITEMS_POOLDEFAULT
+enum class SfxItemKind : sal_Int8
+{
+ NONE,
+ DeleteOnIdle,
+ StaticDefault,
+ PoolDefault
};
#define SFX_ITEMS_OLD_MAXREF 0xffef
@@ -180,7 +181,7 @@ private:
inline void SfxPoolItem::SetRefCount( sal_uLong n )
{
m_nRefCount = n;
- m_nKind = SFX_ITEMS_NONE;
+ m_nKind = SfxItemKind::NONE;
}
inline void SfxPoolItem::SetKind( SfxItemKind n )
@@ -206,17 +207,17 @@ inline sal_uLong SfxPoolItem::ReleaseRef( sal_uLong n ) const
inline bool IsPoolDefaultItem(const SfxPoolItem *pItem )
{
- return pItem && pItem->GetKind() == SFX_ITEMS_POOLDEFAULT;
+ return pItem && pItem->GetKind() == SfxItemKind::PoolDefault;
}
inline bool IsStaticDefaultItem(const SfxPoolItem *pItem )
{
- return pItem && pItem->GetKind() == SFX_ITEMS_STATICDEFAULT;
+ return pItem && pItem->GetKind() == SfxItemKind::StaticDefault;
}
inline bool IsDefaultItem( const SfxPoolItem *pItem )
{
- return pItem && (pItem->GetKind() == SFX_ITEMS_STATICDEFAULT || pItem->GetKind() == SFX_ITEMS_POOLDEFAULT);
+ return pItem && (pItem->GetKind() == SfxItemKind::StaticDefault || pItem->GetKind() == SfxItemKind::PoolDefault);
}
inline bool IsPooledItem( const SfxPoolItem *pItem )
diff --git a/sfx2/source/control/itemdel.cxx b/sfx2/source/control/itemdel.cxx
index 1ac8ab8..096ab37 100644
--- a/sfx2/source/control/itemdel.cxx
+++ b/sfx2/source/control/itemdel.cxx
@@ -48,7 +48,7 @@ SfxItemDisruptor_Impl::SfxItemDisruptor_Impl(SfxPoolItem *const pItemToDisrupt)
m_Idle.SetPriority(SchedulerPriority::DEFAULT_IDLE);
DBG_ASSERT( 0 == pItem->GetRefCount(), "disrupting pooled item" );
- pItem->SetKind( SFX_ITEMS_DELETEONIDLE );
+ pItem->SetKind(SfxItemKind::DeleteOnIdle);
}
void SfxItemDisruptor_Impl::LaunchDeleteOnIdle()
diff --git a/svl/source/items/itempool.cxx b/svl/source/items/itempool.cxx
index 330d2f7..6f4a6f2 100644
--- a/svl/source/items/itempool.cxx
+++ b/svl/source/items/itempool.cxx
@@ -228,7 +228,7 @@ SfxItemPool::SfxItemPool
for ( sal_uInt16 n = 0; n <= pImpl->mnEnd - pImpl->mnStart; ++n )
{
(*( ppDefaults + n )) = (*( rPool.pImpl->ppStaticDefaults + n ))->Clone(this);
- (*( ppDefaults + n ))->SetKind( SFX_ITEMS_STATICDEFAULT );
+ (*( ppDefaults + n ))->SetKind(SfxItemKind::StaticDefault);
}
SetDefaults( ppDefaults );
@@ -241,7 +241,7 @@ SfxItemPool::SfxItemPool
if (rPool.pImpl->maPoolDefaults[n])
{
pImpl->maPoolDefaults[n] = rPool.pImpl->maPoolDefaults[n]->Clone(this); //resets kind
- pImpl->maPoolDefaults[n]->SetKind(SFX_ITEMS_POOLDEFAULT);
+ pImpl->maPoolDefaults[n]->SetKind(SfxItemKind::PoolDefault);
}
// Copy Version map
@@ -263,7 +263,7 @@ void SfxItemPool::SetDefaults( SfxPoolItem **pDefaults )
DBG_ASSERT( !pImpl->ppStaticDefaults, "already have Defaults" );
pImpl->ppStaticDefaults = pDefaults;
- //! if ( (*ppStaticDefaults)->GetKind() != SFX_ITEMS_STATICDEFAULT )
+ //! if ((*ppStaticDefaults)->GetKind() != SfxItemKind::StaticDefault)
//! FIXME: Probably doesn't work with SetItems at the end
{
DBG_ASSERT( (*pImpl->ppStaticDefaults)->GetRefCount() == 0 ||
@@ -273,7 +273,7 @@ void SfxItemPool::SetDefaults( SfxPoolItem **pDefaults )
{
assert(((*(pImpl->ppStaticDefaults + n))->Which() == n + pImpl->mnStart)
&& "static defaults not sorted" );
- (*( pImpl->ppStaticDefaults + n ))->SetKind( SFX_ITEMS_STATICDEFAULT );
+ (*( pImpl->ppStaticDefaults + n ))->SetKind(SfxItemKind::StaticDefault);
DBG_ASSERT( !(pImpl->maPoolItems[n]), "defaults with setitems with items?!" );
}
}
@@ -568,7 +568,7 @@ void SfxItemPool::SetPoolDefaultItem(const SfxPoolItem &rItem)
auto& rOldDefault =
pImpl->maPoolDefaults[GetIndex_Impl(rItem.Which())];
SfxPoolItem *pNewDefault = rItem.Clone(this);
- pNewDefault->SetKind(SFX_ITEMS_POOLDEFAULT);
+ pNewDefault->SetKind(SfxItemKind::PoolDefault);
if (rOldDefault)
{
rOldDefault->SetRefCount(0);
@@ -627,7 +627,7 @@ const SfxPoolItem& SfxItemPool::Put( const SfxPoolItem& rItem, sal_uInt16 nWhich
if (bSID)
{
assert((rItem.Which() != nWhich ||
- !IsDefaultItem(&rItem) || rItem.GetKind() == SFX_ITEMS_DELETEONIDLE)
+ !IsDefaultItem(&rItem) || rItem.GetKind() == SfxItemKind::DeleteOnIdle)
&& "a non Pool Item is Default?!");
SfxPoolItem *pPoolItem = rItem.Clone(pImpl->mpMaster);
pPoolItem->SetWhich(nWhich);
diff --git a/svl/source/items/poolio.cxx b/svl/source/items/poolio.cxx
index 0fa4263..ec23690 100644
--- a/svl/source/items/poolio.cxx
+++ b/svl/source/items/poolio.cxx
@@ -41,32 +41,40 @@ const SfxItemPool* SfxItemPool::GetStoringPool()
return pStoringPool_;
}
-static sal_uInt16 convertSfxItemKindToUInt16(SfxItemKind x)
+static sal_uInt16 convertSfxItemKindToUInt16(SfxItemKind eKind)
{
- if ( x == SFX_ITEMS_NONE )
+ switch (eKind)
+ {
+ case SfxItemKind::NONE:
return 0;
- if ( x == SFX_ITEMS_DELETEONIDLE )
+ case SfxItemKind::DeleteOnIdle:
return 0xfffd;
- if ( x == SFX_ITEMS_STATICDEFAULT )
+ case SfxItemKind::StaticDefault:
return 0xfffe;
- if ( x == SFX_ITEMS_POOLDEFAULT )
+ case SfxItemKind::PoolDefault:
return 0xffff;
- assert(false);
- abort();
+ default:
+ assert("unknown SfxItemKind");
+ return 0;
+ }
}
-static SfxItemKind convertUInt16ToSfxItemKind(sal_uInt16 x)
+static SfxItemKind convertUInt16ToSfxItemKind(sal_uInt16 nRefCnt)
{
- if ( x == 0 )
- return SFX_ITEMS_NONE;
- if ( x == 0xfffd )
- return SFX_ITEMS_DELETEONIDLE;
- if ( x == 0xfffe )
- return SFX_ITEMS_STATICDEFAULT;
- if ( x == 0xffff )
- return SFX_ITEMS_POOLDEFAULT;
- assert(false);
- abort();
+ switch (nRefCnt)
+ {
+ case 0:
+ return SfxItemKind::NONE;
+ case 0xfffd:
+ return SfxItemKind::DeleteOnIdle;
+ case 0xfffe:
+ return SfxItemKind::StaticDefault;
+ case 0xffff:
+ return SfxItemKind::PoolDefault;
+ default:
+ assert(false);
+ abort();
+ }
}
@@ -688,7 +696,7 @@ SvStream &SfxItemPool::Load(SvStream &rStream)
SfxPoolItem *pItem =
( *( pImpl->ppStaticDefaults + GetIndex_Impl(nWhich) ) )
->Create( rStream, nVersion );
- pItem->SetKind( SFX_ITEMS_POOLDEFAULT );
+ pItem->SetKind( SfxItemKind::PoolDefault );
pImpl->maPoolDefaults[GetIndex_Impl(nWhich)] = pItem;
}
}
@@ -851,8 +859,8 @@ const SfxPoolItem* SfxItemPool::LoadSurrogate
* Saves a surrogate for '*pItem' in 'rStream'
*
* @returns sal_True: a real surrogates has been saved
- * SFX_ITEMS_NULL for 'pItem==0', SFX_ITEMS_STATICDEFAULT
- * and SFX_ITEMS_POOLDEFAULT are 'real' surrogates
+ * SFX_ITEMS_NULL for 'pItem==0', SfxItemKind::StaticDefault
+ * and SfxItemKind::PoolDefault are 'real' surrogates
*
* @returns sal_False: a dummy surrogate (SFX_ITEMS_DIRECT) has been saved;
* the actual Item needs to be saved right after it on
diff --git a/svl/source/items/poolitem.cxx b/svl/source/items/poolitem.cxx
index f11a290..d6bfea4 100644
--- a/svl/source/items/poolitem.cxx
+++ b/svl/source/items/poolitem.cxx
@@ -38,7 +38,7 @@ const char* pw5 = "Wow! 10.000.000 items!";
SfxPoolItem::SfxPoolItem(sal_uInt16 const nWhich)
: m_nRefCount(0)
, m_nWhich(nWhich)
- , m_nKind(SFX_ITEMS_NONE)
+ , m_nKind(SfxItemKind::NONE)
{
DBG_ASSERT(nWhich <= SHRT_MAX, "invalid WhichId");
#if OSL_DEBUG_LEVEL > 0
@@ -75,7 +75,7 @@ SfxPoolItem::SfxPoolItem(sal_uInt16 const nWhich)
SfxPoolItem::SfxPoolItem( const SfxPoolItem& rCpy )
: m_nRefCount(0) // don't copy that
, m_nWhich(rCpy.m_nWhich)
- , m_nKind( SFX_ITEMS_NONE )
+ , m_nKind(SfxItemKind::NONE)
{
#if OSL_DEBUG_LEVEL > 0
++nItemCount;
More information about the Libreoffice-commits
mailing list