[Libreoffice-commits] .: 4 commits - editeng/source sw/source

Kohei Yoshida kohei at kemper.freedesktop.org
Tue Mar 27 12:07:26 PDT 2012


 editeng/source/editeng/edtspell.cxx |   96 +++++++++++++++++++++++++++---------
 editeng/source/editeng/edtspell.hxx |   27 +++++++---
 sw/source/core/doc/docedt.cxx       |   34 +++++-------
 3 files changed, 107 insertions(+), 50 deletions(-)

New commits:
commit 7628ced726c4de4bb9c98675c1ff77f5b7762ab6
Author: Bartosz Kosiorek <gang65 at poczta.onet.pl>
Date:   Sun Mar 25 23:46:01 2012 +0200

    Convert SV_PTRARR_DEL to boost::ptr_vector

diff --git a/sw/source/core/doc/docedt.cxx b/sw/source/core/doc/docedt.cxx
index 6c73ba1..c805779 100644
--- a/sw/source/core/doc/docedt.cxx
+++ b/sw/source/core/doc/docedt.cxx
@@ -161,9 +161,7 @@ struct _SaveRedline
     }
 };
 
-SV_DECL_PTRARR_DEL( _SaveRedlines, _SaveRedline*, 0 )
-
-SV_IMPL_PTRARR( _SaveRedlines, _SaveRedline* )
+typedef boost::ptr_vector< _SaveRedline > _SaveRedlines;
 
 bool lcl_MayOverwrite( const SwTxtNode *pNode, const xub_StrLen nPos )
 {
@@ -532,7 +530,7 @@ void lcl_SaveRedlines( const SwPaM& aPam, _SaveRedlines& rArr )
 
             // save the current redline
             _SaveRedline* pSave = new _SaveRedline( pCurrent, *pStart );
-            rArr.C40_INSERT( _SaveRedline, pSave, rArr.Count() );
+            rArr.push_back( pSave );
         }
     }
 
@@ -545,11 +543,10 @@ void lcl_RestoreRedlines( SwDoc* pDoc, const SwPosition& rPos, _SaveRedlines& rA
     RedlineMode_t eOld = pDoc->GetRedlineMode();
     pDoc->SetRedlineMode_intern( (RedlineMode_t)(( eOld & ~nsRedlineMode_t::REDLINE_IGNORE) | nsRedlineMode_t::REDLINE_ON ));
 
-    for( sal_uInt16 n = 0; n < rArr.Count(); ++n )
+    for( size_t n = 0; n < rArr.size(); ++n )
     {
-        _SaveRedline* pSave = rArr[ n ];
-        pSave->SetPos( rPos );
-        pDoc->AppendRedline( pSave->pRedl, true );
+        rArr[ n ].SetPos( rPos );
+        pDoc->AppendRedline( rArr[ n ].pRedl, true );
     }
 
     pDoc->SetRedlineMode_intern( eOld );
@@ -590,7 +587,7 @@ void lcl_SaveRedlines( const SwNodeRange& rRg, _SaveRedlines& rArr )
                             pTmpPos->nNode.GetNode().GetCntntNode(), 0 );
 
                 _SaveRedline* pSave = new _SaveRedline( pNewRedl, rRg.aStart );
-                rArr.C40_INSERT( _SaveRedline, pSave, rArr.Count() );
+                rArr.push_back( pSave );
 
                 pTmpPos = pTmp->End();
                 pTmpPos->nNode = rRg.aEnd;
@@ -613,7 +610,7 @@ void lcl_SaveRedlines( const SwNodeRange& rRg, _SaveRedlines& rArr )
             {
                 // move everything
                 _SaveRedline* pSave = new _SaveRedline( pTmp, rRg.aStart );
-                rArr.C40_INSERT( _SaveRedline, pSave, rArr.Count() );
+                rArr.push_back( pSave );
             }
             else
             {
@@ -625,7 +622,7 @@ void lcl_SaveRedlines( const SwNodeRange& rRg, _SaveRedlines& rArr )
                             pTmpPos->nNode.GetNode().GetCntntNode(), 0 );
 
                 _SaveRedline* pSave = new _SaveRedline( pNewRedl, rRg.aStart );
-                rArr.C40_INSERT( _SaveRedline, pSave, rArr.Count() );
+                rArr.push_back( pSave );
 
                 pTmpPos = pTmp->Start();
                 pTmpPos->nNode = rRg.aEnd;
@@ -646,11 +643,10 @@ void lcl_RestoreRedlines( SwDoc* pDoc, sal_uInt32 nInsPos, _SaveRedlines& rArr )
     RedlineMode_t eOld = pDoc->GetRedlineMode();
     pDoc->SetRedlineMode_intern( (RedlineMode_t)(( eOld & ~nsRedlineMode_t::REDLINE_IGNORE) | nsRedlineMode_t::REDLINE_ON ));
 
-    for( sal_uInt16 n = 0; n < rArr.Count(); ++n )
+    for( size_t n = 0; n < rArr.size(); ++n )
     {
-        _SaveRedline* pSave = rArr[ n ];
-        pSave->SetPos( nInsPos );
-        pDoc->AppendRedline( pSave->pRedl, true );
+        rArr[ n ].SetPos( nInsPos );
+        pDoc->AppendRedline( rArr[ n ].pRedl, true );
     }
 
     pDoc->SetRedlineMode_intern( eOld );
@@ -880,7 +876,7 @@ bool SwDoc::MoveRange( SwPaM& rPaM, SwPosition& rPos, SwMoveFlags eMvFlags )
     _SaveFlyInRange( rPaM, rPos.nNode, aSaveFlyArr, 0 != ( DOC_MOVEALLFLYS & eMvFlags ) );
 
     // save redlines (if DOC_MOVEREDLINES is used)
-    _SaveRedlines aSaveRedl( 0 );
+    _SaveRedlines aSaveRedl;
     if( DOC_MOVEREDLINES & eMvFlags && GetRedlineTbl().Count() )
     {
         lcl_SaveRedlines( rPaM, aSaveRedl );
@@ -1084,7 +1080,7 @@ bool SwDoc::MoveRange( SwPaM& rPaM, SwPosition& rPos, SwMoveFlags eMvFlags )
     _RestFlyInRange( aSaveFlyArr, rPaM.Start()->nNode, &(rPos.nNode) );
 
     // restore redlines (if DOC_MOVEREDLINES is used)
-    if( aSaveRedl.Count() )
+    if( !aSaveRedl.empty() )
     {
         lcl_RestoreRedlines( this, *aSavePam.Start(), aSaveRedl );
     }
@@ -1129,7 +1125,7 @@ bool SwDoc::MoveNodeRange( SwNodeRange& rRange, SwNodeIndex& rPos,
                                     GetFtnIdxs(), aTmpFntIdx );
     }
 
-    _SaveRedlines aSaveRedl( 0 );
+    _SaveRedlines aSaveRedl;
     SvPtrarr aSavRedlInsPosArr( 0 );
     if( DOC_MOVEREDLINES & eMvFlags && GetRedlineTbl().Count() )
     {
@@ -1212,7 +1208,7 @@ bool SwDoc::MoveNodeRange( SwNodeRange& rRange, SwNodeIndex& rPos,
         }
     }
 
-    if( aSaveRedl.Count() )
+    if( !aSaveRedl.empty() )
         lcl_RestoreRedlines( this, aIdx.GetIndex(), aSaveRedl );
 
     if( pUndo )
commit 3670b2a2b15c5342562080630037e1959659da73
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Mar 27 14:27:02 2012 -0400

    Let's hide stuff like this from header..

diff --git a/editeng/source/editeng/edtspell.cxx b/editeng/source/editeng/edtspell.cxx
index bf21be8..b3c9dbb 100644
--- a/editeng/source/editeng/edtspell.cxx
+++ b/editeng/source/editeng/edtspell.cxx
@@ -207,6 +207,8 @@ void EditSpellWrapper::CheckSpellTo()
 
 //////////////////////////////////////////////////////////////////////
 
+#define NOT_INVALID 0xFFFF
+
 WrongList::WrongList() : nInvalidStart(0), nInvalidEnd(0xFFFF) {}
 
 WrongList::WrongList(const WrongList& r) :
@@ -216,6 +218,17 @@ WrongList::WrongList(const WrongList& r) :
 
 WrongList::~WrongList() {}
 
+bool WrongList::IsInvalid() const
+{
+    return nInvalidStart != NOT_INVALID;
+}
+
+void WrongList::SetValid()
+{
+    nInvalidStart = NOT_INVALID;
+    nInvalidEnd = 0;
+}
+
 void WrongList::MarkInvalid( sal_uInt16 nS, sal_uInt16 nE )
 {
     if ( ( nInvalidStart == NOT_INVALID ) || ( nInvalidStart > nS ) )
diff --git a/editeng/source/editeng/edtspell.hxx b/editeng/source/editeng/edtspell.hxx
index 1b23b17..52d1bbd 100644
--- a/editeng/source/editeng/edtspell.hxx
+++ b/editeng/source/editeng/edtspell.hxx
@@ -81,8 +81,6 @@ struct WrongRange
     WrongRange( sal_uInt16 nS, sal_uInt16 nE ) { nStart = nS; nEnd = nE; }
 };
 
-#define NOT_INVALID 0xFFFF
-
 class WrongList
 {
 private:
@@ -100,8 +98,8 @@ public:
     WrongList(const WrongList& r);
     ~WrongList();
 
-    sal_Bool    IsInvalid() const       { return nInvalidStart != NOT_INVALID; }
-    void    SetValid()              { nInvalidStart = NOT_INVALID; nInvalidEnd = 0; }
+    bool    IsInvalid() const;
+    void    SetValid();
     void    MarkInvalid( sal_uInt16 nS, sal_uInt16 nE );
 
     sal_uInt16  GetInvalidStart() const { return nInvalidStart; }
commit 80ecd30e1c7b753f2b24147e47204c97d253d394
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Mar 27 14:19:31 2012 -0400

    It's cleaner to use copy ctor for cloning.

diff --git a/editeng/source/editeng/edtspell.cxx b/editeng/source/editeng/edtspell.cxx
index 13dcf28..bf21be8 100644
--- a/editeng/source/editeng/edtspell.cxx
+++ b/editeng/source/editeng/edtspell.cxx
@@ -207,15 +207,14 @@ void EditSpellWrapper::CheckSpellTo()
 
 //////////////////////////////////////////////////////////////////////
 
-WrongList::WrongList()
-{
-    nInvalidStart = 0;
-    nInvalidEnd = 0xFFFF;
-}
+WrongList::WrongList() : nInvalidStart(0), nInvalidEnd(0xFFFF) {}
 
-WrongList::~WrongList()
-{
-}
+WrongList::WrongList(const WrongList& r) :
+    maRanges(r.maRanges),
+    nInvalidStart(r.nInvalidStart),
+    nInvalidEnd(r.nInvalidEnd) {}
+
+WrongList::~WrongList() {}
 
 void WrongList::MarkInvalid( sal_uInt16 nS, sal_uInt16 nE )
 {
@@ -244,7 +243,7 @@ void WrongList::TextInserted( sal_uInt16 nPos, sal_uInt16 nNew, sal_Bool bPosIsS
 
     for (size_t i = 0, n = maRanges.size(); i < n; ++i)
     {
-        WrongRange & rWrong = maRanges[i]; // why does this thing derive vector?
+        WrongRange& rWrong = maRanges[i];
         bool bRefIsValid = true;
         if (rWrong.nEnd >= nPos)
         {
@@ -477,11 +476,7 @@ void WrongList::MarkWrongsInvalid()
 
 WrongList* WrongList::Clone() const
 {
-    WrongList* pNew = new WrongList;
-    pNew->maRanges.reserve(maRanges.size());
-    for (WrongList::const_iterator i = maRanges.begin(); i != maRanges.end(); ++i)
-        pNew->maRanges.push_back(*i);
-    return pNew;
+    return new WrongList(*this);
 }
 
 // #i102062#
diff --git a/editeng/source/editeng/edtspell.hxx b/editeng/source/editeng/edtspell.hxx
index 47dc59f..1b23b17 100644
--- a/editeng/source/editeng/edtspell.hxx
+++ b/editeng/source/editeng/edtspell.hxx
@@ -96,8 +96,9 @@ public:
     typedef std::vector<WrongRange>::iterator iterator;
     typedef std::vector<WrongRange>::const_iterator const_iterator;
 
-            WrongList();
-            ~WrongList();
+    WrongList();
+    WrongList(const WrongList& r);
+    ~WrongList();
 
     sal_Bool    IsInvalid() const       { return nInvalidStart != NOT_INVALID; }
     void    SetValid()              { nInvalidStart = NOT_INVALID; nInvalidEnd = 0; }
commit e747c9df0bcbc68935b0adf0eaa166ae1a1abe05
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Mar 27 14:13:47 2012 -0400

    Publicly deriving from STL is not a good idea...

diff --git a/editeng/source/editeng/edtspell.cxx b/editeng/source/editeng/edtspell.cxx
index 2963f12..13dcf28 100644
--- a/editeng/source/editeng/edtspell.cxx
+++ b/editeng/source/editeng/edtspell.cxx
@@ -242,10 +242,10 @@ void WrongList::TextInserted( sal_uInt16 nPos, sal_uInt16 nNew, sal_Bool bPosIsS
             nInvalidEnd = nPos+nNew;
     }
 
-    for (WrongList::size_type i = 0; i < size(); ++i)
+    for (size_t i = 0, n = maRanges.size(); i < n; ++i)
     {
-        WrongRange & rWrong = (*this)[i]; // why does this thing derive vector?
-        sal_Bool bRefIsValid = sal_True;
+        WrongRange & rWrong = maRanges[i]; // why does this thing derive vector?
+        bool bRefIsValid = true;
         if (rWrong.nEnd >= nPos)
         {
             // Move all Wrongs after the insert position...
@@ -271,7 +271,7 @@ void WrongList::TextInserted( sal_uInt16 nPos, sal_uInt16 nNew, sal_Bool bPosIsS
                     // Split Wrong...
                     WrongRange aNewWrong(rWrong.nStart, nPos);
                     rWrong.nStart = nPos + 1;
-                    insert(begin() + i, aNewWrong);
+                    maRanges.insert(maRanges.begin() + i, aNewWrong);
                     // Reference no longer valid after Insert, the other
                     // was inserted in front of this position
                     bRefIsValid = false;
@@ -351,7 +351,7 @@ void WrongList::TextDeleted( sal_uInt16 nPos, sal_uInt16 nDeleted )
                 "TextDeleted, WrongRange: Start >= End?!");
         if ( bDelWrong )
         {
-            i = erase(i);
+            i = maRanges.erase(i);
         }
         else
         {
@@ -425,7 +425,7 @@ void WrongList::ClearWrongs( sal_uInt16 nStart, sal_uInt16 nEnd,
             }
             else
             {
-                i = erase(i);
+                i = maRanges.erase(i);
                 // no increment here
             }
         }
@@ -461,26 +461,26 @@ void WrongList::InsertWrong( sal_uInt16 nStart, sal_uInt16 nEnd,
         }
     }
 
-    if (nPos != end())
-        insert(nPos, WrongRange(nStart, nEnd));
+    if (nPos != maRanges.end())
+        maRanges.insert(nPos, WrongRange(nStart, nEnd));
     else
-        push_back(WrongRange(nStart, nEnd));
+        maRanges.push_back(WrongRange(nStart, nEnd));
 
     SAL_WARN_IF(DbgIsBuggy(), "editeng", "InsertWrong: WrongList broken!");
 }
 
 void WrongList::MarkWrongsInvalid()
 {
-    if (!empty())
-        MarkInvalid(front().nStart, back().nEnd );
+    if (!maRanges.empty())
+        MarkInvalid(maRanges.front().nStart, maRanges.back().nEnd );
 }
 
 WrongList* WrongList::Clone() const
 {
     WrongList* pNew = new WrongList;
-    pNew->reserve(size());
-    for (WrongList::const_iterator i = begin(); i != end(); ++i)
-        pNew->push_back(*i);
+    pNew->maRanges.reserve(maRanges.size());
+    for (WrongList::const_iterator i = maRanges.begin(); i != maRanges.end(); ++i)
+        pNew->maRanges.push_back(*i);
     return pNew;
 }
 
@@ -490,13 +490,13 @@ bool WrongList::operator==(const WrongList& rCompare) const
     // cleck direct members
     if(GetInvalidStart() != rCompare.GetInvalidStart()
         || GetInvalidEnd() != rCompare.GetInvalidEnd()
-        || size() != rCompare.size())
+        || maRanges.size() != rCompare.maRanges.size())
         return false;
 
-    WrongList::const_iterator rCA = begin();
-    WrongList::const_iterator rCB = rCompare.begin();
+    WrongList::const_iterator rCA = maRanges.begin();
+    WrongList::const_iterator rCB = rCompare.maRanges.begin();
 
-    for (; rCA != end(); ++rCA, ++rCB)
+    for (; rCA != maRanges.end(); ++rCA, ++rCB)
     {
         if(rCA->nStart != rCB->nStart || rCA->nEnd != rCB->nEnd)
             return false;
@@ -505,6 +505,46 @@ bool WrongList::operator==(const WrongList& rCompare) const
     return true;
 }
 
+bool WrongList::empty() const
+{
+    return maRanges.empty();
+}
+
+void WrongList::push_back(const WrongRange& rRange)
+{
+    maRanges.push_back(rRange);
+}
+
+WrongRange& WrongList::back()
+{
+    return maRanges.back();
+}
+
+const WrongRange& WrongList::back() const
+{
+    return maRanges.back();
+}
+
+WrongList::iterator WrongList::begin()
+{
+    return maRanges.begin();
+}
+
+WrongList::iterator WrongList::end()
+{
+    return maRanges.end();
+}
+
+WrongList::const_iterator WrongList::begin() const
+{
+    return maRanges.begin();
+}
+
+WrongList::const_iterator WrongList::end() const
+{
+    return maRanges.end();
+}
+
 sal_Bool WrongList::DbgIsBuggy() const
 {
     // Check if the ranges overlap.
diff --git a/editeng/source/editeng/edtspell.hxx b/editeng/source/editeng/edtspell.hxx
index edf2ec1..47dc59f 100644
--- a/editeng/source/editeng/edtspell.hxx
+++ b/editeng/source/editeng/edtspell.hxx
@@ -83,15 +83,19 @@ struct WrongRange
 
 #define NOT_INVALID 0xFFFF
 
-class WrongList : public std::vector<WrongRange>
+class WrongList
 {
 private:
+    std::vector<WrongRange> maRanges;
     sal_uInt16  nInvalidStart;
     sal_uInt16  nInvalidEnd;
 
     sal_Bool    DbgIsBuggy() const;
 
 public:
+    typedef std::vector<WrongRange>::iterator iterator;
+    typedef std::vector<WrongRange>::const_iterator const_iterator;
+
             WrongList();
             ~WrongList();
 
@@ -119,6 +123,16 @@ public:
 
     // #i102062#
     bool operator==(const WrongList& rCompare) const;
+
+    bool empty() const;
+    void push_back(const WrongRange& rRange);
+    WrongRange& back();
+    const WrongRange& back() const;
+
+    iterator begin();
+    iterator end();
+    const_iterator begin() const;
+    const_iterator end() const;
 };
 
 class EdtAutoCorrDoc : public SvxAutoCorrDoc


More information about the Libreoffice-commits mailing list