[Libreoffice-commits] core.git: 12 commits - sw/inc sw/source

Bjoern Michaelsen bjoern.michaelsen at canonical.com
Thu Mar 19 15:42:18 PDT 2015


 sw/inc/calbck.hxx                                |  191 ++++++++++++++---------
 sw/inc/switerator.hxx                            |   68 --------
 sw/source/core/access/accmap.cxx                 |    2 
 sw/source/core/attr/calbck.cxx                   |   26 +--
 sw/source/core/attr/cellatr.cxx                  |    2 
 sw/source/core/crsr/annotationmark.cxx           |    2 
 sw/source/core/crsr/crstrvl.cxx                  |    2 
 sw/source/core/doc/DocumentFieldsManager.cxx     |    2 
 sw/source/core/doc/DocumentStatisticsManager.cxx |    2 
 sw/source/core/doc/doc.cxx                       |    2 
 sw/source/core/doc/docdraw.cxx                   |    2 
 sw/source/core/doc/docfld.cxx                    |    2 
 sw/source/core/doc/docfly.cxx                    |    2 
 sw/source/core/doc/docglbl.cxx                   |    2 
 sw/source/core/doc/docnum.cxx                    |    2 
 sw/source/core/doc/doctxm.cxx                    |    2 
 sw/source/core/doc/fmtcol.cxx                    |    2 
 sw/source/core/doc/htmltbl.cxx                   |    2 
 sw/source/core/doc/tblrwcl.cxx                   |    2 
 sw/source/core/docnode/ndtbl.cxx                 |    2 
 sw/source/core/docnode/ndtbl1.cxx                |    2 
 sw/source/core/docnode/node.cxx                  |    2 
 sw/source/core/docnode/node2lay.cxx              |    2 
 sw/source/core/docnode/section.cxx               |    2 
 sw/source/core/docnode/swbaslnk.cxx              |    2 
 sw/source/core/draw/dcontact.cxx                 |    2 
 sw/source/core/edit/edfld.cxx                    |    2 
 sw/source/core/edit/edfldexp.cxx                 |    2 
 sw/source/core/edit/editsh.cxx                   |    2 
 sw/source/core/fields/authfld.cxx                |    2 
 sw/source/core/fields/dbfld.cxx                  |    2 
 sw/source/core/fields/ddefld.cxx                 |    2 
 sw/source/core/fields/docufld.cxx                |    2 
 sw/source/core/fields/expfld.cxx                 |    2 
 sw/source/core/fields/fldbas.cxx                 |    2 
 sw/source/core/fields/fldlst.cxx                 |    2 
 sw/source/core/fields/postithelper.cxx           |    2 
 sw/source/core/fields/reffld.cxx                 |    2 
 sw/source/core/fields/tblcalc.cxx                |    2 
 sw/source/core/frmedt/feshview.cxx               |    2 
 sw/source/core/frmedt/tblsel.cxx                 |    2 
 sw/source/core/layout/atrfrm.cxx                 |    2 
 sw/source/core/layout/colfrm.cxx                 |    2 
 sw/source/core/layout/findfrm.cxx                |    2 
 sw/source/core/layout/flowfrm.cxx                |    2 
 sw/source/core/layout/fly.cxx                    |    2 
 sw/source/core/layout/flypos.cxx                 |    2 
 sw/source/core/layout/frmtool.cxx                |    2 
 sw/source/core/layout/ftnfrm.cxx                 |    2 
 sw/source/core/layout/movedfwdfrmsbyobjpos.cxx   |    2 
 sw/source/core/layout/pagechg.cxx                |    2 
 sw/source/core/layout/pagedesc.cxx               |    2 
 sw/source/core/layout/paintfrm.cxx               |    2 
 sw/source/core/layout/softpagebreak.cxx          |    2 
 sw/source/core/layout/tabfrm.cxx                 |    2 
 sw/source/core/table/swnewtable.cxx              |    2 
 sw/source/core/table/swtable.cxx                 |    2 
 sw/source/core/text/EnhancedPDFExportHelper.cxx  |    2 
 sw/source/core/text/itratr.cxx                   |    2 
 sw/source/core/text/porlay.cxx                   |    2 
 sw/source/core/text/txtdrop.cxx                  |    2 
 sw/source/core/text/txtfrm.cxx                   |    2 
 sw/source/core/tox/tox.cxx                       |    2 
 sw/source/core/txtnode/atrflyin.cxx              |    2 
 sw/source/core/txtnode/atrftn.cxx                |    2 
 sw/source/core/txtnode/ndtxt.cxx                 |    2 
 sw/source/core/undo/unattr.cxx                   |    2 
 sw/source/core/undo/untbl.cxx                    |    2 
 sw/source/core/unocore/unocoll.cxx               |    2 
 sw/source/core/unocore/unodraw.cxx               |    2 
 sw/source/core/unocore/unofield.cxx              |    2 
 sw/source/core/unocore/unoframe.cxx              |    2 
 sw/source/core/unocore/unoobj2.cxx               |    2 
 sw/source/core/unocore/unoportenum.cxx           |    2 
 sw/source/core/unocore/unoredlines.cxx           |    2 
 sw/source/core/unocore/unotbl.cxx                |    2 
 sw/source/core/view/vnew.cxx                     |    2 
 sw/source/filter/ww8/ww8atr.cxx                  |    2 
 sw/source/filter/xml/xmltexti.cxx                |    2 
 sw/source/ui/fldui/fldpage.cxx                   |    2 
 sw/source/uibase/app/docsh.cxx                   |    2 
 sw/source/uibase/dochdl/swdtflvr.cxx             |    2 
 sw/source/uibase/docvw/PostItMgr.cxx             |    2 
 sw/source/uibase/shells/textfld.cxx              |    2 
 sw/source/uibase/uno/unotxvw.cxx                 |    2 
 85 files changed, 214 insertions(+), 235 deletions(-)

New commits:
commit 181feb38d95e25980b96c2f6802cc906410abb13
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Mar 18 16:23:19 2015 +0100

    more privacy tweaks
    
    Change-Id: Id0d81d2216692f9b596493b5a424fea656295b71

diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index d3080c7..0275c16 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -247,13 +247,18 @@ namespace sw
 {
     class ClientIteratorBase SAL_FINAL : public sw::Ring< ::sw::ClientIteratorBase >
     {
-        friend SwModify;
+        friend SwClient* SwModify::Remove(SwClient*);
+        friend void SwModify::Add(SwClient*);
         template<typename E, typename S> friend class ::SwIterator; ///< for typed interation
 
         const SwModify& m_rRoot;
-
         // the current object in an iteration
         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
+        SwClient* m_pPosition;
+        static SW_DLLPUBLIC ClientIteratorBase* our_pClientIters;
 
         ClientIteratorBase( const SwModify& rModify )
             : m_rRoot(rModify)
@@ -262,10 +267,6 @@ namespace sw
             our_pClientIters = this;
             m_pCurrent = m_pPosition = const_cast<SwClient*>(m_rRoot.GetDepends());
         }
-        // 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
-        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()
@@ -275,11 +276,6 @@ namespace sw
                     m_pPosition = static_cast<SwClient*>(m_pPosition->m_pLeft);
             return m_pCurrent = m_pPosition;
         }
-        const SwModify& GetModify() const { return m_rRoot; }
-
-        static SW_DLLPUBLIC ClientIteratorBase* our_pClientIters;
-
-    public:
         ~ClientIteratorBase() SAL_OVERRIDE
         {
             assert(our_pClientIters);
diff --git a/sw/source/core/attr/calbck.cxx b/sw/source/core/attr/calbck.cxx
index 86f2d74..ee78693 100644
--- a/sw/source/core/attr/calbck.cxx
+++ b/sw/source/core/attr/calbck.cxx
@@ -152,7 +152,7 @@ void SwModify::Add( SwClient* pDepend )
         {
             for(auto& rIter : sw::ClientIteratorBase::our_pClientIters->GetRingContainer())
             {
-                OSL_ENSURE( &rIter.GetModify() != pRoot, "Client added to active ClientIter" );
+                OSL_ENSURE( &rIter.m_rRoot != pRoot, "Client added to active ClientIter" );
             }
         }
 #endif
commit 3170b41ddcc69a2f65d8ae48352a183937badce9
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Mar 18 16:14:58 2015 +0100

    rename SwClientIter to sw::ClientIteratorBase
    
    Change-Id: I31ddba4e4b0020ed8187d67eb69353f81da8bd1c

diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index e4b93c8..d3080c7 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -64,11 +64,11 @@ class SfxHint;
 
 class SwModify;
 class SwClient;
-class SwClientIter;
 template<typename E, typename S> class SwIterator;
 
 namespace sw
 {
+    class ClientIteratorBase;
     struct LegacyModifyHint SAL_FINAL: SfxHint
     {
         LegacyModifyHint(const SfxPoolItem* pOld, const SfxPoolItem* pNew) : m_pOld(pOld), m_pNew(pNew) {};
@@ -80,7 +80,7 @@ namespace sw
     {
         friend class ::SwModify;
         friend class ::SwClient;
-        friend class ::SwClientIter;
+        friend class ::sw::ClientIteratorBase;
         private:
             WriterListener* m_pLeft;
             WriterListener* m_pRight; ///< double-linked list of other clients
@@ -99,7 +99,7 @@ class SW_DLLPUBLIC SwClient : ::sw::WriterListener
 {
     // avoids making the details of the linked list and the callback method public
     friend class SwModify;
-    friend class SwClientIter;
+    friend class sw::ClientIteratorBase;
 
     SwModify *pRegisteredIn;        ///< event source
 
@@ -243,60 +243,62 @@ protected:
         { if(m_pToTell) m_pToTell->SwClientNotifyCall(rModify, rHint); }
 };
 
-class SwClientIter SAL_FINAL : public sw::Ring<SwClientIter>
+namespace sw
 {
-    friend SwModify;
-    //friend SwClient* SwModify::Remove(SwClient*);
-    template<typename E, typename S> friend class SwIterator; ///< for typed interation
-
-    const SwModify& m_rRoot;
-
-    // the current object in an iteration
-    SwClient* m_pCurrent;
-
-    SwClientIter( const SwModify& rModify )
-        : m_rRoot(rModify)
-    {
-        MoveTo(our_pClientIters);
-        our_pClientIters = this;
-        m_pCurrent = m_pPosition = const_cast<SwClient*>(m_rRoot.GetDepends());
-    }
-    // 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
-    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;
-    }
-    const SwModify& GetModify() const { return m_rRoot; }
-
-    static SW_DLLPUBLIC SwClientIter* our_pClientIters;
-
-public:
-    ~SwClientIter() SAL_OVERRIDE
+    class ClientIteratorBase SAL_FINAL : public sw::Ring< ::sw::ClientIteratorBase >
     {
-        assert(our_pClientIters);
-        if(our_pClientIters == this)
-            our_pClientIters = unique() ? nullptr : GetNextInRing();
-        MoveTo(nullptr);
-    }
-    // return "true" if an object was removed from a client chain in iteration
-    // adding objects to a client chain in iteration is forbidden
-    // SwModify::Add() asserts this
-    bool IsChanged() const { return m_pPosition != m_pCurrent; }
-};
+        friend SwModify;
+        template<typename E, typename S> friend class ::SwIterator; ///< for typed interation
+
+        const SwModify& m_rRoot;
+
+        // the current object in an iteration
+        SwClient* m_pCurrent;
+
+        ClientIteratorBase( const SwModify& rModify )
+            : m_rRoot(rModify)
+        {
+            MoveTo(our_pClientIters);
+            our_pClientIters = this;
+            m_pCurrent = m_pPosition = const_cast<SwClient*>(m_rRoot.GetDepends());
+        }
+        // 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
+        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;
+        }
+        const SwModify& GetModify() const { return m_rRoot; }
+
+        static SW_DLLPUBLIC ClientIteratorBase* our_pClientIters;
+
+    public:
+        ~ClientIteratorBase() SAL_OVERRIDE
+        {
+            assert(our_pClientIters);
+            if(our_pClientIters == this)
+                our_pClientIters = unique() ? nullptr : GetNextInRing();
+            MoveTo(nullptr);
+        }
+        // return "true" if an object was removed from a client chain in iteration
+        // adding objects to a client chain in iteration is forbidden
+        // SwModify::Add() asserts this
+        bool IsChanged() const { return m_pPosition != m_pCurrent; }
+    };
+}
 
 template< typename TElementType, typename TSource > class SwIterator SAL_FINAL
 {
     static_assert(std::is_base_of<SwClient,TElementType>::value, "TElementType needs to be derived from SwClient");
     static_assert(std::is_base_of<SwModify,TSource>::value, "TSource needs to be derived from SwModify");
-    SwClientIter aClientIter;
+    sw::ClientIteratorBase aClientIter;
 public:
 
     SwIterator( const TSource& rSrc ) : aClientIter(rSrc) {}
@@ -341,7 +343,7 @@ public:
 template< typename TSource > class SwIterator<SwClient, TSource>
 {
     static_assert(std::is_base_of<SwModify,TSource>::value, "TSource needs to be derived from SwModify");
-    SwClientIter aClientIter;
+    sw::ClientIteratorBase aClientIter;
 public:
     SwIterator( const TSource& rSrc ) : aClientIter(rSrc) {}
     SwClient* First()
diff --git a/sw/source/core/attr/calbck.cxx b/sw/source/core/attr/calbck.cxx
index e4eb513..86f2d74 100644
--- a/sw/source/core/attr/calbck.cxx
+++ b/sw/source/core/attr/calbck.cxx
@@ -148,9 +148,9 @@ void SwModify::Add( SwClient* pDepend )
     if(pDepend->pRegisteredIn != this )
     {
 #if OSL_DEBUG_LEVEL > 0
-        if(SwClientIter::our_pClientIters)
+        if(sw::ClientIteratorBase::our_pClientIters)
         {
-            for(auto& rIter : SwClientIter::our_pClientIters->GetRingContainer())
+            for(auto& rIter : sw::ClientIteratorBase::our_pClientIters->GetRingContainer())
             {
                 OSL_ENSURE( &rIter.GetModify() != pRoot, "Client added to active ClientIter" );
             }
@@ -201,10 +201,10 @@ SwClient* SwModify::Remove( SwClient* pDepend )
         if( pR )
             pR->m_pLeft = pL;
 
-        // update ClientIters
-        if(SwClientIter::our_pClientIters)
+        // update ClientIterators
+        if(sw::ClientIteratorBase::our_pClientIters)
         {
-            for(auto& rIter : SwClientIter::our_pClientIters->GetRingContainer())
+            for(auto& rIter : sw::ClientIteratorBase::our_pClientIters->GetRingContainer())
             {
                 if( rIter.m_pCurrent == pDepend || rIter.m_pPosition == pDepend )
                 {
@@ -259,5 +259,5 @@ void SwModify::CheckCaching( const sal_uInt16 nWhich )
     }
 }
 
-SwClientIter* SwClientIter::our_pClientIters = nullptr;
+sw::ClientIteratorBase* sw::ClientIteratorBase::our_pClientIters = nullptr;
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 6c58493295547a83aecfc5d69b17316e980f8548
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Mar 18 15:50:28 2015 +0100

    simplify specialized SwIterator::First()
    
    Change-Id: I6aac0645939cea0ef8fbfc2796f94cffc56d224e

diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index 4bffc7c..e4b93c8 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -345,13 +345,7 @@ template< typename TSource > class SwIterator<SwClient, TSource>
 public:
     SwIterator( const TSource& rSrc ) : aClientIter(rSrc) {}
     SwClient* First()
-    {
-        aClientIter.GoStart();
-        if(!aClientIter.m_pPosition)
-            return nullptr;
-        aClientIter.m_pCurrent = nullptr;
-        return Next();
-    }
+        { return aClientIter.GoStart(); }
     SwClient* Last()
     {
         if(!aClientIter.m_pPosition)
commit a7a0d8f7dd05d3b3e7d989573048495f3e6d5f36
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Mar 18 15:49:18 2015 +0100

    make SwClientIter construcatable only from SwIter
    
    Change-Id: I6e203792187311f3d00fd074fd67cbae7680723e

diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index 0ee4cf9..4bffc7c 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -245,7 +245,8 @@ protected:
 
 class SwClientIter SAL_FINAL : public sw::Ring<SwClientIter>
 {
-    friend SwClient* SwModify::Remove(SwClient*);
+    friend SwModify;
+    //friend SwClient* SwModify::Remove(SwClient*);
     template<typename E, typename S> friend class SwIterator; ///< for typed interation
 
     const SwModify& m_rRoot;
@@ -253,6 +254,13 @@ class SwClientIter SAL_FINAL : public sw::Ring<SwClientIter>
     // the current object in an iteration
     SwClient* m_pCurrent;
 
+    SwClientIter( const SwModify& rModify )
+        : m_rRoot(rModify)
+    {
+        MoveTo(our_pClientIters);
+        our_pClientIters = this;
+        m_pCurrent = m_pPosition = const_cast<SwClient*>(m_rRoot.GetDepends());
+    }
     // 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
@@ -271,13 +279,6 @@ class SwClientIter SAL_FINAL : public sw::Ring<SwClientIter>
     static SW_DLLPUBLIC SwClientIter* our_pClientIters;
 
 public:
-    SwClientIter( const SwModify& rModify )
-        : m_rRoot(rModify)
-    {
-        MoveTo(our_pClientIters);
-        our_pClientIters = this;
-        m_pCurrent = m_pPosition = const_cast<SwClient*>(m_rRoot.GetDepends());
-    }
     ~SwClientIter() SAL_OVERRIDE
     {
         assert(our_pClientIters);
commit 59665096831ef0e88a3cfbfa4377d09246896f68
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Mar 18 15:48:44 2015 +0100

    limit friendship
    
    Change-Id: I217077de4ccc2667a17e34ffcc781f1a6b736210

diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index 0b85f3b..0ee4cf9 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -245,7 +245,7 @@ protected:
 
 class SwClientIter SAL_FINAL : public sw::Ring<SwClientIter>
 {
-    friend class SwModify;
+    friend SwClient* SwModify::Remove(SwClient*);
     template<typename E, typename S> friend class SwIterator; ///< for typed interation
 
     const SwModify& m_rRoot;
commit 37262d61b395afdd575ddc99c1eab83b414fd082
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Mar 18 15:28:10 2015 +0100

    remove superficial helpers
    
    Change-Id: Icd690bf20c47152b00e1f51586471f9fe029c4cf

diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index 0059a4c..0b85f3b 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -285,23 +285,6 @@ public:
             our_pClientIters = unique() ? nullptr : GetNextInRing();
         MoveTo(nullptr);
     }
-
-    SwClient* operator++()
-    {
-        if( m_pPosition == m_pCurrent )
-            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
-        { return *m_pCurrent; }
-    // returns the current SwClient object, wether it is still a client or not
-    SwClient* operator->() const
-        { return m_pCurrent; }
-    explicit operator bool() const
-        { return m_pCurrent!=nullptr; }
-
     // return "true" if an object was removed from a client chain in iteration
     // adding objects to a client chain in iteration is forbidden
     // SwModify::Add() asserts this
@@ -401,23 +384,19 @@ SwClient::SwClient( SwModify* pToRegisterIn )
 
 void SwModify::ModifyBroadcast( const SfxPoolItem *pOldValue, const SfxPoolItem *pNewValue, TypeId nType)
 {
-    SwClientIter aIter(*this);
-    aIter.GoStart();
-    while(aIter)
+    SwIterator<SwClient,SwModify> aIter(*this);
+    for(SwClient* pClient = aIter.First(); pClient; pClient = aIter.Next())
     {
-        if( aIter.m_pPosition == aIter.m_pCurrent )
-            aIter.m_pPosition = static_cast<SwClient*>(aIter.m_pPosition->m_pRight);
-        while(aIter.m_pPosition && !aIter.m_pPosition->IsA( nType ) )
-            aIter.m_pPosition = static_cast<SwClient*>(aIter.m_pPosition->m_pRight);
-        aIter.m_pCurrent = aIter.m_pPosition;
-        aIter->Modify( pOldValue, pNewValue );
+        if(pClient->IsA(nType))
+            pClient->Modify( pOldValue, pNewValue );
     }
 }
 
 void SwModify::CallSwClientNotify( const SfxHint& rHint ) const
 {
-    for(SwClientIter aIter(*this); aIter; ++aIter)
-        aIter->SwClientNotify( *this, rHint );
+    SwIterator<SwClient,SwModify> aIter(*this);
+    for(SwClient* pClient = aIter.First(); pClient; pClient = aIter.Next())
+        pClient->SwClientNotify( *this, rHint );
 }
 #endif
 
diff --git a/sw/source/core/attr/calbck.cxx b/sw/source/core/attr/calbck.cxx
index a19229d..e4eb513 100644
--- a/sw/source/core/attr/calbck.cxx
+++ b/sw/source/core/attr/calbck.cxx
@@ -74,9 +74,9 @@ SwModify::~SwModify()
             // If the document gets destroyed anyway, just tell clients to
             // forget me so that they don't try to get removed from my list
             // later when they also get destroyed
-            SwClientIter aIter( *this );
-            for(aIter.GoStart(); aIter; ++aIter)
-                aIter->pRegisteredIn = nullptr;
+            SwIterator<SwClient,SwModify> aIter(*this);
+            for(SwClient* pClient = aIter.First(); pClient; pClient = aIter.Next())
+                pClient->pRegisteredIn = nullptr;
         }
         else
         {
@@ -134,9 +134,9 @@ bool SwModify::GetInfo( SfxPoolItem& rInfo ) const
 {
     if(!pRoot)
         return true;
-    SwClientIter aIter( *const_cast<SwModify*>(this) );
-    for(aIter.GoStart(); aIter; ++aIter)
-        if(!aIter->GetInfo( rInfo ))
+    SwIterator<SwClient,SwModify> aIter(*this);
+    for(SwClient* pClient = aIter.First(); pClient; pClient = aIter.Next())
+        if(!pClient->GetInfo( rInfo ))
             return false;
     return true;
 }
commit a5fead9c44e2965587919e675ab5fa5e9c4a6b7f
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Mar 18 15:01:34 2015 +0100

    specialize SwIterator<SwClient, T>
    
    Change-Id: I6d9457e8f005dffef5ce8969ad895b43e90efadd

diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index 8fa3ff5..0059a4c 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -308,9 +308,8 @@ public:
     bool IsChanged() const { return m_pPosition != m_pCurrent; }
 };
 
-template< class TElementType, class TSource > class SwIterator SAL_FINAL
+template< typename TElementType, typename TSource > class SwIterator SAL_FINAL
 {
-
     static_assert(std::is_base_of<SwClient,TElementType>::value, "TElementType needs to be derived from SwClient");
     static_assert(std::is_base_of<SwModify,TSource>::value, "TSource needs to be derived from SwModify");
     SwClientIter aClientIter;
@@ -355,6 +354,44 @@ public:
     bool IsChanged()          { return aClientIter.IsChanged(); }
 };
 
+template< typename TSource > class SwIterator<SwClient, TSource>
+{
+    static_assert(std::is_base_of<SwModify,TSource>::value, "TSource needs to be derived from SwModify");
+    SwClientIter aClientIter;
+public:
+    SwIterator( const TSource& rSrc ) : aClientIter(rSrc) {}
+    SwClient* First()
+    {
+        aClientIter.GoStart();
+        if(!aClientIter.m_pPosition)
+            return nullptr;
+        aClientIter.m_pCurrent = nullptr;
+        return Next();
+    }
+    SwClient* Last()
+    {
+        if(!aClientIter.m_pPosition)
+            aClientIter.m_pPosition = const_cast<SwClient*>(aClientIter.m_rRoot.GetDepends());
+        if(!aClientIter.m_pPosition)
+            return aClientIter.m_pCurrent = nullptr;
+        while(aClientIter.GetRighOfPos())
+            aClientIter.m_pPosition = aClientIter.GetRighOfPos();
+        return aClientIter.m_pCurrent = aClientIter.m_pPosition;
+    }
+    SwClient* Next()
+    {
+        if( aClientIter.m_pPosition == aClientIter.m_pCurrent )
+            aClientIter.m_pPosition = aClientIter.GetRighOfPos();
+        return aClientIter.m_pCurrent = aClientIter.m_pPosition;
+    }
+    SwClient* Previous()
+    {
+        aClientIter.m_pPosition = aClientIter.GetLeftOfPos();
+        return aClientIter.m_pCurrent = aClientIter.m_pPosition;
+    }
+    bool IsChanged()          { return aClientIter.IsChanged(); }
+};
+
 SwClient::SwClient( SwModify* pToRegisterIn )
     : pRegisteredIn( nullptr )
 {
commit 25a99a65e8aa2962ed980ed750c349d7863eb87c
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Mar 18 15:01:09 2015 +0100

    make GetModify private
    
    Change-Id: I451f2670027eabb692ad2c91f33dfe7c311b8731

diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index 480c05d..8fa3ff5 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -266,6 +266,7 @@ class SwClientIter SAL_FINAL : public sw::Ring<SwClientIter>
                 m_pPosition = static_cast<SwClient*>(m_pPosition->m_pLeft);
         return m_pCurrent = m_pPosition;
     }
+    const SwModify& GetModify() const { return m_rRoot; }
 
     static SW_DLLPUBLIC SwClientIter* our_pClientIters;
 
@@ -285,8 +286,6 @@ public:
         MoveTo(nullptr);
     }
 
-    const SwModify& GetModify() const { return m_rRoot; }
-
     SwClient* operator++()
     {
         if( m_pPosition == m_pCurrent )
commit 11b22c3c68a939cb723062ba9e6da279dd14398f
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Mar 18 14:01:29 2015 +0100

    more static checks ftw
    
    Change-Id: Ic5a459704c6cc60d854ae285543314df063d8926

diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index 024804b..480c05d 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -313,6 +313,7 @@ template< class TElementType, class TSource > class SwIterator SAL_FINAL
 {
 
     static_assert(std::is_base_of<SwClient,TElementType>::value, "TElementType needs to be derived from SwClient");
+    static_assert(std::is_base_of<SwModify,TSource>::value, "TSource needs to be derived from SwModify");
     SwClientIter aClientIter;
 public:
 
commit d26725ad0f406069b15e5f1ea722f36d5ac27edd
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Mar 18 13:58:25 2015 +0100

    move SwIterator into calbck.hxx
    
    Change-Id: Icdcd46d392bbf1dbe45448328c310d9a327ba60d

diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index a3bd078..024804b 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -27,6 +27,7 @@
 #include <hintids.hxx>
 #include <hints.hxx>
 #include <typeinfo>
+#include <type_traits>
 
 
 class SwModify;
@@ -308,6 +309,52 @@ public:
     bool IsChanged() const { return m_pPosition != m_pCurrent; }
 };
 
+template< class TElementType, class TSource > class SwIterator SAL_FINAL
+{
+
+    static_assert(std::is_base_of<SwClient,TElementType>::value, "TElementType needs to be derived from SwClient");
+    SwClientIter aClientIter;
+public:
+
+    SwIterator( const TSource& rSrc ) : aClientIter(rSrc) {}
+    TElementType* First()
+    {
+        aClientIter.GoStart();
+        if(!aClientIter.m_pPosition)
+            return nullptr;
+        aClientIter.m_pCurrent = nullptr;
+        return Next();
+    }
+    TElementType* Last()
+    {
+        if(!aClientIter.m_pPosition)
+            aClientIter.m_pPosition = const_cast<SwClient*>(aClientIter.m_rRoot.GetDepends());
+        if(!aClientIter.m_pPosition)
+            return PTR_CAST(TElementType,aClientIter.m_pCurrent = nullptr);
+        while(aClientIter.GetRighOfPos())
+            aClientIter.m_pPosition = aClientIter.GetRighOfPos();
+        if(aClientIter.m_pPosition->IsA(TYPE(TElementType)))
+            return PTR_CAST(TElementType,aClientIter.m_pCurrent = aClientIter.m_pPosition);
+        return Previous();
+    }
+    TElementType* Next()
+    {
+        if( aClientIter.m_pPosition == aClientIter.m_pCurrent )
+            aClientIter.m_pPosition = aClientIter.GetRighOfPos();
+        while(aClientIter.m_pPosition && !aClientIter.m_pPosition->IsA( TYPE(TElementType) ) )
+            aClientIter.m_pPosition = aClientIter.GetRighOfPos();
+        return PTR_CAST(TElementType,aClientIter.m_pCurrent = aClientIter.m_pPosition);
+    }
+    TElementType* Previous()
+    {
+        aClientIter.m_pPosition = aClientIter.GetLeftOfPos();
+        while(aClientIter.m_pPosition && !aClientIter.m_pPosition->IsA( TYPE(TElementType) ) )
+            aClientIter.m_pPosition = aClientIter.GetLeftOfPos();
+        return PTR_CAST(TElementType,aClientIter.m_pCurrent = aClientIter.m_pPosition);
+    }
+    bool IsChanged()          { return aClientIter.IsChanged(); }
+};
+
 SwClient::SwClient( SwModify* pToRegisterIn )
     : pRegisteredIn( nullptr )
 {
diff --git a/sw/inc/switerator.hxx b/sw/inc/switerator.hxx
deleted file mode 100644
index 8221642..0000000
--- a/sw/inc/switerator.hxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-#ifndef INCLUDED_SW_INC_SWITERATOR_HXX
-#define INCLUDED_SW_INC_SWITERATOR_HXX
-
-#include <type_traits>
-#include <calbck.hxx>
-#include <sal/log.hxx>
-
-template< class TElementType, class TSource > class SwIterator SAL_FINAL
-{
-
-    static_assert(std::is_base_of<SwClient,TElementType>::value, "TElementType needs to be derived from SwClient");
-    SwClientIter aClientIter;
-public:
-
-    SwIterator( const TSource& rSrc ) : aClientIter(rSrc) {}
-    TElementType* First()
-    {
-        aClientIter.GoStart();
-        if(!aClientIter.m_pPosition)
-            return nullptr;
-        aClientIter.m_pCurrent = nullptr;
-        return Next();
-    }
-    TElementType* Last()
-    {
-        if(!aClientIter.m_pPosition)
-            aClientIter.m_pPosition = const_cast<SwClient*>(aClientIter.m_rRoot.GetDepends());
-        if(!aClientIter.m_pPosition)
-            return PTR_CAST(TElementType,aClientIter.m_pCurrent = nullptr);
-        while(aClientIter.GetRighOfPos())
-            aClientIter.m_pPosition = aClientIter.GetRighOfPos();
-        if(aClientIter.m_pPosition->IsA(TYPE(TElementType)))
-            return PTR_CAST(TElementType,aClientIter.m_pCurrent = aClientIter.m_pPosition);
-        return Previous();
-    }
-    TElementType* Next()
-    {
-        if( aClientIter.m_pPosition == aClientIter.m_pCurrent )
-            aClientIter.m_pPosition = aClientIter.GetRighOfPos();
-        while(aClientIter.m_pPosition && !aClientIter.m_pPosition->IsA( TYPE(TElementType) ) )
-            aClientIter.m_pPosition = aClientIter.GetRighOfPos();
-        return PTR_CAST(TElementType,aClientIter.m_pCurrent = aClientIter.m_pPosition);
-    }
-    TElementType* Previous()
-    {
-        aClientIter.m_pPosition = aClientIter.GetLeftOfPos();
-        while(aClientIter.m_pPosition && !aClientIter.m_pPosition->IsA( TYPE(TElementType) ) )
-            aClientIter.m_pPosition = aClientIter.GetLeftOfPos();
-        return PTR_CAST(TElementType,aClientIter.m_pCurrent = aClientIter.m_pPosition);
-    }
-    bool IsChanged()          { return aClientIter.IsChanged(); }
-};
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/access/accmap.cxx b/sw/source/core/access/accmap.cxx
index 0428889..0b5af16 100644
--- a/sw/source/core/access/accmap.cxx
+++ b/sw/source/core/access/accmap.cxx
@@ -70,7 +70,7 @@
 #include <ndtxt.hxx>
 #include <dflyobj.hxx>
 #include <prevwpage.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <boost/bind.hpp>
 
 using namespace ::com::sun::star;
diff --git a/sw/source/core/attr/cellatr.cxx b/sw/source/core/attr/cellatr.cxx
index 79f2a52..4e56fba 100644
--- a/sw/source/core/attr/cellatr.cxx
+++ b/sw/source/core/attr/cellatr.cxx
@@ -28,7 +28,7 @@
 #include <rolbck.hxx>
 #include <rtl/math.hxx>
 #include <rtl/ustring.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <swtable.hxx>
 
 SwTblBoxNumFormat::SwTblBoxNumFormat( sal_uInt32 nFormat, bool bFlag )
diff --git a/sw/source/core/crsr/annotationmark.cxx b/sw/source/core/crsr/annotationmark.cxx
index f6b81a6..d66427f 100644
--- a/sw/source/core/crsr/annotationmark.cxx
+++ b/sw/source/core/crsr/annotationmark.cxx
@@ -24,7 +24,7 @@
 #include <IDocumentFieldsAccess.hxx>
 #include <IDocumentState.hxx>
 #include <fldbas.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <fmtfld.hxx>
 #include <docufld.hxx>
 #include <IDocumentUndoRedo.hxx>
diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx
index 0d05960..bc86353 100644
--- a/sw/source/core/crsr/crstrvl.cxx
+++ b/sw/source/core/crsr/crstrvl.cxx
@@ -64,7 +64,7 @@
 #include <fmturl.hxx>
 #include "txtfrm.hxx"
 #include <wrong.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <vcl/window.hxx>
 #include <docufld.hxx>
 
diff --git a/sw/source/core/doc/DocumentFieldsManager.cxx b/sw/source/core/doc/DocumentFieldsManager.cxx
index abfc556..8cb4308 100644
--- a/sw/source/core/doc/DocumentFieldsManager.cxx
+++ b/sw/source/core/doc/DocumentFieldsManager.cxx
@@ -33,7 +33,7 @@
 #include <cntfrm.hxx>
 #include <section.hxx>
 #include <docufld.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <cellatr.hxx>
 #include <swtable.hxx>
 #include <frmfmt.hxx>
diff --git a/sw/source/core/doc/DocumentStatisticsManager.cxx b/sw/source/core/doc/DocumentStatisticsManager.cxx
index fca66719..908abb4 100644
--- a/sw/source/core/doc/DocumentStatisticsManager.cxx
+++ b/sw/source/core/doc/DocumentStatisticsManager.cxx
@@ -26,7 +26,7 @@
 #include <IDocumentLayoutAccess.hxx>
 #include <view.hxx>
 #include <ndtxt.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <fmtfld.hxx>
 #include <rootfrm.hxx>
 #include <docufld.hxx>
diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx
index 6962da3..e6f5d92 100644
--- a/sw/source/core/doc/doc.cxx
+++ b/sw/source/core/doc/doc.cxx
@@ -134,7 +134,7 @@
 #include <osl/diagnose.h>
 #include <osl/interlck.h>
 #include <vbahelper/vbaaccesshelper.hxx>
-#include "switerator.hxx"
+#include <calbck.hxx>
 
 /* @@@MAINTAINABILITY-HORROR@@@
    Probably unwanted dependency on SwDocShell
diff --git a/sw/source/core/doc/docdraw.cxx b/sw/source/core/doc/docdraw.cxx
index 3dbc5f7..54eeeb1 100644
--- a/sw/source/core/doc/docdraw.cxx
+++ b/sw/source/core/doc/docdraw.cxx
@@ -67,7 +67,7 @@
 #include <svx/svditer.hxx>
 
 #include <vector>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::linguistic2;
diff --git a/sw/source/core/doc/docfld.cxx b/sw/source/core/doc/docfld.cxx
index 69e4966..0bfeee4 100644
--- a/sw/source/core/doc/docfld.cxx
+++ b/sw/source/core/doc/docfld.cxx
@@ -62,7 +62,7 @@
 #include <poolfmt.hrc>
 
 #include <SwUndoField.hxx>
-#include "switerator.hxx"
+#include <calbck.hxx>
 
 using namespace ::com::sun::star::uno;
 
diff --git a/sw/source/core/doc/docfly.cxx b/sw/source/core/doc/docfly.cxx
index 428e758..a7a4adf 100644
--- a/sw/source/core/doc/docfly.cxx
+++ b/sw/source/core/doc/docfly.cxx
@@ -59,7 +59,7 @@
 #include <fmtcnct.hxx>
 #include <dflyobj.hxx>
 #include <undoflystrattr.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <boost/scoped_ptr.hpp>
 
 //UUUU
diff --git a/sw/source/core/doc/docglbl.cxx b/sw/source/core/doc/docglbl.cxx
index 71e5e4f..8c01796 100644
--- a/sw/source/core/doc/docglbl.cxx
+++ b/sw/source/core/doc/docglbl.cxx
@@ -46,7 +46,7 @@
 #include <section.hxx>
 #include <doctxm.hxx>
 #include <poolfmt.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <boost/scoped_ptr.hpp>
 #include <com/sun/star/uno/Reference.h>
 #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
diff --git a/sw/source/core/doc/docnum.cxx b/sw/source/core/doc/docnum.cxx
index 4e7812a..c2fe437 100644
--- a/sw/source/core/doc/docnum.cxx
+++ b/sw/source/core/doc/docnum.cxx
@@ -53,7 +53,7 @@
 #include <SwStyleNameMapper.hxx>
 #include <SwNodeNum.hxx>
 #include <list.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <comphelper/string.hxx>
 #include <tools/datetimeutils.hxx>
 
diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx
index 69e578b..2cdccf6 100644
--- a/sw/source/core/doc/doctxm.cxx
+++ b/sw/source/core/doc/doctxm.cxx
@@ -68,7 +68,7 @@
 #include <breakit.hxx>
 #include <editsh.hxx>
 #include <scriptinfo.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <ToxTextGenerator.hxx>
 #include <ToxTabStopTokenHandler.hxx>
 #include <tools/datetimeutils.hxx>
diff --git a/sw/source/core/doc/fmtcol.cxx b/sw/source/core/doc/fmtcol.cxx
index 4d9d28e..c700cf4 100644
--- a/sw/source/core/doc/fmtcol.cxx
+++ b/sw/source/core/doc/fmtcol.cxx
@@ -32,7 +32,7 @@
 #include <node.hxx>
 #include <numrule.hxx>
 #include <paratr.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <svl/intitem.hxx>
 
 TYPEINIT1( SwTxtFmtColl, SwFmtColl );
diff --git a/sw/source/core/doc/htmltbl.cxx b/sw/source/core/doc/htmltbl.cxx
index 1520adb..3b3ba7f 100644
--- a/sw/source/core/doc/htmltbl.cxx
+++ b/sw/source/core/doc/htmltbl.cxx
@@ -39,7 +39,7 @@
 #include "viewopt.hxx"
 #include "htmltbl.hxx"
 #include "ndindex.hxx"
-#include "switerator.hxx"
+#include <calbck.hxx>
 #include <o3tl/numeric.hxx>
 #ifdef DBG_UTIL
 #include "tblrwcl.hxx"
diff --git a/sw/source/core/doc/tblrwcl.cxx b/sw/source/core/doc/tblrwcl.cxx
index ea2dae7..1e3eaac 100644
--- a/sw/source/core/doc/tblrwcl.cxx
+++ b/sw/source/core/doc/tblrwcl.cxx
@@ -58,7 +58,7 @@
 #include <o3tl/numeric.hxx>
 #include <boost/shared_ptr.hpp>
 #include <boost/scoped_ptr.hpp>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <docary.hxx>
 
 using namespace com::sun::star;
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index 98a854f..0fc4eae 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -91,7 +91,7 @@
 #include <algorithm>
 #include <rootfrm.hxx>
 #include <fldupde.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <o3tl/numeric.hxx>
 #include <tools/datetimeutils.hxx>
 
diff --git a/sw/source/core/docnode/ndtbl1.cxx b/sw/source/core/docnode/ndtbl1.cxx
index a116ab2..0031e0e 100644
--- a/sw/source/core/docnode/ndtbl1.cxx
+++ b/sw/source/core/docnode/ndtbl1.cxx
@@ -48,7 +48,7 @@
 #include "docary.hxx"
 #include "ndindex.hxx"
 #include "undobj.hxx"
-#include "switerator.hxx"
+#include <calbck.hxx>
 #include <UndoTable.hxx>
 
 using ::editeng::SvxBorderLine;
diff --git a/sw/source/core/docnode/node.cxx b/sw/source/core/docnode/node.cxx
index 5118385..31d6f5a 100644
--- a/sw/source/core/docnode/node.cxx
+++ b/sw/source/core/docnode/node.cxx
@@ -64,7 +64,7 @@
 #include <IDocumentLinksAdministration.hxx>
 #include <IDocumentRedlineAccess.hxx>
 #include <IDocumentLayoutAccess.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include "ndole.hxx"
 
 using namespace ::com::sun::star::i18n;
diff --git a/sw/source/core/docnode/node2lay.cxx b/sw/source/core/docnode/node2lay.cxx
index 832e9e77..0e10b9d 100644
--- a/sw/source/core/docnode/node2lay.cxx
+++ b/sw/source/core/docnode/node2lay.cxx
@@ -17,7 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <calbck.hxx>
 #include <node.hxx>
 #include <ndindex.hxx>
diff --git a/sw/source/core/docnode/section.cxx b/sw/source/core/docnode/section.cxx
index 14ef8d4..cd9eaa9 100644
--- a/sw/source/core/docnode/section.cxx
+++ b/sw/source/core/docnode/section.cxx
@@ -61,7 +61,7 @@
 #include <fmteiro.hxx>
 #include <swerror.h>
 #include <unosection.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <svl/smplhint.hxx>
 #include <algorithm>
 #include <ndsect.hxx>
diff --git a/sw/source/core/docnode/swbaslnk.cxx b/sw/source/core/docnode/swbaslnk.cxx
index 70204f3..3cb90bc 100644
--- a/sw/source/core/docnode/swbaslnk.cxx
+++ b/sw/source/core/docnode/swbaslnk.cxx
@@ -50,7 +50,7 @@
 #include <tabfrm.hxx>
 #include <cntfrm.hxx>
 #include <htmltbl.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace com::sun::star;
 
diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx
index 040a498..24e2568 100644
--- a/sw/source/core/draw/dcontact.cxx
+++ b/sw/source/core/draw/dcontact.cxx
@@ -66,7 +66,7 @@
 #include <drawinglayer/primitive2d/transformprimitive2d.hxx>
 #include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
 #include <com/sun/star/text/WritingMode2.hpp>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <algorithm>
 #include <txtfly.hxx>
 
diff --git a/sw/source/core/edit/edfld.cxx b/sw/source/core/edit/edfld.cxx
index e2b655b..2adece7 100644
--- a/sw/source/core/edit/edfld.cxx
+++ b/sw/source/core/edit/edfld.cxx
@@ -36,7 +36,7 @@
 #include <dbmgr.hxx>
 #include <swddetbl.hxx>
 #include <hints.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <fieldhint.hxx>
 #include <DocumentSettingManager.hxx>
 #include <IDocumentContentOperations.hxx>
diff --git a/sw/source/core/edit/edfldexp.cxx b/sw/source/core/edit/edfldexp.cxx
index 1591cd2..ca14b58 100644
--- a/sw/source/core/edit/edfldexp.cxx
+++ b/sw/source/core/edit/edfldexp.cxx
@@ -31,7 +31,7 @@
 #include <fmtfld.hxx>
 #include <edimp.hxx>
 #include <flddat.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace com::sun::star;
 
diff --git a/sw/source/core/edit/editsh.cxx b/sw/source/core/edit/editsh.cxx
index 2f8066e..7e9bb47 100644
--- a/sw/source/core/edit/editsh.cxx
+++ b/sw/source/core/edit/editsh.cxx
@@ -61,7 +61,7 @@
 #include <numrule.hxx>
 #include <SwNodeNum.hxx>
 #include <unocrsr.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace com::sun::star;
 
diff --git a/sw/source/core/fields/authfld.cxx b/sw/source/core/fields/authfld.cxx
index 56060cd..b78deba 100644
--- a/sw/source/core/fields/authfld.cxx
+++ b/sw/source/core/fields/authfld.cxx
@@ -39,7 +39,7 @@
 #include <IDocumentLayoutAccess.hxx>
 #include <unofldmid.h>
 #include <unoprnms.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <unomid.h>
 
 using namespace ::com::sun::star::uno;
diff --git a/sw/source/core/fields/dbfld.cxx b/sw/source/core/fields/dbfld.cxx
index c81dec1..0d2f01a 100644
--- a/sw/source/core/fields/dbfld.cxx
+++ b/sw/source/core/fields/dbfld.cxx
@@ -38,7 +38,7 @@
 #include <expfld.hxx>
 #include <txtatr.hxx>
 #include <unofldmid.h>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace ::com::sun::star::sdbc;
 using namespace ::com::sun::star;
diff --git a/sw/source/core/fields/ddefld.cxx b/sw/source/core/fields/ddefld.cxx
index 5d2a2b1..d43a2b3 100644
--- a/sw/source/core/fields/ddefld.cxx
+++ b/sw/source/core/fields/ddefld.cxx
@@ -33,7 +33,7 @@
 #include <swddetbl.hxx>
 #include <unofldmid.h>
 #include <hints.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace ::com::sun::star;
 
diff --git a/sw/source/core/fields/docufld.cxx b/sw/source/core/fields/docufld.cxx
index 407b4e7..7da9b37 100644
--- a/sw/source/core/fields/docufld.cxx
+++ b/sw/source/core/fields/docufld.cxx
@@ -95,7 +95,7 @@
 
 #include <editeng/outliner.hxx>
 #include <editeng/outlobj.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <docary.hxx>
 
 #define URL_DECODE  INetURLObject::DECODE_UNAMBIGUOUS
diff --git a/sw/source/core/fields/expfld.cxx b/sw/source/core/fields/expfld.cxx
index a67a951..24ba569 100644
--- a/sw/source/core/fields/expfld.cxx
+++ b/sw/source/core/fields/expfld.cxx
@@ -56,7 +56,7 @@
 #include <SwStyleNameMapper.hxx>
 #include <unofldmid.h>
 #include <numrule.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::text;
diff --git a/sw/source/core/fields/fldbas.cxx b/sw/source/core/fields/fldbas.cxx
index 8333ad8..dc0e6d5 100644
--- a/sw/source/core/fields/fldbas.cxx
+++ b/sw/source/core/fields/fldbas.cxx
@@ -46,7 +46,7 @@
 #include <comcore.hrc>
 #include <docary.hxx>
 #include <authfld.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace ::com::sun::star;
 using namespace nsSwDocInfoSubType;
diff --git a/sw/source/core/fields/fldlst.cxx b/sw/source/core/fields/fldlst.cxx
index 6a13449..72d92c1 100644
--- a/sw/source/core/fields/fldlst.cxx
+++ b/sw/source/core/fields/fldlst.cxx
@@ -17,7 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#include "switerator.hxx"
+#include <calbck.hxx>
 #include "editsh.hxx"
 #include "doc.hxx"
 #include <IDocumentFieldsAccess.hxx>
diff --git a/sw/source/core/fields/postithelper.cxx b/sw/source/core/fields/postithelper.cxx
index 91aab4c..fdce899 100644
--- a/sw/source/core/fields/postithelper.cxx
+++ b/sw/source/core/fields/postithelper.cxx
@@ -34,7 +34,7 @@
 #include <redline.hxx>
 #include <scriptinfo.hxx>
 #include <editeng/charhiddenitem.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 class Point;
 
diff --git a/sw/source/core/fields/reffld.cxx b/sw/source/core/fields/reffld.cxx
index 869950b..18bcf2a 100644
--- a/sw/source/core/fields/reffld.cxx
+++ b/sw/source/core/fields/reffld.cxx
@@ -56,7 +56,7 @@
 #include <comcore.hrc>
 #include <numrule.hxx>
 #include <SwNodeNum.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 #include <set>
 #include <map>
diff --git a/sw/source/core/fields/tblcalc.cxx b/sw/source/core/fields/tblcalc.cxx
index 2f2087f..738152b 100644
--- a/sw/source/core/fields/tblcalc.cxx
+++ b/sw/source/core/fields/tblcalc.cxx
@@ -17,7 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <cntfrm.hxx>
 #include <doc.hxx>
 #include <pam.hxx>
diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx
index 0394e84..4697c92 100644
--- a/sw/source/core/frmedt/feshview.cxx
+++ b/sw/source/core/frmedt/feshview.cxx
@@ -81,7 +81,7 @@
 #include <sortedobjs.hxx>
 #include <HandleAnchorNodeChg.hxx>
 #include <basegfx/polygon/b2dpolygon.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 #include <com/sun/star/embed/EmbedMisc.hpp>
 #include <com/sun/star/embed/Aspects.hpp>
diff --git a/sw/source/core/frmedt/tblsel.cxx b/sw/source/core/frmedt/tblsel.cxx
index 22851d5..86d36f7 100644
--- a/sw/source/core/frmedt/tblsel.cxx
+++ b/sw/source/core/frmedt/tblsel.cxx
@@ -46,7 +46,7 @@
 #include <mvsave.hxx>
 #include <sectfrm.hxx>
 #include <frmtool.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <deque>
 
 // see also swtable.cxx
diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx
index c1d3ae6..c9aa0520 100644
--- a/sw/source/core/layout/atrfrm.cxx
+++ b/sw/source/core/layout/atrfrm.cxx
@@ -73,7 +73,7 @@
 #include <svx/svdundo.hxx>
 #include <sortedobjs.hxx>
 #include <HandleAnchorNodeChg.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <pagedeschint.hxx>
 #ifndef NDEBUG
 #include <ndtxt.hxx>
diff --git a/sw/source/core/layout/colfrm.cxx b/sw/source/core/layout/colfrm.cxx
index b0823d3..e139895 100644
--- a/sw/source/core/layout/colfrm.cxx
+++ b/sw/source/core/layout/colfrm.cxx
@@ -27,7 +27,7 @@
 #include "bodyfrm.hxx"
 #include "rootfrm.hxx"
 #include "sectfrm.hxx"
-#include "switerator.hxx"
+#include <calbck.hxx>
 #include "ftnfrm.hxx"
 #include <IDocumentState.hxx>
 #include <IDocumentLayoutAccess.hxx>
diff --git a/sw/source/core/layout/findfrm.cxx b/sw/source/core/layout/findfrm.cxx
index cdc8baf..6552055 100644
--- a/sw/source/core/layout/findfrm.cxx
+++ b/sw/source/core/layout/findfrm.cxx
@@ -30,7 +30,7 @@
 #include "txtftn.hxx"
 #include "fmtftn.hxx"
 #include <txtfrm.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 /// Searches the first CntntFrm in BodyText below the page.
 SwLayoutFrm *SwFtnBossFrm::FindBodyCont()
diff --git a/sw/source/core/layout/flowfrm.cxx b/sw/source/core/layout/flowfrm.cxx
index 8c3bf1b..f4a67d4 100644
--- a/sw/source/core/layout/flowfrm.cxx
+++ b/sw/source/core/layout/flowfrm.cxx
@@ -52,7 +52,7 @@
 #include <sortedobjs.hxx>
 #include <layouter.hxx>
 #include <fmtfollowtextflow.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <IDocumentSettingAccess.hxx>
 #include <IDocumentDrawModelAccess.hxx>
 
diff --git a/sw/source/core/layout/fly.cxx b/sw/source/core/layout/fly.cxx
index 6d98fe8..f8c0db0 100644
--- a/sw/source/core/layout/fly.cxx
+++ b/sw/source/core/layout/fly.cxx
@@ -58,7 +58,7 @@
 #include "flyfrms.hxx"
 #include "sectfrm.hxx"
 #include <vcl/svapp.hxx>
-#include "switerator.hxx"
+#include <calbck.hxx>
 #include <IDocumentSettingAccess.hxx>
 #include <IDocumentLayoutAccess.hxx>
 #include <textboxhelper.hxx>
diff --git a/sw/source/core/layout/flypos.cxx b/sw/source/core/layout/flypos.cxx
index 135e5c3..b0ecb28 100644
--- a/sw/source/core/layout/flypos.cxx
+++ b/sw/source/core/layout/flypos.cxx
@@ -23,7 +23,7 @@
 #include "dcontact.hxx"
 #include "flyfrm.hxx"
 #include "dflyobj.hxx"
-#include "switerator.hxx"
+#include <calbck.hxx>
 
 bool SwPosFlyFrmCmp::operator()(const SwPosFlyFrmPtr& rA, const SwPosFlyFrmPtr& rB) const
 {
diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx
index a964d80..37a7dac 100644
--- a/sw/source/core/layout/frmtool.cxx
+++ b/sw/source/core/layout/frmtool.cxx
@@ -60,7 +60,7 @@
 #include <paratr.hxx>
 #include <sortedobjs.hxx>
 #include <objectformatter.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <DocumentSettingManager.hxx>
 #include <IDocumentTimerAccess.hxx>
 #include <IDocumentRedlineAccess.hxx>
diff --git a/sw/source/core/layout/ftnfrm.cxx b/sw/source/core/layout/ftnfrm.cxx
index 880cc9b..04a55df 100644
--- a/sw/source/core/layout/ftnfrm.cxx
+++ b/sw/source/core/layout/ftnfrm.cxx
@@ -32,7 +32,7 @@
 #include <sectfrm.hxx>
 #include <objectformatter.hxx>
 #include "viewopt.hxx"
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 #define ENDNOTE 0x80000000
 
diff --git a/sw/source/core/layout/movedfwdfrmsbyobjpos.cxx b/sw/source/core/layout/movedfwdfrmsbyobjpos.cxx
index d812aa3..60774d7 100644
--- a/sw/source/core/layout/movedfwdfrmsbyobjpos.cxx
+++ b/sw/source/core/layout/movedfwdfrmsbyobjpos.cxx
@@ -21,7 +21,7 @@
 #include <txtfrm.hxx>
 #include <rowfrm.hxx>
 #include <pagefrm.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 SwMovedFwdFrmsByObjPos::SwMovedFwdFrmsByObjPos()
 {
diff --git a/sw/source/core/layout/pagechg.cxx b/sw/source/core/layout/pagechg.cxx
index 62de3e7..ac888b8 100644
--- a/sw/source/core/layout/pagechg.cxx
+++ b/sw/source/core/layout/pagechg.cxx
@@ -53,7 +53,7 @@
 #include "pagedesc.hxx"
 #include <editeng/frmdiritem.hxx>
 #include <sortedobjs.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <txtfly.hxx>
 
 using namespace ::com::sun::star;
diff --git a/sw/source/core/layout/pagedesc.cxx b/sw/source/core/layout/pagedesc.cxx
index 0d05037..fffe9df 100644
--- a/sw/source/core/layout/pagedesc.cxx
+++ b/sw/source/core/layout/pagedesc.cxx
@@ -34,7 +34,7 @@
 #include <IDocumentLayoutAccess.hxx>
 #include <IDocumentStylePoolAccess.hxx>
 #include <poolfmt.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace ::com::sun::star;
 
diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index d2372ac..dfdf6a3 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -27,7 +27,7 @@
 #include <svx/framelink.hxx>
 #include <drawdoc.hxx>
 #include <tgrditem.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <fmtsrnd.hxx>
 #include <fmtclds.hxx>
 #include <comcore.hrc>
diff --git a/sw/source/core/layout/softpagebreak.cxx b/sw/source/core/layout/softpagebreak.cxx
index 85fb783..96f9190 100644
--- a/sw/source/core/layout/softpagebreak.cxx
+++ b/sw/source/core/layout/softpagebreak.cxx
@@ -23,7 +23,7 @@
 #include "frmfmt.hxx"
 #include "rowfrm.hxx"
 #include "tabfrm.hxx"
-#include "switerator.hxx"
+#include <calbck.hxx>
 
 void SwTxtNode::fillSoftPageBreakList( SwSoftPageBreakList& rBreak ) const
 {
diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx
index 2a6e97a..e5b89cb 100644
--- a/sw/source/core/layout/tabfrm.cxx
+++ b/sw/source/core/layout/tabfrm.cxx
@@ -52,7 +52,7 @@
 #include <sortedobjs.hxx>
 #include <objectformatter.hxx>
 #include <layouter.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <DocumentSettingManager.hxx>
 #include <docary.hxx>
 
diff --git a/sw/source/core/table/swnewtable.cxx b/sw/source/core/table/swnewtable.cxx
index 8a10f5d..dbb1d00 100644
--- a/sw/source/core/table/swnewtable.cxx
+++ b/sw/source/core/table/swnewtable.cxx
@@ -40,7 +40,7 @@
 #include <editeng/boxitem.hxx>
 #include <editeng/protitem.hxx>
 #include <swtblfmt.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 #ifdef DBG_UTIL
 #define CHECK_TABLE(t) (t).CheckConsistency();
diff --git a/sw/source/core/table/swtable.cxx b/sw/source/core/table/swtable.cxx
index d082e47..100745d 100644
--- a/sw/source/core/table/swtable.cxx
+++ b/sw/source/core/table/swtable.cxx
@@ -58,7 +58,7 @@
 #include <viewsh.hxx>
 #include <redline.hxx>
 #include <list>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 #ifdef DBG_UTIL
 #define CHECK_TABLE(t) (t).CheckConsistency();
diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx
index 6e169d4..0544510 100644
--- a/sw/source/core/text/EnhancedPDFExportHelper.cxx
+++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx
@@ -72,7 +72,7 @@
 #include <IMark.hxx>
 #include <printdata.hxx>
 #include <SwNodeNum.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <stack>
 
 #include <tools/globname.hxx>
diff --git a/sw/source/core/text/itratr.cxx b/sw/source/core/text/itratr.cxx
index cfa3dcb..b16996f 100644
--- a/sw/source/core/text/itratr.cxx
+++ b/sw/source/core/text/itratr.cxx
@@ -54,7 +54,7 @@
 #include <com/sun/star/i18n/WordType.hpp>
 #include <com/sun/star/i18n/ScriptType.hpp>
 #include <editeng/lrspitem.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace ::com::sun::star::i18n;
 using namespace ::com::sun::star;
diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx
index 4df3cbb..2213428 100644
--- a/sw/source/core/text/porlay.cxx
+++ b/sw/source/core/text/porlay.cxx
@@ -46,7 +46,7 @@
 #include <docary.hxx>
 #include <redline.hxx>
 #include <section.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <IDocumentRedlineAccess.hxx>
 #include <IDocumentSettingAccess.hxx>
 #include <IDocumentContentOperations.hxx>
diff --git a/sw/source/core/text/txtdrop.cxx b/sw/source/core/text/txtdrop.cxx
index c684268..ba8a3e3 100644
--- a/sw/source/core/text/txtdrop.cxx
+++ b/sw/source/core/text/txtdrop.cxx
@@ -36,7 +36,7 @@
 #include <editeng/langitem.hxx>
 #include <charatr.hxx>
 #include <editeng/fhgtitem.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace ::com::sun::star::i18n;
 using namespace ::com::sun::star;
diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx
index ddd658b..43947ed 100644
--- a/sw/source/core/text/txtfrm.cxx
+++ b/sw/source/core/text/txtfrm.cxx
@@ -74,7 +74,7 @@
 #include <swtable.hxx>
 #include <fldupde.hxx>
 #include <IGrammarContact.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <ftnidx.hxx>
 
 TYPEINIT1( SwTxtFrm, SwCntntFrm );
diff --git a/sw/source/core/tox/tox.cxx b/sw/source/core/tox/tox.cxx
index 63faef1..66c86db 100644
--- a/sw/source/core/tox/tox.cxx
+++ b/sw/source/core/tox/tox.cxx
@@ -32,7 +32,7 @@
 #include <SwStyleNameMapper.hxx>
 #include <hints.hxx>
 #include <functional>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 #include <boost/optional.hpp>
 
diff --git a/sw/source/core/txtnode/atrflyin.cxx b/sw/source/core/txtnode/atrflyin.cxx
index b5ce09ba..d82afbc 100644
--- a/sw/source/core/txtnode/atrflyin.cxx
+++ b/sw/source/core/txtnode/atrflyin.cxx
@@ -33,7 +33,7 @@
 #include "txtfrm.hxx"
 #include "flyfrms.hxx"
 #include <objectformatter.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 SwFmtFlyCnt::SwFmtFlyCnt( SwFrmFmt *pFrmFmt )
     : SfxPoolItem( RES_TXTATR_FLYCNT ),
diff --git a/sw/source/core/txtnode/atrftn.cxx b/sw/source/core/txtnode/atrftn.cxx
index a71f11c..5ccaa1f 100644
--- a/sw/source/core/txtnode/atrftn.cxx
+++ b/sw/source/core/txtnode/atrftn.cxx
@@ -34,7 +34,7 @@
 #include <ndindex.hxx>
 #include <fmtftntx.hxx>
 #include <section.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 namespace {
     /// Get a sorted list of the used footnote reference numbers.
diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx
index c630288..17b3992 100644
--- a/sw/source/core/txtnode/ndtxt.cxx
+++ b/sw/source/core/txtnode/ndtxt.cxx
@@ -83,7 +83,7 @@
 #include <svl/intitem.hxx>
 #include <list.hxx>
 #include <sortedobjs.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <attrhint.hxx>
 #include <memory>
 
diff --git a/sw/source/core/undo/unattr.cxx b/sw/source/core/undo/unattr.cxx
index 1e00de1..837754c 100644
--- a/sw/source/core/undo/unattr.cxx
+++ b/sw/source/core/undo/unattr.cxx
@@ -57,7 +57,7 @@
 #include <redline.hxx>
 #include <section.hxx>
 #include <charfmt.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 SwUndoFmtAttrHelper::SwUndoFmtAttrHelper( SwFmt& rFmt, bool bSvDrwPt )
     : SwClient( &rFmt )
diff --git a/sw/source/core/undo/untbl.cxx b/sw/source/core/undo/untbl.cxx
index 990418e..9bcf55e 100644
--- a/sw/source/core/undo/untbl.cxx
+++ b/sw/source/core/undo/untbl.cxx
@@ -62,7 +62,7 @@
 #include <fmtanchr.hxx>
 #include <comcore.hrc>
 #include <unochart.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <memory>
 #include <vector>
 
diff --git a/sw/source/core/unocore/unocoll.cxx b/sw/source/core/unocore/unocoll.cxx
index 4d11509..abff749 100644
--- a/sw/source/core/unocore/unocoll.cxx
+++ b/sw/source/core/unocore/unocoll.cxx
@@ -71,7 +71,7 @@
 #include <unorefmark.hxx>
 #include <unometa.hxx>
 #include "docsh.hxx"
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <com/sun/star/document/XCodeNameQuery.hpp>
 #include <com/sun/star/drawing/XDrawPageSupplier.hpp>
 #include <com/sun/star/form/XFormsSupplier.hpp>
diff --git a/sw/source/core/unocore/unodraw.cxx b/sw/source/core/unocore/unodraw.cxx
index 375e8c6..d2df9ec 100644
--- a/sw/source/core/unocore/unodraw.cxx
+++ b/sw/source/core/unocore/unodraw.cxx
@@ -65,7 +65,7 @@
 #include <com/sun/star/text/TextContentAnchorType.hpp>
 #include <basegfx/matrix/b2dhommatrixtools.hxx>
 #include <com/sun/star/drawing/PointSequence.hpp>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace ::com::sun::star;
 
diff --git a/sw/source/core/unocore/unofield.cxx b/sw/source/core/unocore/unofield.cxx
index 75d59a8..92de986 100644
--- a/sw/source/core/unocore/unofield.cxx
+++ b/sw/source/core/unocore/unofield.cxx
@@ -93,7 +93,7 @@
 #include <editeng/outliner.hxx>
 #include <docsh.hxx>
 #include <fmtmeta.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <rtl/strbuf.hxx>
 #include <vector>
 
diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx
index 39e74f2..6a3ffd1 100644
--- a/sw/source/core/unocore/unoframe.cxx
+++ b/sw/source/core/unocore/unoframe.cxx
@@ -116,7 +116,7 @@
 #include <fmtfollowtextflow.hxx>
 #include <fmtwrapinfluenceonobjpos.hxx>
 #include <toolkit/helper/vclunohelper.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <comphelper/servicehelper.hxx>
 #include <cppuhelper/supportsservice.hxx>
 
diff --git a/sw/source/core/unocore/unoobj2.cxx b/sw/source/core/unocore/unoobj2.cxx
index 4980ed0..58a7101 100644
--- a/sw/source/core/unocore/unoobj2.cxx
+++ b/sw/source/core/unocore/unoobj2.cxx
@@ -110,7 +110,7 @@
 #include <algorithm>
 #include <iterator>
 #include <boost/bind.hpp>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <comphelper/servicehelper.hxx>
 #include <cppuhelper/supportsservice.hxx>
 
diff --git a/sw/source/core/unocore/unoportenum.cxx b/sw/source/core/unocore/unoportenum.cxx
index 964d1f49..80c1abd 100644
--- a/sw/source/core/unocore/unoportenum.cxx
+++ b/sw/source/core/unocore/unoportenum.cxx
@@ -54,7 +54,7 @@
 #include <unocoll.hxx>
 #include <redline.hxx>
 #include <crsskip.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <docufld.hxx>
 #include <osl/mutex.hxx>
 #include <txtfld.hxx>
diff --git a/sw/source/core/unocore/unoredlines.cxx b/sw/source/core/unocore/unoredlines.cxx
index 94891fb..4d15d2c 100644
--- a/sw/source/core/unocore/unoredlines.cxx
+++ b/sw/source/core/unocore/unoredlines.cxx
@@ -32,7 +32,7 @@
 #include <IDocumentStylePoolAccess.hxx>
 #include <docary.hxx>
 #include <redline.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace ::com::sun::star;
 
diff --git a/sw/source/core/unocore/unotbl.cxx b/sw/source/core/unocore/unotbl.cxx
index ee4d66f..5b74c2f 100644
--- a/sw/source/core/unocore/unotbl.cxx
+++ b/sw/source/core/unocore/unotbl.cxx
@@ -94,7 +94,7 @@
 #include <sortopt.hxx>
 #include <rtl/math.hxx>
 #include <editeng/frmdiritem.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <comphelper/servicehelper.hxx>
 #include <comphelper/string.hxx>
 #include <cppuhelper/supportsservice.hxx>
diff --git a/sw/source/core/view/vnew.cxx b/sw/source/core/view/vnew.cxx
index 37a17c0..5fdaf05 100644
--- a/sw/source/core/view/vnew.cxx
+++ b/sw/source/core/view/vnew.cxx
@@ -39,7 +39,7 @@
 #include <ndgrf.hxx>
 #include <ndindex.hxx>
 #include <accessibilityoptions.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 void SwViewShell::Init( const SwViewOption *pNewOpt )
 {
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index 9b4f78c..95b0010 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -317,7 +317,7 @@ void MSWordExportBase::OutputItemSet( const SfxItemSet& rSet, bool bPapFmt, bool
     }
 }
 
-#include "switerator.hxx"
+#include <calbck.hxx>
 
 void MSWordExportBase::GatherChapterFields()
 {
diff --git a/sw/source/filter/xml/xmltexti.cxx b/sw/source/filter/xml/xmltexti.cxx
index 9849a90..a12e5ae 100644
--- a/sw/source/filter/xml/xmltexti.cxx
+++ b/sw/source/filter/xml/xmltexti.cxx
@@ -54,7 +54,7 @@
 #include <ndole.hxx>
 #include <docsh.hxx>
 #include <sfx2/docfile.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <vcl/svapp.hxx>
 #include <osl/mutex.hxx>
 #include <toolkit/helper/vclunohelper.hxx>
diff --git a/sw/source/ui/fldui/fldpage.cxx b/sw/source/ui/fldui/fldpage.cxx
index 49205e8..a8d2b4a 100644
--- a/sw/source/ui/fldui/fldpage.cxx
+++ b/sw/source/ui/fldui/fldpage.cxx
@@ -37,7 +37,7 @@
 #include <cmdid.h>
 #include <globals.hrc>
 #include <sfx2/bindings.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace ::com::sun::star;
 
diff --git a/sw/source/uibase/app/docsh.cxx b/sw/source/uibase/app/docsh.cxx
index 12b4aeb..84c4285 100644
--- a/sw/source/uibase/app/docsh.cxx
+++ b/sw/source/uibase/app/docsh.cxx
@@ -119,7 +119,7 @@
 #include <unotextrange.hxx>
 
 #include <sfx2/Metadatable.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
diff --git a/sw/source/uibase/dochdl/swdtflvr.cxx b/sw/source/uibase/dochdl/swdtflvr.cxx
index 27c2f33..51f8952 100644
--- a/sw/source/uibase/dochdl/swdtflvr.cxx
+++ b/sw/source/uibase/dochdl/swdtflvr.cxx
@@ -122,7 +122,7 @@
 #include <osl/mutex.hxx>
 #include <vcl/svapp.hxx>
 #include <swserv.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 
 #include <vcl/GraphicNativeTransform.hxx>
 #include <vcl/GraphicNativeMetadata.hxx>
diff --git a/sw/source/uibase/docvw/PostItMgr.cxx b/sw/source/uibase/docvw/PostItMgr.cxx
index fa8f58d..8583401 100644
--- a/sw/source/uibase/docvw/PostItMgr.cxx
+++ b/sw/source/uibase/docvw/PostItMgr.cxx
@@ -78,7 +78,7 @@
 #include "annotsh.hxx"
 #include "swabstdlg.hxx"
 #include "swevent.hxx"
-#include "switerator.hxx"
+#include <calbck.hxx>
 #include <boost/scoped_ptr.hpp>
 
 // distance between Anchor Y and initial note position
diff --git a/sw/source/uibase/shells/textfld.cxx b/sw/source/uibase/shells/textfld.cxx
index 8493175..31bbd37 100644
--- a/sw/source/uibase/shells/textfld.cxx
+++ b/sw/source/uibase/shells/textfld.cxx
@@ -69,7 +69,7 @@
 #include <app.hrc>
 #include <edtwin.hxx>
 #include <PostItMgr.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include <boost/scoped_ptr.hpp>
 
 using namespace nsSwDocInfoSubType;
diff --git a/sw/source/uibase/uno/unotxvw.cxx b/sw/source/uibase/uno/unotxvw.cxx
index 37b835c..fff7af2 100644
--- a/sw/source/uibase/uno/unotxvw.cxx
+++ b/sw/source/uibase/uno/unotxvw.cxx
@@ -69,7 +69,7 @@
 #include <unocrsrhelper.hxx>
 #include <unotextrange.hxx>
 #include <sfx2/docfile.hxx>
-#include <switerator.hxx>
+#include <calbck.hxx>
 #include "swdtflvr.hxx"
 #include <vcl/svapp.hxx>
 #include <comphelper/processfactory.hxx>
commit ce3661d36e08c6cf04abcf258f66a869abc4cdee
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Mar 18 13:42:10 2015 +0100

    static checks ftw
    
    Change-Id: I73a231a091a84f7c27e3d7e0e32f6042c7ac0df6

diff --git a/sw/inc/switerator.hxx b/sw/inc/switerator.hxx
index 4cb3954..8221642 100644
--- a/sw/inc/switerator.hxx
+++ b/sw/inc/switerator.hxx
@@ -19,15 +19,18 @@
 #ifndef INCLUDED_SW_INC_SWITERATOR_HXX
 #define INCLUDED_SW_INC_SWITERATOR_HXX
 
+#include <type_traits>
 #include <calbck.hxx>
 #include <sal/log.hxx>
 
 template< class TElementType, class TSource > class SwIterator SAL_FINAL
 {
+
+    static_assert(std::is_base_of<SwClient,TElementType>::value, "TElementType needs to be derived from SwClient");
     SwClientIter aClientIter;
 public:
 
-    SwIterator( const TSource& rSrc ) : aClientIter(rSrc) { assert(TElementType::IsOf( TYPE(SwClient) )); }
+    SwIterator( const TSource& rSrc ) : aClientIter(rSrc) {}
     TElementType* First()
     {
         aClientIter.GoStart();
commit de1e121daa30ee2c2770c7ad309c73f96fce92db
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Mar 18 12:24:46 2015 +0100

    move GoEnd to SwIterator<>
    
    Change-Id: I1c50425743d6f5e55eb45b0902e256e17d81cc9e

diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index 4113785..a3bd078 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -265,15 +265,6 @@ class SwClientIter SAL_FINAL : public sw::Ring<SwClientIter>
                 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;
 
diff --git a/sw/inc/switerator.hxx b/sw/inc/switerator.hxx
index 693393e..4cb3954 100644
--- a/sw/inc/switerator.hxx
+++ b/sw/inc/switerator.hxx
@@ -38,11 +38,14 @@ public:
     }
     TElementType* Last()
     {
-        aClientIter.GoEnd();
         if(!aClientIter.m_pPosition)
-            return nullptr;
+            aClientIter.m_pPosition = const_cast<SwClient*>(aClientIter.m_rRoot.GetDepends());
+        if(!aClientIter.m_pPosition)
+            return PTR_CAST(TElementType,aClientIter.m_pCurrent = nullptr);
+        while(aClientIter.GetRighOfPos())
+            aClientIter.m_pPosition = aClientIter.GetRighOfPos();
         if(aClientIter.m_pPosition->IsA(TYPE(TElementType)))
-            return PTR_CAST(TElementType,aClientIter.m_pPosition);
+            return PTR_CAST(TElementType,aClientIter.m_pCurrent = aClientIter.m_pPosition);
         return Previous();
     }
     TElementType* Next()


More information about the Libreoffice-commits mailing list