sc/inc/rangenam.hxx | 18 ++++---------- sc/source/core/data/documen2.cxx | 4 +-- sc/source/core/data/document.cxx | 8 +++--- sc/source/core/data/table1.cxx | 19 +++++--------- sc/source/core/tool/rangenam.cxx | 50 ++++++++++++++------------------------- 5 files changed, 37 insertions(+), 62 deletions(-)
New commits: commit df1e34997beb78fcd2622678209571469dc6bdc1 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Thu Jul 25 22:17:28 2013 -0400 Let's not use numerical magic numbers. Prefer enum. Change-Id: I84d14dd06a2b28d7a8a1544f26eae180b6ea86b5 diff --git a/sc/inc/rangenam.hxx b/sc/inc/rangenam.hxx index 436f82a..4a5944f 100644 --- a/sc/inc/rangenam.hxx +++ b/sc/inc/rangenam.hxx @@ -30,13 +30,8 @@ #include <boost/ptr_container/ptr_set.hpp> #include <boost/ptr_container/ptr_map.hpp> -//------------------------------------------------------------------------ - class ScDocument; - - - -//------------------------------------------------------------------------ +class ScTokenArray; typedef sal_uInt16 RangeType; @@ -52,10 +47,6 @@ typedef sal_uInt16 RangeType; #define RT_SHARED ((RangeType)0x0100) #define RT_SHAREDMOD ((RangeType)0x0200) -//------------------------------------------------------------------------ - -class ScTokenArray; - class ScRangeData { private: @@ -77,6 +68,9 @@ private: void CompileRangeData( const String& rSymbol, bool bSetError ); void InitCode(); public: + + enum TabRefUpdateMode { Insert = 1, Delete = 2, Move = 3 }; + typedef ::std::map<sal_uInt16, sal_uInt16> IndexMap; SC_DLLPUBLIC ScRangeData( ScDocument* pDoc, @@ -139,7 +133,7 @@ public: SC_DLLPUBLIC bool IsValidReference( ScRange& rRef ) const; bool IsRangeAtBlock( const ScRange& ) const; - void UpdateTabRef(SCTAB nOldTable, sal_uInt16 nFlag, SCTAB nNewTable, SCTAB nNewSheets); + void UpdateTabRef(SCTAB nOldTable, TabRefUpdateMode eMode, SCTAB nNewTable, SCTAB nNewSheets); void ValidateTabRefs(); @@ -189,7 +183,7 @@ public: SC_DLLPUBLIC ScRangeData* findByIndex(sal_uInt16 i) const; void UpdateReference(UpdateRefMode eUpdateRefMode, const ScRange& rRange, SCsCOL nDx, SCsROW nDy, SCsTAB nDz, bool bLocal = false); - void UpdateTabRef(SCTAB nTable, sal_uInt16 nFlag, SCTAB nNewTable = 0, SCTAB nNewSheets = 1); + void UpdateTabRef(SCTAB nTable, ScRangeData::TabRefUpdateMode eMode, SCTAB nNewTable = 0, SCTAB nNewSheets = 1); void UpdateTranspose(const ScRange& rSource, const ScAddress& rDest); void UpdateGrow(const ScRange& rArea, SCCOL nGrowX, SCROW nGrowY); diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx index d5ddbd4..72f912f 100644 --- a/sc/source/core/data/documen2.cxx +++ b/sc/source/core/data/documen2.cxx @@ -712,7 +712,7 @@ bool ScDocument::MoveTab( SCTAB nOldPos, SCTAB nNewPos, ScProgress* pProgress ) SCsTAB nDz = ((SCsTAB)nNewPos) - (SCsTAB)nOldPos; ScRange aSourceRange( 0,0,nOldPos, MAXCOL,MAXROW,nOldPos ); if (pRangeName) - pRangeName->UpdateTabRef(nOldPos, 3, nNewPos); + pRangeName->UpdateTabRef(nOldPos, ScRangeData::Move, nNewPos); pDBCollection->UpdateMoveTab( nOldPos, nNewPos ); xColNameRanges->UpdateReference( URM_REORDER, this, aSourceRange, 0,0,nDz ); xRowNameRanges->UpdateReference( URM_REORDER, this, aSourceRange, 0,0,nDz ); @@ -799,7 +799,7 @@ bool ScDocument::CopyTab( SCTAB nOldPos, SCTAB nNewPos, const ScMarkData* pOnlyM xColNameRanges->UpdateReference( URM_INSDEL, this, aRange, 0,0,1 ); xRowNameRanges->UpdateReference( URM_INSDEL, this, aRange, 0,0,1 ); if (pRangeName) - pRangeName->UpdateTabRef(nNewPos, 1); + pRangeName->UpdateTabRef(nNewPos, ScRangeData::Insert); pDBCollection->UpdateReference( URM_INSDEL, 0,0,nNewPos, MAXCOL,MAXROW,MAXTAB, 0,0,1 ); if (pDPCollection) diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index 1a4d379..8cbb01f 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -461,7 +461,7 @@ bool ScDocument::InsertTab( SCTAB nPos, const OUString& rName, xColNameRanges->UpdateReference( URM_INSDEL, this, aRange, 0,0,1 ); xRowNameRanges->UpdateReference( URM_INSDEL, this, aRange, 0,0,1 ); if (pRangeName) - pRangeName->UpdateTabRef( nPos, 1 ); + pRangeName->UpdateTabRef(nPos, ScRangeData::Insert); pDBCollection->UpdateReference( URM_INSDEL, 0,0,nPos, MAXCOL,MAXROW,MAXTAB, 0,0,1 ); if (pDPCollection) @@ -546,7 +546,7 @@ bool ScDocument::InsertTabs( SCTAB nPos, const std::vector<OUString>& rNames, xColNameRanges->UpdateReference( URM_INSDEL, this, aRange, 0,0,nNewSheets ); xRowNameRanges->UpdateReference( URM_INSDEL, this, aRange, 0,0,nNewSheets ); if (pRangeName) - pRangeName->UpdateTabRef( nPos, 1, 0, nNewSheets); + pRangeName->UpdateTabRef(nPos, ScRangeData::Insert, 0, nNewSheets); pDBCollection->UpdateReference( URM_INSDEL, 0,0,nPos, MAXCOL,MAXROW,MAXTAB, 0,0,nNewSheets ); if (pDPCollection) @@ -637,7 +637,7 @@ bool ScDocument::DeleteTab( SCTAB nTab ) xColNameRanges->UpdateReference( URM_INSDEL, this, aRange, 0,0,-1 ); xRowNameRanges->UpdateReference( URM_INSDEL, this, aRange, 0,0,-1 ); if (pRangeName) - pRangeName->UpdateTabRef( nTab, 2 ); + pRangeName->UpdateTabRef(nTab, ScRangeData::Delete); pDBCollection->UpdateReference( URM_INSDEL, 0,0,nTab, MAXCOL,MAXROW,MAXTAB, 0,0,-1 ); if (pDPCollection) @@ -717,7 +717,7 @@ bool ScDocument::DeleteTabs( SCTAB nTab, SCTAB nSheets ) pDetOpList->DeleteOnTab( nTab + aTab ); DeleteAreaLinksOnTab( nTab + aTab ); if (pRangeName) - pRangeName->UpdateTabRef( nTab + aTab, 2 ); + pRangeName->UpdateTabRef(nTab + aTab, ScRangeData::Delete); } // normal reference update diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx index 74d41f7..f4bb6b9 100644 --- a/sc/source/core/data/table1.cxx +++ b/sc/source/core/data/table1.cxx @@ -1591,10 +1591,10 @@ void ScTable::UpdateInsertTab(SCTAB nTable, SCTAB nNewSheets) for (SCCOL i=0; i <= MAXCOL; i++) aCol[i].UpdateInsertTab(nTable, nNewSheets); if (mpRangeName) - mpRangeName->UpdateTabRef( nTable, 1, 0, nNewSheets); - - if (mpRangeName) - mpRangeName->UpdateTabRef( nTable, 1); + { + mpRangeName->UpdateTabRef(nTable, ScRangeData::Insert, 0, nNewSheets); + mpRangeName->UpdateTabRef(nTable, ScRangeData::Insert); + } if (IsStreamValid()) SetStreamValid(false); @@ -1618,14 +1618,9 @@ void ScTable::UpdateDeleteTab( SCTAB nTable, SCTAB nSheets ) if (mpRangeName) { for (SCTAB aTab = 0; aTab < nSheets; ++aTab) - { - mpRangeName->UpdateTabRef( nTable + aTab, 2 ); - } - } + mpRangeName->UpdateTabRef(nTable + aTab, ScRangeData::Delete); - if (mpRangeName) - { - mpRangeName->UpdateTabRef( nTable, 2 ); + mpRangeName->UpdateTabRef(nTable, ScRangeData::Delete); } if (IsStreamValid()) @@ -1647,7 +1642,7 @@ void ScTable::UpdateMoveTab( SCTAB nOldPos, SCTAB nNewPos, SCTAB nTabNo, } if (mpRangeName) - mpRangeName->UpdateTabRef(nOldPos, 3, nNewPos); + mpRangeName->UpdateTabRef(nOldPos, ScRangeData::Move, nNewPos); if (IsStreamValid()) SetStreamValid(false); diff --git a/sc/source/core/tool/rangenam.cxx b/sc/source/core/tool/rangenam.cxx index 51d402f..e838b49 100644 --- a/sc/source/core/tool/rangenam.cxx +++ b/sc/source/core/tool/rangenam.cxx @@ -416,40 +416,26 @@ bool ScRangeData::IsValidReference( ScRange& rRange ) const return false; } -void ScRangeData::UpdateTabRef(SCTAB nOldTable, sal_uInt16 nFlag, SCTAB nNewTable, SCTAB nNewSheets) +void ScRangeData::UpdateTabRef(SCTAB nOldTable, TabRefUpdateMode eMode, SCTAB nNewTable, SCTAB nNewSheets) { pCode->Reset(); - if( pCode->GetNextReference() ) + if (!pCode->GetNextReference()) + return; + + switch (eMode) { - ScRangeData* pRangeData = NULL; // must not be dereferenced - bool bChanged; - ScCompiler aComp( pDoc, aPos, *pCode); - aComp.SetGrammar(pDoc->GetGrammar()); - switch (nFlag) + case Insert: + pCode->AdjustReferenceOnInsertedTab(nOldTable, nNewSheets, aPos); + break; + case Delete: + pCode->AdjustReferenceOnDeletedTab(nOldTable, nNewSheets, aPos); + break; + case Move: + pCode->AdjustReferenceOnMovedTab(nOldTable, nNewTable, aPos); + break; + default: { - case 1: // simple InsertTab (doc.cxx) - pRangeData = aComp.UpdateInsertTab(nOldTable, true, nNewSheets ); // und CopyTab (doc2.cxx) - break; - case 2: // simple delete (doc.cxx) - pRangeData = aComp.UpdateDeleteTab(nOldTable, false, true, bChanged); - break; - case 3: // move (doc2.cxx) - { - pRangeData = aComp.UpdateMoveTab(nOldTable, nNewTable, true ); - } - break; - default: - { - OSL_FAIL("ScRangeName::UpdateTabRef: Unknown Flag"); - } - break; - } - if (eType&RT_SHARED) - { - if (pRangeData) - eType = eType | RT_SHAREDMOD; - else - eType = eType & ~RT_SHAREDMOD; + OSL_FAIL("ScRangeName::UpdateTabRef: Unknown Flag"); } } } @@ -755,11 +741,11 @@ void ScRangeName::UpdateReference( itr->second->UpdateReference(eUpdateRefMode, rRange, nDx, nDy, nDz, bLocal); } -void ScRangeName::UpdateTabRef(SCTAB nTable, sal_uInt16 nFlag, SCTAB nNewTable, SCTAB nNewSheets) +void ScRangeName::UpdateTabRef(SCTAB nTable, ScRangeData::TabRefUpdateMode eMode, SCTAB nNewTable, SCTAB nNewSheets) { DataType::iterator itr = maData.begin(), itrEnd = maData.end(); for (; itr != itrEnd; ++itr) - itr->second->UpdateTabRef(nTable, nFlag, nNewTable, nNewSheets); + itr->second->UpdateTabRef(nTable, eMode, nNewTable, nNewSheets); } void ScRangeName::UpdateTranspose(const ScRange& rSource, const ScAddress& rDest) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits