[Libreoffice-commits] core.git: Branch 'feature/formula-core-rework' - sc/inc sc/source

Kohei Yoshida kohei.yoshida at gmail.com
Fri Mar 22 10:01:23 PDT 2013


 sc/inc/dociter.hxx                            |   18 ---
 sc/inc/document.hxx                           |    1 
 sc/source/core/data/autonamecache.cxx         |    2 
 sc/source/core/data/dociter.cxx               |  146 +++++++++-----------------
 sc/source/core/data/document.cxx              |    4 
 sc/source/core/tool/chgtrack.cxx              |    8 -
 sc/source/core/tool/compiler.cxx              |   18 +--
 sc/source/core/tool/detfunc.cxx               |   22 +--
 sc/source/core/tool/interpr5.cxx              |    2 
 sc/source/ui/Accessibility/AccessibleCell.cxx |    2 
 sc/source/ui/app/transobj.cxx                 |    4 
 sc/source/ui/docshell/dbdocfun.cxx            |    2 
 sc/source/ui/unoobj/cellsuno.cxx              |   27 +---
 sc/source/ui/view/viewfunc.cxx                |    3 
 14 files changed, 105 insertions(+), 154 deletions(-)

New commits:
commit 47f3f7201907013196232884937975e23617eb6c
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Mar 22 13:03:23 2013 -0400

    Simplify ScCellIterator.
    
    Change-Id: I33b10e68434fe0047f8e7c3959b87a51f3460d29

diff --git a/sc/inc/dociter.hxx b/sc/inc/dociter.hxx
index 3683111..c104a33 100644
--- a/sc/inc/dociter.hxx
+++ b/sc/inc/dociter.hxx
@@ -214,19 +214,14 @@ class ScCellIterator            // walk through all cells in an area
 {                               // for SubTotal no hidden and no sub-total lines
 private:
     ScDocument*     pDoc;
-    SCCOL           nStartCol;
-    SCROW           nStartRow;
-    SCTAB           nStartTab;
-    SCCOL           nEndCol;
-    SCROW           nEndRow;
-    SCTAB           nEndTab;
-    SCCOL           nCol;
-    SCROW           nRow;
-    SCTAB           nTab;
+    ScAddress maStartPos;
+    ScAddress maEndPos;
+    ScAddress maCurPos;
     SCSIZE          nColRow;
     bool            bSubTotal;
 
     ScBaseCell*     GetThis();
+    void init();
 public:
                     ScCellIterator(ScDocument* pDocument,
                                    SCCOL nSCol, SCROW nSRow, SCTAB nSTab,
@@ -236,10 +231,7 @@ public:
                                    const ScRange& rRange, bool bSTotal = false);
     ScBaseCell*     GetFirst();
     ScBaseCell*     GetNext();
-    SCCOL           GetCol() const { return nCol; }
-    SCROW           GetRow() const { return nRow; }
-    SCTAB           GetTab() const { return nTab; }
-    ScAddress       GetPos() const { return ScAddress( nCol, nRow, nTab ); }
+    const ScAddress& GetPos() const { return maCurPos; }
 };
 
 class ScQueryCellIterator           // walk through all non-empty cells in an area
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index e0f19cd..742bfc9 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1213,6 +1213,7 @@ public:
                                             double& rResult );
 
     SC_DLLPUBLIC const SfxPoolItem*         GetAttr( SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt16 nWhich ) const;
+    SC_DLLPUBLIC const SfxPoolItem* GetAttr( const ScAddress& rPos, sal_uInt16 nWhich ) const;
     SC_DLLPUBLIC const ScPatternAttr*   GetPattern( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
     SC_DLLPUBLIC const ScPatternAttr*    GetMostUsedPattern( SCCOL nCol, SCROW nStartRow, SCROW nEndRow, SCTAB nTab ) const;
     const ScPatternAttr*    GetSelectionPattern( const ScMarkData& rMark, bool bDeep = true );
diff --git a/sc/source/core/data/autonamecache.cxx b/sc/source/core/data/autonamecache.cxx
index 4dde59f..f0e98dc 100644
--- a/sc/source/core/data/autonamecache.cxx
+++ b/sc/source/core/data/autonamecache.cxx
@@ -84,7 +84,7 @@ const ScAutoNameAddresses& ScAutoNameCache::GetNameOccurrences( const String& rN
             }
             if ( ScGlobal::GetpTransliteration()->isEqual( aStr, rName ) )
             {
-                rAddresses.push_back( ScAddress( aIter.GetCol(), aIter.GetRow(), aIter.GetTab() ) );
+                rAddresses.push_back(aIter.GetPos());
             }
         }
     }
diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx
index 33533f6..d5417d5 100644
--- a/sc/source/core/data/dociter.cxx
+++ b/sc/source/core/data/dociter.cxx
@@ -940,152 +940,114 @@ ScCellIterator::ScCellIterator( ScDocument* pDocument,
                                 SCCOL nSCol, SCROW nSRow, SCTAB nSTab,
                                 SCCOL nECol, SCROW nERow, SCTAB nETab, bool bSTotal ) :
     pDoc( pDocument ),
-    nStartCol( nSCol),
-    nStartRow( nSRow),
-    nStartTab( nSTab ),
-    nEndCol( nECol ),
-    nEndRow( nERow),
-    nEndTab( nETab ),
+    maStartPos(nSCol, nSRow, nSTab),
+    maEndPos(nECol, nERow, nETab),
+    nColRow(0),
     bSubTotal(bSTotal)
-
 {
-    SCTAB nDocMaxTab = pDocument->GetTableCount() - 1;
-
-    PutInOrder( nStartCol, nEndCol);
-    PutInOrder( nStartRow, nEndRow);
-    PutInOrder( nStartTab, nEndTab );
-
-    if (!ValidCol(nStartCol)) nStartCol = MAXCOL;
-    if (!ValidCol(nEndCol)) nEndCol = MAXCOL;
-    if (!ValidRow(nStartRow)) nStartRow = MAXROW;
-    if (!ValidRow(nEndRow)) nEndRow = MAXROW;
-    if (!ValidTab(nStartTab) || nStartTab > nDocMaxTab) nStartTab = nDocMaxTab;
-    if (!ValidTab(nEndTab) || nEndTab > nDocMaxTab) nEndTab = nDocMaxTab;
-
-    while (nEndTab>0 && !pDoc->maTabs[nEndTab])
-        --nEndTab; // Only the tables in use
-    if (nStartTab>nEndTab)
-        nStartTab = nEndTab;
-
-    nCol = nStartCol;
-    nRow = nStartRow;
-    nTab = nStartTab;
-    nColRow = 0; // Initialized in GetFirst
-
-    if (!pDoc->maTabs[nTab])
-    {
-        OSL_FAIL("Table not found");
-        nStartCol = nCol = MAXCOL+1;
-        nStartRow = nRow = MAXROW+1;
-        nStartTab = nTab = MAXTAB+1; // -> Abort on GetFirst
-    }
+    init();
 }
 
-ScCellIterator::ScCellIterator
-    ( ScDocument* pDocument, const ScRange& rRange, bool bSTotal ) :
+ScCellIterator::ScCellIterator( ScDocument* pDocument, const ScRange& rRange, bool bSTotal ) :
     pDoc( pDocument ),
-    nStartCol( rRange.aStart.Col() ),
-    nStartRow( rRange.aStart.Row() ),
-    nStartTab( rRange.aStart.Tab() ),
-    nEndCol( rRange.aEnd.Col() ),
-    nEndRow( rRange.aEnd.Row() ),
-    nEndTab( rRange.aEnd.Tab() ),
+    maStartPos(rRange.aStart),
+    maEndPos(rRange.aEnd),
+    nColRow(0),
     bSubTotal(bSTotal)
+{
+    init();
+}
 
+void ScCellIterator::init()
 {
-    PutInOrder( nStartCol, nEndCol);
-    PutInOrder( nStartRow, nEndRow);
-    PutInOrder( nStartTab, nEndTab );
+    SCTAB nDocMaxTab = pDoc->GetTableCount() - 1;
 
-    if (!ValidCol(nStartCol)) nStartCol = MAXCOL;
-    if (!ValidCol(nEndCol)) nEndCol = MAXCOL;
-    if (!ValidRow(nStartRow)) nStartRow = MAXROW;
-    if (!ValidRow(nEndRow)) nEndRow = MAXROW;
-    if (!ValidTab(nStartTab)) nStartTab = pDoc->GetTableCount()-1;
-    if (!ValidTab(nEndTab)) nEndTab = pDoc->GetTableCount()-1;
+    PutInOrder(maStartPos, maEndPos);
 
-    while (nEndTab>0 && !pDoc->maTabs[nEndTab])
-        --nEndTab; // Only tables that are in use
-    if (nStartTab>nEndTab)
-        nStartTab = nEndTab;
+    if (!ValidCol(maStartPos.Col())) maStartPos.SetCol(MAXCOL);
+    if (!ValidCol(maEndPos.Col())) maEndPos.SetCol(MAXCOL);
+    if (!ValidRow(maStartPos.Row())) maStartPos.SetRow(MAXROW);
+    if (!ValidRow(maEndPos.Row())) maEndPos.SetRow(MAXROW);
+    if (!ValidTab(maStartPos.Tab(), nDocMaxTab)) maStartPos.SetTab(nDocMaxTab);
+    if (!ValidTab(maEndPos.Tab(), nDocMaxTab)) maEndPos.SetTab(nDocMaxTab);
 
-    nCol = nStartCol;
-    nRow = nStartRow;
-    nTab = nStartTab;
-    nColRow = 0; // Initialized in GetFirst
+    while (maEndPos.Tab() > 0 && !pDoc->maTabs[maEndPos.Tab()])
+        maEndPos.IncTab(-1); // Only the tables in use
 
-    if (!pDoc->maTabs[nTab])
+    if (maStartPos.Tab() > maEndPos.Tab())
+        maStartPos.SetTab(maEndPos.Tab());
+
+    maCurPos = maStartPos;
+
+    if (!pDoc->maTabs[maCurPos.Tab()])
     {
         OSL_FAIL("Table not found");
-        nStartCol = nCol = MAXCOL+1;
-        nStartRow = nRow = MAXROW+1;
-        nStartTab = nTab = MAXTAB+1; // -> Abort on GetFirst
+        maStartPos = ScAddress(MAXCOL+1, MAXROW+1, MAXTAB+1); // -> Abort on GetFirst.
+        maCurPos = maStartPos;
     }
 }
 
 ScBaseCell* ScCellIterator::GetThis()
 {
-
-    ScColumn* pCol = &(pDoc->maTabs[nTab])->aCol[nCol];
+    ScColumn* pCol = &(pDoc->maTabs[maCurPos.Tab()])->aCol[maCurPos.Col()];
     for ( ;; )
     {
-        if ( nRow > nEndRow )
+        if (maCurPos.Row() > maEndPos.Row())
         {
-            nRow = nStartRow;
+            maCurPos.SetRow(maStartPos.Row());
             do
             {
-                nCol++;
-                if ( nCol > nEndCol )
+                maCurPos.IncCol();
+                if (maCurPos.Col() > maEndPos.Col())
                 {
-                    nCol = nStartCol;
-                    nTab++;
-                    if ( nTab > nEndTab )
+                    maCurPos.SetCol(maStartPos.Col());
+                    maCurPos.IncTab();
+                    if (maCurPos.Tab() > maEndPos.Tab())
                         return NULL; // Over and out
                 }
-                pCol = &(pDoc->maTabs[nTab])->aCol[nCol];
+                pCol = &(pDoc->maTabs[maCurPos.Tab()])->aCol[maCurPos.Col()];
             } while ( pCol->maItems.empty() );
-            pCol->Search( nRow, nColRow );
+            pCol->Search(maCurPos.Row(), nColRow);
         }
 
-        while ( (nColRow < pCol->maItems.size()) && (pCol->maItems[nColRow].nRow < nRow) )
-            nColRow++;
+        while ( (nColRow < pCol->maItems.size()) && (pCol->maItems[nColRow].nRow < maCurPos.Row()) )
+            ++nColRow;
 
-        if ( nColRow < pCol->maItems.size() && pCol->maItems[nColRow].nRow <= nEndRow )
+        if (nColRow < pCol->maItems.size() && pCol->maItems[nColRow].nRow <= maEndPos.Row())
         {
-            nRow = pCol->maItems[nColRow].nRow;
-            if ( !bSubTotal || !pDoc->maTabs[nTab]->RowFiltered( nRow ) )
+            maCurPos.SetRow(pCol->maItems[nColRow].nRow);
+            if (!bSubTotal || !pDoc->maTabs[maCurPos.Tab()]->RowFiltered(maCurPos.Row()))
             {
                 ScBaseCell* pCell = pCol->maItems[nColRow].pCell;
 
                 if ( bSubTotal && pCell->GetCellType() == CELLTYPE_FORMULA
                                 && ((ScFormulaCell*)pCell)->IsSubTotal() )
-                    nRow++; // Don't subtotal rows
+                    maCurPos.IncRow(); // Don't subtotal rows
                 else
                     return pCell; // Found it!
             }
             else
-                nRow++;
+                maCurPos.IncRow();
         }
         else
-            nRow = nEndRow + 1; // Next column
+            maCurPos.SetRow(maEndPos.Row() + 1); // Next column
     }
 }
 
 ScBaseCell* ScCellIterator::GetFirst()
 {
-    if ( !ValidTab(nTab) )
+    if ( !ValidTab(maCurPos.Tab()) )
         return NULL;
-    nCol = nStartCol;
-    nRow = nStartRow;
-    nTab = nStartTab;
-    ScColumn* pCol = &(pDoc->maTabs[nTab])->aCol[nCol];
-    pCol->Search( nRow, nColRow );
+
+    maCurPos = maStartPos;
+    ScColumn* pCol = &(pDoc->maTabs[maCurPos.Tab()])->aCol[maCurPos.Col()];
+    pCol->Search(maCurPos.Row(), nColRow);
     return GetThis();
 }
 
 ScBaseCell* ScCellIterator::GetNext()
 {
-    ++nRow;
+    maCurPos.IncRow();
     return GetThis();
 }
 
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 7064ee2..dcdb2ab 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -4286,6 +4286,10 @@ const SfxPoolItem* ScDocument::GetAttr( SCCOL nCol, SCROW nRow, SCTAB nTab, sal_
     return &xPoolHelper->GetDocPool()->GetDefaultItem( nWhich );
 }
 
+const SfxPoolItem* ScDocument::GetAttr( const ScAddress& rPos, sal_uInt16 nWhich ) const
+{
+    return GetAttr(rPos.Col(), rPos.Row(), rPos.Tab(), nWhich);
+}
 
 const ScPatternAttr* ScDocument::GetPattern( SCCOL nCol, SCROW nRow, SCTAB nTab ) const
 {
diff --git a/sc/source/core/tool/chgtrack.cxx b/sc/source/core/tool/chgtrack.cxx
index 68c7a05..652c132 100644
--- a/sc/source/core/tool/chgtrack.cxx
+++ b/sc/source/core/tool/chgtrack.cxx
@@ -2660,13 +2660,13 @@ void ScChangeTrack::LookUpContents( const ScRange& rOrgRange,
         {
             if ( ScChangeActionContent::GetContentCellType( pCell ) )
             {
-                aBigPos.Set( aIter.GetCol() + nDx, aIter.GetRow() + nDy,
-                    aIter.GetTab() + nDz );
+                aBigPos.Set( aIter.GetPos().Col() + nDx, aIter.GetPos().Row() + nDy,
+                    aIter.GetPos().Tab() + nDz );
                 ScChangeActionContent* pContent = SearchContentAt( aBigPos, NULL );
                 if ( !pContent )
                 {   // nicht getrackte Contents
-                    aPos.Set( aIter.GetCol() + nDx, aIter.GetRow() + nDy,
-                        aIter.GetTab() + nDz );
+                    aPos.Set( aIter.GetPos().Col() + nDx, aIter.GetPos().Row() + nDy,
+                        aIter.GetPos().Tab() + nDz );
                     GenerateDelContent( aPos, pCell, pRefDoc );
                     //! der Content wird hier _nicht_ per AddContent hinzugefuegt,
                     //! sondern in UpdateReference, um z.B. auch kreuzende Deletes
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index 07f4673..9979aa3 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -3065,9 +3065,9 @@ bool ScCompiler::IsColRowName( const String& rName )
                         if ( ScGlobal::GetpTransliteration()->isEqual( aStr, aName ) )
                         {
                             aRef.InitFlags();
-                            aRef.nCol = aIter.GetCol();
-                            aRef.nRow = aIter.GetRow();
-                            aRef.nTab = aIter.GetTab();
+                            aRef.nCol = aIter.GetPos().Col();
+                            aRef.nRow = aIter.GetPos().Row();
+                            aRef.nTab = aIter.GetPos().Tab();
                             if ( !jRow )
                                 aRef.SetColRel( true );     // ColName
                             else
@@ -3159,7 +3159,7 @@ bool ScCompiler::IsColRowName( const String& rName )
             {
                 if ( bFound )
                 {   // stop if everything else is further away
-                    if ( nMax < (long)aIter.GetCol() )
+                    if ( nMax < (long)aIter.GetPos().Col() )
                         break;      // aIter
                 }
                 CellType eType = pCell->GetCellType();
@@ -3193,8 +3193,8 @@ bool ScCompiler::IsColRowName( const String& rName )
                     }
                     if ( ScGlobal::GetpTransliteration()->isEqual( aStr, aName ) )
                     {
-                        SCCOL nCol = aIter.GetCol();
-                        SCROW nRow = aIter.GetRow();
+                        SCCOL nCol = aIter.GetPos().Col();
+                        SCROW nRow = aIter.GetPos().Row();
                         long nC = nMyCol - nCol;
                         long nR = nMyRow - nRow;
                         if ( bFound )
@@ -3205,7 +3205,7 @@ bool ScCompiler::IsColRowName( const String& rName )
                                 if ( nC < 0 || nR < 0 )
                                 {   // right or below
                                     bTwo = true;
-                                    aTwo.Set( nCol, nRow, aIter.GetTab() );
+                                    aTwo.Set( nCol, nRow, aIter.GetPos().Tab() );
                                     nMax = Max( nMyCol + Abs( nC ), nMyRow + Abs( nR ) );
                                     nDistance = nD;
                                 }
@@ -3215,7 +3215,7 @@ bool ScCompiler::IsColRowName( const String& rName )
                                     // current entry and nMyRow is below (CellIter
                                     // runs column-wise)
                                     bTwo = false;
-                                    aOne.Set( nCol, nRow, aIter.GetTab() );
+                                    aOne.Set( nCol, nRow, aIter.GetPos().Tab() );
                                     nMax = Max( nMyCol + nC, nMyRow + nR );
                                     nDistance = nD;
                                 }
@@ -3223,7 +3223,7 @@ bool ScCompiler::IsColRowName( const String& rName )
                         }
                         else
                         {
-                            aOne.Set( nCol, nRow, aIter.GetTab() );
+                            aOne.Set( nCol, nRow, aIter.GetPos().Tab() );
                             nDistance = nC * nC + nR * nR;
                             nMax = Max( nMyCol + Abs( nC ), nMyRow + Abs( nR ) );
                         }
diff --git a/sc/source/core/tool/detfunc.cxx b/sc/source/core/tool/detfunc.cxx
index 612ffbd..359e95e 100644
--- a/sc/source/core/tool/detfunc.cxx
+++ b/sc/source/core/tool/detfunc.cxx
@@ -306,7 +306,7 @@ sal_Bool ScDetectiveFunc::HasError( const ScRange& rRange, ScAddress& rErrPos )
         {
             nError = ((ScFormulaCell*)pCell)->GetErrCode();
             if (nError)
-                rErrPos.Set( aCellIter.GetCol(), aCellIter.GetRow(), aCellIter.GetTab() );
+                rErrPos = aCellIter.GetPos();
         }
         pCell = aCellIter.GetNext();
     }
@@ -796,7 +796,7 @@ sal_uInt16 ScDetectiveFunc::InsertPredLevelArea( const ScRange& rRef,
     while (pCell)
     {
         if (pCell->GetCellType() == CELLTYPE_FORMULA)
-            switch( InsertPredLevel( aCellIter.GetCol(), aCellIter.GetRow(), rData, nLevel ) )
+            switch( InsertPredLevel( aCellIter.GetPos().Col(), aCellIter.GetPos().Row(), rData, nLevel ) )
             {
                 case DET_INS_INSERTED:
                     nResult = DET_INS_INSERTED;
@@ -897,7 +897,7 @@ sal_uInt16 ScDetectiveFunc::FindPredLevelArea( const ScRange& rRef,
     {
         if (pCell->GetCellType() == CELLTYPE_FORMULA)
         {
-            sal_uInt16 nTemp = FindPredLevel( aCellIter.GetCol(), aCellIter.GetRow(), nLevel, nDeleteLevel );
+            sal_uInt16 nTemp = FindPredLevel( aCellIter.GetPos().Col(), aCellIter.GetPos().Row(), nLevel, nDeleteLevel );
             if (nTemp > nResult)
                 nResult = nTemp;
         }
@@ -1056,12 +1056,12 @@ sal_uInt16 ScDetectiveFunc::InsertSuccLevel( SCCOL nCol1, SCROW nRow1, SCCOL nCo
                             aRef.aStart.Col(),aRef.aStart.Row(),
                             aRef.aEnd.Col(),aRef.aEnd.Row() ))
                     {
-                        sal_Bool bAlien = ( aCellIter.GetTab() != nTab );
+                        sal_Bool bAlien = ( aCellIter.GetPos().Tab() != nTab );
                         sal_Bool bDrawRet;
                         if (bAlien)
                             bDrawRet = DrawAlienEntry( aRef, rData );
                         else
-                            bDrawRet = DrawEntry( aCellIter.GetCol(), aCellIter.GetRow(),
+                            bDrawRet = DrawEntry( aCellIter.GetPos().Col(), aCellIter.GetPos().Row(),
                                                     aRef, rData );
                         if (bDrawRet)
                         {
@@ -1081,8 +1081,8 @@ sal_uInt16 ScDetectiveFunc::InsertSuccLevel( SCCOL nCol1, SCROW nRow1, SCCOL nCo
                                 if ( nLevel < rData.GetMaxLevel() )
                                 {
                                     sal_uInt16 nSubResult = InsertSuccLevel(
-                                                            aCellIter.GetCol(), aCellIter.GetRow(),
-                                                            aCellIter.GetCol(), aCellIter.GetRow(),
+                                                            aCellIter.GetPos().Col(), aCellIter.GetPos().Row(),
+                                                            aCellIter.GetPos().Col(), aCellIter.GetPos().Row(),
                                                             rData, nLevel+1 );
                                     switch (nSubResult)
                                     {
@@ -1158,10 +1158,10 @@ sal_uInt16 ScDetectiveFunc::FindSuccLevel( SCCOL nCol1, SCROW nRow1, SCCOL nCol2
                         }
                         else if ( !bRunning &&
                                 HasArrow( aRef.aStart,
-                                            aCellIter.GetCol(),aCellIter.GetRow(),aCellIter.GetTab() ) )
+                                            aCellIter.GetPos().Col(),aCellIter.GetPos().Row(),aCellIter.GetPos().Tab() ) )
                         {
-                            sal_uInt16 nTemp = FindSuccLevel( aCellIter.GetCol(), aCellIter.GetRow(),
-                                                            aCellIter.GetCol(), aCellIter.GetRow(),
+                            sal_uInt16 nTemp = FindSuccLevel( aCellIter.GetPos().Col(), aCellIter.GetPos().Row(),
+                                                            aCellIter.GetPos().Col(), aCellIter.GetPos().Row(),
                                                             nLevel+1, nDeleteLevel );
                             if (nTemp > nResult)
                                 nResult = nTemp;
@@ -1365,7 +1365,7 @@ sal_Bool ScDetectiveFunc::MarkInvalid(sal_Bool& rOverflow)
                 ScBaseCell* pCell = aCellIter.GetFirst();
                 while ( pCell && nInsCount < SC_DET_MAXCIRCLE )
                 {
-                    SCROW nCellRow = aCellIter.GetRow();
+                    SCROW nCellRow = aCellIter.GetPos().Row();
                     if ( bMarkEmpty )
                         for ( nRow = nNextRow; nRow < nCellRow && nInsCount < SC_DET_MAXCIRCLE; nRow++ )
                         {
diff --git a/sc/source/core/tool/interpr5.cxx b/sc/source/core/tool/interpr5.cxx
index 065e7a9..7a716ed 100644
--- a/sc/source/core/tool/interpr5.cxx
+++ b/sc/source/core/tool/interpr5.cxx
@@ -426,7 +426,7 @@ ScMatrixRef ScInterpreter::CreateMatrixFromDoubleRef( const FormulaToken* pToken
         // an array to the matrix object, for performance reasons.
         for (ScBaseCell* pCell = aCellIter.GetFirst(); pCell; pCell = aCellIter.GetNext(), nPrevRow = nThisRow)
         {
-            nThisRow = aCellIter.GetRow();
+            nThisRow = aCellIter.GetPos().Row();
 
             if (HasCellEmptyData(pCell))
             {
diff --git a/sc/source/ui/Accessibility/AccessibleCell.cxx b/sc/source/ui/Accessibility/AccessibleCell.cxx
index eadf4b2..95ac6eb 100644
--- a/sc/source/ui/Accessibility/AccessibleCell.cxx
+++ b/sc/source/ui/Accessibility/AccessibleCell.cxx
@@ -376,7 +376,7 @@ void ScAccessibleCell::FillDependends(utl::AccessibleRelationSetHelper* pRelatio
                         bFound = sal_True;
                 }
                 if (bFound)
-                    AddRelation(ScAddress(aCellIter.GetCol(), aCellIter.GetRow(), aCellIter.GetTab()), AccessibleRelationType::CONTROLLER_FOR, pRelationSet);
+                    AddRelation(aCellIter.GetPos(), AccessibleRelationType::CONTROLLER_FOR, pRelationSet);
             }
             pCell = aCellIter.GetNext();
         }
diff --git a/sc/source/ui/app/transobj.cxx b/sc/source/ui/app/transobj.cxx
index 8807195..71046f4 100644
--- a/sc/source/ui/app/transobj.cxx
+++ b/sc/source/ui/app/transobj.cxx
@@ -795,8 +795,8 @@ void ScTransferObj::StripRefs( ScDocument* pDoc,
             }
             if (bOut)
             {
-                SCCOL nCol = aIter.GetCol() - nSubX;
-                SCROW nRow = aIter.GetRow() - nSubY;
+                SCCOL nCol = aIter.GetPos().Col() - nSubX;
+                SCROW nRow = aIter.GetPos().Row() - nSubY;
 
                 sal_uInt16 nErrCode = pFCell->GetErrCode();
                 ScAddress aPos(nCol, nRow, nDestTab);
diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
index f67b2cd..a73b238 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -1184,7 +1184,7 @@ bool lcl_EmptyExcept( ScDocument* pDoc, const ScRange& rRange, const ScRange& rE
     {
         if ( !pCell->IsBlank() )      // real content?
         {
-            if ( !rExcept.In( ScAddress( aIter.GetCol(), aIter.GetRow(), aIter.GetTab() ) ) )
+            if (!rExcept.In(aIter.GetPos()))
                 return false;       // cell found
         }
         pCell = aIter.GetNext();
diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx
index 04e7dec..4ee76da 100644
--- a/sc/source/ui/unoobj/cellsuno.cxx
+++ b/sc/source/ui/unoobj/cellsuno.cxx
@@ -3562,9 +3562,7 @@ uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryEmptyCel
             {
                 //  Notizen zaehlen als nicht-leer
                 if ( !pCell->IsBlank() )
-                    aMarkData.SetMultiMarkArea(
-                            ScRange( aIter.GetCol(), aIter.GetRow(), aIter.GetTab() ),
-                            false );
+                    aMarkData.SetMultiMarkArea(aIter.GetPos(), false);
 
                 pCell = aIter.GetNext();
             }
@@ -3625,8 +3623,7 @@ uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryContentC
                             //  Date/Time Erkennung
 
                             sal_uLong nIndex = (sal_uLong)((SfxUInt32Item*)pDoc->GetAttr(
-                                        aIter.GetCol(), aIter.GetRow(), aIter.GetTab(),
-                                        ATTR_VALUE_FORMAT ))->GetValue();
+                                        aIter.GetPos(), ATTR_VALUE_FORMAT))->GetValue();
                             short nTyp = pDoc->GetFormatTable()->GetType(nIndex);
                             if ((nTyp == NUMBERFORMAT_DATE) || (nTyp == NUMBERFORMAT_TIME) ||
                                     (nTyp == NUMBERFORMAT_DATETIME))
@@ -3648,9 +3645,7 @@ uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryContentC
                 }
 
                 if (bAdd)
-                    aMarkData.SetMultiMarkArea(
-                            ScRange( aIter.GetCol(), aIter.GetRow(), aIter.GetTab() ),
-                            sal_True );
+                    aMarkData.SetMultiMarkArea(aIter.GetPos(), true);
 
                 pCell = aIter.GetNext();
             }
@@ -3708,9 +3703,7 @@ uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryFormulaC
                     }
 
                     if (bAdd)
-                        aMarkData.SetMultiMarkArea(
-                                ScRange( aIter.GetCol(), aIter.GetRow(), aIter.GetTab() ),
-                                sal_True );
+                        aMarkData.SetMultiMarkArea(aIter.GetPos(), true);
                 }
 
                 pCell = aIter.GetNext();
@@ -3754,7 +3747,7 @@ uno::Reference<sheet::XSheetCellRanges> ScCellRangesBase::QueryDifferences_Impl(
         {
             if (pCmpCell->GetCellType() != CELLTYPE_NOTE)
             {
-                SCCOLROW nCellPos = bColumnDiff ? static_cast<SCCOLROW>(aCmpIter.GetCol()) : static_cast<SCCOLROW>(aCmpIter.GetRow());
+                SCCOLROW nCellPos = bColumnDiff ? static_cast<SCCOLROW>(aCmpIter.GetPos().Col()) : static_cast<SCCOLROW>(aCmpIter.GetPos().Row());
                 if (bColumnDiff)
                     aCellRange = ScRange( static_cast<SCCOL>(nCellPos),0,nTab,
                             static_cast<SCCOL>(nCellPos),MAXROW,nTab );
@@ -3796,12 +3789,12 @@ uno::Reference<sheet::XSheetCellRanges> ScCellRangesBase::QueryDifferences_Impl(
             while (pCell)
             {
                 if (bColumnDiff)
-                    aCmpAddr = ScAddress( aIter.GetCol(), nCmpPos, aIter.GetTab() );
+                    aCmpAddr = ScAddress( aIter.GetPos().Col(), nCmpPos, aIter.GetPos().Tab() );
                 else
-                    aCmpAddr = ScAddress( static_cast<SCCOL>(nCmpPos), aIter.GetRow(), aIter.GetTab() );
+                    aCmpAddr = ScAddress( static_cast<SCCOL>(nCmpPos), aIter.GetPos().Row(), aIter.GetPos().Tab() );
                 const ScBaseCell* pOtherCell = pDoc->GetCell( aCmpAddr );
 
-                ScRange aOneRange( aIter.GetCol(), aIter.GetRow(), aIter.GetTab() );
+                ScRange aOneRange(aIter.GetPos());
                 if ( !ScBaseCell::CellEqual( pCell, pOtherCell ) )
                     aMarkData.SetMultiMarkArea( aOneRange );
                 else
@@ -3954,9 +3947,7 @@ uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryDependen
                     }
                     if (bMark)
                     {
-                        ScRange aCellRange( aCellIter.GetCol(),
-                                            aCellIter.GetRow(),
-                                            aCellIter.GetTab() );
+                        ScRange aCellRange(aCellIter.GetPos());
                         if ( bRecursive && !bFound && !aMarkData.IsAllMarked( aCellRange ) )
                             bFound = sal_True;
                         aMarkData.SetMultiMarkArea( aCellRange, sal_True );
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index 8cea62d..1283ddd 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -831,7 +831,8 @@ sal_uInt8 ScViewFunc::GetSelectionScriptType()
             ScBaseCell* pCell = aIter.GetFirst();
             while ( pCell )
             {
-                nScript |= pDoc->GetScriptType( aIter.GetCol(), aIter.GetRow(), aIter.GetTab(), pCell );
+                nScript |= pDoc->GetScriptType(
+                    aIter.GetPos().Col(), aIter.GetPos().Row(), aIter.GetPos().Tab(), pCell);
                 pCell = aIter.GetNext();
             }
         }


More information about the Libreoffice-commits mailing list