diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2015-03-23 10:20:54 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2015-03-23 10:54:25 +0100 |
commit | 5fb7f222f51b93a9dfffa0fe211a5b3e0c83757e (patch) | |
tree | 8d537b6d42022e064fe8cc7d085d8d91cfd659fc /sw | |
parent | 808e3553d81b059698f83904a5038584c33be379 (diff) |
Revert "make ClientIteratorBase only know about WriterListener"
This reverts commit 0bf4e6e21101a66bb63778ab49006ee90c16ea94,
~SwFmt in sw/source/core/attr/format.cxx contains
SwClient* pDepend = (SwClient*)GetDepends();
...
that is unclear to me how to adapt to this commit's changes.
Diffstat (limited to 'sw')
-rw-r--r-- | sw/inc/calbck.hxx | 47 | ||||
-rw-r--r-- | sw/source/core/fields/expfld.cxx | 2 |
2 files changed, 24 insertions, 25 deletions
diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx index 6ad31166440c..6a121ef62cfb 100644 --- a/sw/inc/calbck.hxx +++ b/sw/inc/calbck.hxx @@ -98,7 +98,6 @@ class SW_DLLPUBLIC SwClient : ::sw::WriterListener // avoids making the details of the linked list and the callback method public friend class SwModify; friend class sw::ClientIteratorBase; - template<typename E, typename S> friend class SwIterator; SwModify *pRegisteredIn; ///< event source @@ -193,7 +192,7 @@ public: void Add(SwClient *pDepend); SwClient* Remove(SwClient *pDepend); - const sw::WriterListener* GetDepends() const { return pRoot; } + const SwClient* GetDepends() const { return static_cast<SwClient*>(pRoot); } // get information about attribute virtual bool GetInfo( SfxPoolItem& ) const SAL_OVERRIDE; @@ -251,11 +250,11 @@ namespace sw protected: const SwModify& m_rRoot; // the current object in an iteration - WriterListener* m_pCurrent; + SwClient* m_pCurrent; // in case the current object is already removed, the next object in the list // is marked down to become the current object in the next step // this is necessary because iteration requires access to members of the current object - WriterListener* m_pPosition; + SwClient* m_pPosition; static SW_DLLPUBLIC ClientIteratorBase* our_pClientIters; ClientIteratorBase( const SwModify& rModify ) @@ -263,15 +262,15 @@ namespace sw { MoveTo(our_pClientIters); our_pClientIters = this; - m_pCurrent = m_pPosition = const_cast<WriterListener*>(m_rRoot.GetDepends()); + m_pCurrent = m_pPosition = const_cast<SwClient*>(m_rRoot.GetDepends()); } - WriterListener* GetLeftOfPos() { return m_pPosition->m_pLeft; } - WriterListener* GetRightOfPos() { return m_pPosition->m_pRight; } - WriterListener* GoStart() + SwClient* GetLeftOfPos() { return static_cast<SwClient*>(m_pPosition->m_pLeft); } + SwClient* GetRightOfPos() { return static_cast<SwClient*>(m_pPosition->m_pRight); } + SwClient* GoStart() { - if((m_pPosition = const_cast<WriterListener*>(m_rRoot.GetDepends()))) + if((m_pPosition = const_cast<SwClient*>(m_rRoot.GetDepends()))) while( m_pPosition->m_pLeft ) - m_pPosition = m_pPosition->m_pLeft; + m_pPosition = static_cast<SwClient*>(m_pPosition->m_pLeft); return m_pCurrent = m_pPosition; } ~ClientIteratorBase() SAL_OVERRIDE @@ -286,7 +285,7 @@ namespace sw // SwModify::Add() asserts this bool IsChanged() const { return m_pPosition != m_pCurrent; } // ensures the iterator to point at a current client - WriterListener* Sync() { return m_pCurrent = m_pPosition; } + SwClient* Sync() { return m_pCurrent = m_pPosition; } }; } @@ -307,29 +306,29 @@ public: TElementType* Last() { if(!m_pPosition) - m_pPosition = const_cast<sw::WriterListener*>(m_rRoot.GetDepends()); + m_pPosition = const_cast<SwClient*>(m_rRoot.GetDepends()); if(!m_pPosition) - return PTR_CAST(TElementType,static_cast<SwClient*>(Sync())); + return PTR_CAST(TElementType,Sync()); while(GetRightOfPos()) m_pPosition = GetRightOfPos(); - if(static_cast<SwClient*>(m_pPosition)->IsA(TYPE(TElementType))) - return PTR_CAST(TElementType,static_cast<SwClient*>(Sync())); + if(m_pPosition->IsA(TYPE(TElementType))) + return PTR_CAST(TElementType,Sync()); return Previous(); } TElementType* Next() { if(!IsChanged()) m_pPosition = GetRightOfPos(); - while(m_pPosition && !static_cast<SwClient*>(m_pPosition)->IsA( TYPE(TElementType) ) ) + while(m_pPosition && !m_pPosition->IsA( TYPE(TElementType) ) ) m_pPosition = GetRightOfPos(); - return PTR_CAST(TElementType,static_cast<SwClient*>(Sync())); + return PTR_CAST(TElementType,Sync()); } TElementType* Previous() { m_pPosition = GetLeftOfPos(); - while(m_pPosition && !static_cast<SwClient*>(m_pPosition)->IsA( TYPE(TElementType) ) ) + while(m_pPosition && !m_pPosition->IsA( TYPE(TElementType) ) ) m_pPosition = GetLeftOfPos(); - return PTR_CAST(TElementType,static_cast<SwClient*>(Sync())); + return PTR_CAST(TElementType,Sync()); } using sw::ClientIteratorBase::IsChanged; }; @@ -340,27 +339,27 @@ template< typename TSource > class SwIterator<SwClient, TSource> SAL_FINAL : pri public: SwIterator( const TSource& rSrc ) : sw::ClientIteratorBase(rSrc) {} SwClient* First() - { return static_cast<SwClient*>(GoStart()); } + { return GoStart(); } SwClient* Last() { if(!m_pPosition) - m_pPosition = const_cast<sw::WriterListener*>(m_rRoot.GetDepends()); + m_pPosition = const_cast<SwClient*>(m_rRoot.GetDepends()); if(!m_pPosition) return m_pCurrent = nullptr; while(GetRightOfPos()) m_pPosition = GetRightOfPos(); - return static_cast<SwClient*>(Sync()); + return Sync(); } SwClient* Next() { if(!IsChanged()) m_pPosition = GetRightOfPos(); - return static_cast<SwClient*>(Sync()); + return Sync(); } SwClient* Previous() { m_pPosition = GetLeftOfPos(); - return static_cast<SwClient*>(Sync()); + return Sync(); } using sw::ClientIteratorBase::IsChanged; }; diff --git a/sw/source/core/fields/expfld.cxx b/sw/source/core/fields/expfld.cxx index 80b9acecc5fe..24ba569756fd 100644 --- a/sw/source/core/fields/expfld.cxx +++ b/sw/source/core/fields/expfld.cxx @@ -528,7 +528,7 @@ sal_uLong SwSetExpFieldType::GetSeqFormat() if( !GetDepends() ) return SVX_NUM_ARABIC; - const SwField *pFld = SwIterator<SwFmtFld,SwSetExpFieldType>(*this).First()->GetField(); + const SwField *pFld = static_cast<const SwFmtFld*>(GetDepends())->GetField(); return pFld->GetFormat(); } |