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 <gan...@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.yosh...@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.yosh...@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.yosh...@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 _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits