[Libreoffice-commits] core.git: 2 commits - sc/inc sc/source

Eike Rathke erack at redhat.com
Fri Mar 13 11:33:23 PDT 2015


 sc/inc/token.hxx                 |    1 +
 sc/source/core/tool/compiler.cxx |   27 ++++++++++++++++++++++++---
 sc/source/core/tool/token.cxx    |    5 +++++
 3 files changed, 30 insertions(+), 3 deletions(-)

New commits:
commit 1e060e94629aac8b37d59e34159198aa9e8f4b39
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Mar 13 18:18:57 2015 +0000

    add items to ScTableRefToken
    
    Change-Id: I23ddec273f7d3df0d5342b73c54ae411b9ef3782

diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index 7188176..ca67769 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -3308,23 +3308,44 @@ bool ScCompiler::IsErrorConstant( const OUString& rName ) const
 
 bool ScCompiler::IsTableRefItem( const OUString& rName ) const
 {
+    bool bItem = false;
     OpCodeHashMap::const_iterator iLook( mxSymbols->getHashMap()->find( rName));
     if (iLook != mxSymbols->getHashMap()->end())
     {
+        // Only called when there actually is a current TableRef, hence
+        // accessing maTableRefs.back() is safe.
+        ScTableRefToken* p = dynamic_cast<ScTableRefToken*>(maTableRefs.back().mxToken.get());
+        assert(p);  // not a ScTableRefToken can't be
+
         switch ((*iLook).second)
         {
             case ocTableRefItemAll:
+                bItem = true;
+                p->AddItem( ScTableRefToken::ALL);
+                break;
             case ocTableRefItemHeaders:
+                bItem = true;
+                p->AddItem( ScTableRefToken::HEADERS);
+                break;
             case ocTableRefItemData:
+                bItem = true;
+                p->AddItem( ScTableRefToken::DATA);
+                break;
             case ocTableRefItemTotals:
+                bItem = true;
+                p->AddItem( ScTableRefToken::TOTALS);
+                break;
             case ocTableRefItemThisRow:
-                maRawToken.SetOpCode( (*iLook).second );
-                return true;
+                bItem = true;
+                p->AddItem( ScTableRefToken::THIS_ROW);
+                break;
             default:
                 ;
         }
+        if (bItem)
+            maRawToken.SetOpCode( (*iLook).second );
     }
-    return false;
+    return bItem;
 }
 
 void ScCompiler::SetAutoCorrection( bool bVal )
commit 7dcaa806b8583224cb24d4a37ddf855b9c02150d
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Mar 13 17:58:59 2015 +0000

    add ScTableRefToken::AddItem()
    
    Change-Id: Iab74e027d9929bc100ad92c2126c17fca1e2e46a

diff --git a/sc/inc/token.hxx b/sc/inc/token.hxx
index 6f6cd4b..899d163 100644
--- a/sc/inc/token.hxx
+++ b/sc/inc/token.hxx
@@ -237,6 +237,7 @@ public:
     virtual FormulaToken*       Clone() const SAL_OVERRIDE { return new ScTableRefToken(*this); }
 
             Item                GetItem() const;
+            void                AddItem( Item );
 
 private:
 
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index eab3f8f..8963159 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -861,6 +861,11 @@ ScTableRefToken::Item ScTableRefToken::GetItem() const
     return meItem;
 }
 
+void ScTableRefToken::AddItem( ScTableRefToken::Item eItem )
+{
+    meItem = static_cast<ScTableRefToken::Item>(meItem | eItem);
+}
+
 bool ScTableRefToken::operator==( const FormulaToken& r ) const
 {
     if ( !FormulaToken::operator==(r) )


More information about the Libreoffice-commits mailing list