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

Kohei Yoshida kohei.yoshida at gmail.com
Mon Mar 25 08:19:35 PDT 2013


 sc/source/core/tool/compiler.cxx |   42 ++++++++++++---------------------------
 1 file changed, 13 insertions(+), 29 deletions(-)

New commits:
commit fd20a04847d9bb5581a18267e7f27b4374ea629a
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Mon Mar 25 11:21:47 2013 -0400

    This one too.
    
    Change-Id: Ie0965d1b61d32c943bde3f295e73423008f6b77b

diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index 5bb14c8..80428a4 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -3025,42 +3025,26 @@ bool ScCompiler::IsColRowName( const String& rName )
                         nThisTab <= rNameRange.aEnd.Tab()) )
                     continue;   // for
                 ScCellIterator aIter( pDoc, rNameRange );
-                for ( ScBaseCell* pCell = aIter.GetFirst(); pCell && !bInList;
-                        pCell = aIter.GetNext() )
+                for (bool bHas = aIter.first(); bHas && !bInList; bHas = aIter.next())
                 {
                     // Don't crash if cell (via CompileNameFormula) encounters
                     // a formula cell without code and
                     // HasStringData/Interpret/Compile is executed and all that
                     // recursive..
                     // Furthermore, *this* cell won't be touched, since no RPN exists yet.
-                    CellType eType = pCell->GetCellType();
-                    bool bOk = ( (eType == CELLTYPE_FORMULA ?
-                        ((ScFormulaCell*)pCell)->GetCode()->GetCodeLen() > 0
-                        && ((ScFormulaCell*)pCell)->aPos != aPos    // noIter
-                        : true ) );
-                    if ( bOk && pCell->HasStringData() )
+                    CellType eType = aIter.getType();
+                    bool bOk = false;
+                    if (eType == CELLTYPE_FORMULA)
                     {
-                        String aStr;
-                        switch ( eType )
-                        {
-                            case CELLTYPE_STRING:
-                                aStr = ((ScStringCell*)pCell)->GetString();
-                            break;
-                            case CELLTYPE_FORMULA:
-                                aStr = ((ScFormulaCell*)pCell)->GetString();
-                            break;
-                            case CELLTYPE_EDIT:
-                                aStr = ((ScEditCell*)pCell)->GetString();
-                            break;
-                            case CELLTYPE_NONE:
-                            case CELLTYPE_VALUE:
-                            case CELLTYPE_NOTE:
-#if OSL_DEBUG_LEVEL > 0
-                            case CELLTYPE_DESTROYED:
-#endif
-                                ;   // nothing, prevent compiler warning
-                            break;
-                        }
+                        ScFormulaCell* pFC = aIter.getFormulaCell();
+                        bOk = (pFC->GetCode()->GetCodeLen() > 0) && (pFC->aPos != aPos);
+                    }
+                    else
+                        bOk = true;
+
+                    if (bOk && aIter.hasString())
+                    {
+                        OUString aStr = aIter.getString();
                         if ( ScGlobal::GetpTransliteration()->isEqual( aStr, aName ) )
                         {
                             aRef.InitFlags();


More information about the Libreoffice-commits mailing list