sw/inc/calbck.hxx | 40 +++++++++++++++++----------------------- sw/inc/switerator.hxx | 2 -- sw/source/core/attr/calbck.cxx | 31 +++++++++---------------------- 3 files changed, 26 insertions(+), 47 deletions(-)
New commits: commit e3167924fd28c8b854f23139dbf49f53e6282ef7 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Sun Mar 15 04:50:32 2015 +0100 make SwClientIter::GoStart/GoEnd private Change-Id: I0c0f84d110e8ea4f84404a8ca17d0c982c9200c4 diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx index 7fc2e6d..2141653 100644 --- a/sw/inc/calbck.hxx +++ b/sw/inc/calbck.hxx @@ -243,10 +243,8 @@ protected: class SwClientIter SAL_FINAL : public sw::Ring<SwClientIter> { - friend SwClient* SwModify::Remove(SwClient*); ///< for pointer adjustments - friend void SwModify::Add(SwClient*); ///< for pointer adjustments + friend class SwModify; template<typename E, typename S> friend class SwIterator; ///< for typed interation - friend void SwModify::ModifyBroadcast( const SfxPoolItem*, const SfxPoolItem*, TypeId); ///< for typed iteration const SwModify& m_rRoot; @@ -259,6 +257,22 @@ class SwClientIter SAL_FINAL : public sw::Ring<SwClientIter> SwClient* m_pPosition; SwClient* GetLeftOfPos() { return static_cast<SwClient*>(m_pPosition->m_pLeft); } SwClient* GetRighOfPos() { return static_cast<SwClient*>(m_pPosition->m_pRight); } + SwClient* GoStart() + { + if((m_pPosition = const_cast<SwClient*>(m_rRoot.GetDepends()))) + while( m_pPosition->m_pLeft ) + m_pPosition = static_cast<SwClient*>(m_pPosition->m_pLeft); + return m_pCurrent = m_pPosition; + } + SwClient* GoEnd() + { + if(!m_pPosition) + m_pPosition = const_cast<SwClient*>(m_rRoot.GetDepends()); + if(m_pPosition) + while( m_pPosition->m_pRight ) + m_pPosition = static_cast<SwClient*>(m_pPosition->m_pRight); + return m_pCurrent = m_pPosition; + } static SW_DLLPUBLIC SwClientIter* our_pClientIters; @@ -286,22 +300,6 @@ public: m_pPosition = static_cast<SwClient*>(m_pPosition->m_pRight); return m_pCurrent = m_pPosition; } - SwClient* GoStart() - { - if((m_pPosition = const_cast<SwClient*>(m_rRoot.GetDepends()))) - while( m_pPosition->m_pLeft ) - m_pPosition = static_cast<SwClient*>(m_pPosition->m_pLeft); - return m_pCurrent = m_pPosition; - } - SwClient* GoEnd() - { - if(!m_pPosition) - m_pPosition = const_cast<SwClient*>(m_rRoot.GetDepends()); - if(m_pPosition) - while( m_pPosition->m_pRight ) - m_pPosition = static_cast<SwClient*>(m_pPosition->m_pRight); - return m_pCurrent = m_pPosition; - } // returns the current SwClient object, wether it is still a client or not SwClient& operator*() const commit a21948bddfefa8554fb2d468616ec1bfda128e9d Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Sun Mar 15 04:49:36 2015 +0100 refactor iteration Change-Id: Ifc2e190fa54e2e1e8992ae7e4e3ff15465b6db3d diff --git a/sw/source/core/attr/calbck.cxx b/sw/source/core/attr/calbck.cxx index 636ee94..0ea5389 100644 --- a/sw/source/core/attr/calbck.cxx +++ b/sw/source/core/attr/calbck.cxx @@ -75,12 +75,8 @@ SwModify::~SwModify() // forget me so that they don't try to get removed from my list // later when they also get destroyed SwClientIter aIter( *this ); - SwClient* p = aIter.GoStart(); - while ( p ) - { - p->pRegisteredIn = nullptr; - p = ++aIter; - } + for(aIter.GoStart(); aIter; ++aIter) + aIter->pRegisteredIn = nullptr; } else { @@ -136,22 +132,13 @@ void SwModify::NotifyClients( const SfxPoolItem* pOldValue, const SfxPoolItem* p bool SwModify::GetInfo( SfxPoolItem& rInfo ) const { - bool bRet = true; // means: continue with next - - if( pRoot ) - { - SwClientIter aIter( *(SwModify*)this ); - - SwClient* pLast = aIter.GoStart(); - if( pLast ) - { - while( ( bRet = pLast->GetInfo( rInfo ) ) && - nullptr != ( pLast = ++aIter ) ) - ; - } - } - - return bRet; + if(!pRoot) + return true; + SwClientIter aIter( *const_cast<SwModify*>(this) ); + for(aIter.GoStart(); aIter; ++aIter) + if(!aIter->GetInfo( rInfo )) + return false; + return true; } void SwModify::Add( SwClient* pDepend ) commit 3b4e5fd012be12478fed5c55f53cfd9cc4747a0e Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Sun Mar 15 02:45:08 2015 +0100 get rid of SearchType - lets hope nobody counts on ModifyBroadcast having persistent sideeffects Change-Id: Ie85feb71732c4a81fba22db8cf62ec7fe30d0cfa diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx index 4c76fe9..7fc2e6d 100644 --- a/sw/inc/calbck.hxx +++ b/sw/inc/calbck.hxx @@ -260,15 +260,11 @@ class SwClientIter SAL_FINAL : public sw::Ring<SwClientIter> SwClient* GetLeftOfPos() { return static_cast<SwClient*>(m_pPosition->m_pLeft); } SwClient* GetRighOfPos() { return static_cast<SwClient*>(m_pPosition->m_pRight); } - // iterator can be limited to return only SwClient objects of a certain type - TypeId m_aSearchType; - static SW_DLLPUBLIC SwClientIter* our_pClientIters; public: SwClientIter( const SwModify& rModify ) : m_rRoot(rModify) - , m_aSearchType(nullptr) { MoveTo(our_pClientIters); our_pClientIters = this; diff --git a/sw/inc/switerator.hxx b/sw/inc/switerator.hxx index 499c6e18..693393e 100644 --- a/sw/inc/switerator.hxx +++ b/sw/inc/switerator.hxx @@ -30,7 +30,6 @@ public: SwIterator( const TSource& rSrc ) : aClientIter(rSrc) { assert(TElementType::IsOf( TYPE(SwClient) )); } TElementType* First() { - aClientIter.m_aSearchType = TYPE(TElementType); aClientIter.GoStart(); if(!aClientIter.m_pPosition) return nullptr; @@ -39,7 +38,6 @@ public: } TElementType* Last() { - aClientIter.m_aSearchType = TYPE(TElementType); aClientIter.GoEnd(); if(!aClientIter.m_pPosition) return nullptr; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits