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

Kohei Yoshida kohei.yoshida at collabora.com
Sat Nov 12 23:23:12 UTC 2016


 sc/inc/calcmacros.hxx                 |    9 ++++++-
 sc/inc/column.hxx                     |    2 -
 sc/inc/document.hxx                   |    2 -
 sc/inc/table.hxx                      |    2 -
 sc/source/core/data/column2.cxx       |   40 +++++++++++++++++++++++++++++-----
 sc/source/core/data/document.cxx      |    2 -
 sc/source/core/data/table1.cxx        |    2 -
 sc/source/core/tool/sharedformula.cxx |    4 +--
 sc/source/ui/inc/gridwin.hxx          |    1 
 sc/source/ui/view/gridwin.cxx         |    4 +++
 sc/source/ui/view/gridwin_dbgutil.cxx |   11 +++++++++
 11 files changed, 66 insertions(+), 13 deletions(-)

New commits:
commit f20df23ad9380d19dfb64b51d943109bd3895efe
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Sat Nov 12 17:42:57 2016 -0500

    Keep loplugin:staticmethods happy.
    
    Change-Id: I2cdf67490d61b2868910e615bfc44d126d207bcb

diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index ce496f6..22d911f 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1670,7 +1670,10 @@ struct FormulaGroupDumper : std::unary_function<sc::CellStoreType::value_type, v
         cout << endl;
     }
 #else
-    void printResult(const ScFormulaCell*) const {}
+    void printResult(const ScFormulaCell*) const
+    {
+        (void) this; /* loplugin:staticmethods */
+    }
 #endif
 };
 
commit 633b9f30d0037f91e51e024960155c738c2fadb0
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Sat Nov 12 17:20:30 2016 -0500

    Dump the other block types as well.
    
    Change-Id: Iff41d4c2065a03865f884b2a8a260ffd83835dc1

diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 9c7eb79..ce496f6 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1577,10 +1577,31 @@ struct FormulaGroupDumper : std::unary_function<sc::CellStoreType::value_type, v
 
     void operator() (const sc::CellStoreType::value_type& rNode) const
     {
-        if (rNode.type != sc::element_type_formula)
-            return;
+        switch (rNode.type)
+        {
+            case sc::element_type_numeric:
+                cout << "  * numeric block (pos=" << rNode.position << ", length=" << rNode.size << ")" << endl;
+                break;
+            case sc::element_type_string:
+                cout << "  * string block (pos=" << rNode.position << ", length=" << rNode.size << ")" << endl;
+                break;
+            case sc::element_type_edittext:
+                cout << "  * edit-text block (pos=" << rNode.position << ", length=" << rNode.size << ")" << endl;
+                break;
+            case sc::element_type_formula:
+                dumpFormulaBlock(rNode);
+                break;
+            case sc::element_type_empty:
+                cout << "  * empty block (pos=" << rNode.position << ", length=" << rNode.size << ")" << endl;
+                break;
+            default:
+                cout << "  * unknown block" << endl;
+        }
+    }
 
-        cout << "  * formula block" << endl;
+    void dumpFormulaBlock(const sc::CellStoreType::value_type& rNode) const
+    {
+        cout << "  * formula block (pos=" << rNode.position << ", length=" << rNode.size << ")" << endl;
         sc::formula_block::const_iterator it = sc::formula_block::begin(*rNode.data);
         sc::formula_block::const_iterator itEnd = sc::formula_block::end(*rNode.data);
 
commit 4b57b76b6e0200a1fbbf40b98ff1d05793223287
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Sat Nov 12 17:10:56 2016 -0500

    Let's not dump formula results.
    
    It could be too verbose.
    
    Change-Id: I5f2da92e78bb069f3bb0c9c07bb3eae6d990f810

diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 1d63bf6..9c7eb79 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1567,6 +1567,8 @@ void ScColumn::CellStorageModified()
 
 namespace {
 
+#define DUMP_FORMULA_RESULTS 0
+
 struct FormulaGroupDumper : std::unary_function<sc::CellStoreType::value_type, void>
 {
     const ScDocument* mpDoc;
@@ -1620,9 +1622,10 @@ struct FormulaGroupDumper : std::unary_function<sc::CellStoreType::value_type, v
     {
         sc::TokenStringContext aCxt(mpDoc, mpDoc->GetGrammar());
         OUString aFormula = pCell->GetCode()->CreateString(aCxt, pCell->aPos);
-        cout << "    * formula: " << aFormula << endl;
+        cout << "      * formula: " << aFormula << endl;
     }
 
+#if DUMP_FORMULA_RESULTS
     void printResult(const ScFormulaCell* pCell) const
     {
         sc::FormulaResultValue aRes = pCell->GetResult();
@@ -1645,6 +1648,9 @@ struct FormulaGroupDumper : std::unary_function<sc::CellStoreType::value_type, v
 
         cout << endl;
     }
+#else
+    void printResult(const ScFormulaCell*) const {}
+#endif
 };
 
 }
commit 5a8fce7c5607ede6675effe410cbe29e343b6885
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Sat Nov 12 17:00:45 2016 -0500

    Ctrl-Shift-F8 to dump the column storage where the cursor is.
    
    Enabled only in dbgutil build.
    
    Change-Id: I0cd095fb56893122a26b2da6882fca15e516d193

diff --git a/sc/inc/calcmacros.hxx b/sc/inc/calcmacros.hxx
index 8810247..d2fc1da 100644
--- a/sc/inc/calcmacros.hxx
+++ b/sc/inc/calcmacros.hxx
@@ -15,7 +15,14 @@
 #define DEBUG_FORMULA_COMPILER 0
 #define DEBUG_AREA_BROADCASTER 0
 
-#if DEBUG_PIVOT_TABLE || DEBUG_COLUMN_STORAGE || DEBUG_FORMULA_COMPILER || DEBUG_AREA_BROADCASTER
+#define DUMP_COLUMN_STORAGE 0
+
+#ifdef DBG_UTIL
+#undef DUMP_COLUMN_STORAGE
+#define DUMP_COLUMN_STORAGE 1
+#endif
+
+#if DEBUG_PIVOT_TABLE || DUMP_COLUMN_STORAGE || DEBUG_COLUMN_STORAGE || DEBUG_FORMULA_COMPILER || DEBUG_AREA_BROADCASTER
 #include <iostream>
 #include <string>
 #include <cstdio>
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 8a1a370..22aaf6a 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -662,7 +662,7 @@ public:
     void SwapNonEmpty(
         sc::TableValues& rValues, sc::StartListeningContext& rStartCxt, sc::EndListeningContext& rEndCxt );
 
-#if DEBUG_COLUMN_STORAGE
+#if DUMP_COLUMN_STORAGE
     void DumpFormulaGroups() const;
 #endif
 
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 6caaa52..8b46126 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -2280,7 +2280,7 @@ public:
     const SvtBroadcaster* GetBroadcaster( const ScAddress& rPos ) const;
     void DeleteBroadcasters( sc::ColumnBlockPosition& rBlockPos, const ScAddress& rTopPos, SCROW nLength );
 
-#if DEBUG_COLUMN_STORAGE
+#if DUMP_COLUMN_STORAGE
     SC_DLLPUBLIC void DumpFormulaGroups( SCTAB nTab, SCCOL nCol ) const;
 #endif
 
diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx
index 0221fd9..70c42c8 100644
--- a/sc/inc/table.hxx
+++ b/sc/inc/table.hxx
@@ -965,7 +965,7 @@ public:
 
     void finalizeOutlineImport();
 
-#if DEBUG_COLUMN_STORAGE
+#if DUMP_COLUMN_STORAGE
     void DumpFormulaGroups( SCCOL nCol ) const;
 #endif
 
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index b3f12f9..1d63bf6 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1563,7 +1563,7 @@ void ScColumn::CellStorageModified()
 #endif
 }
 
-#if DEBUG_COLUMN_STORAGE
+#if DUMP_COLUMN_STORAGE
 
 namespace {
 
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 3bf5e8a..3116357 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -2447,7 +2447,7 @@ void ScDocument::DeleteBroadcasters( sc::ColumnBlockPosition& rBlockPos, const S
     pTab->DeleteBroadcasters(rBlockPos, rTopPos.Col(), rTopPos.Row(), rTopPos.Row()+nLength-1);
 }
 
-#if DEBUG_COLUMN_STORAGE
+#if DUMP_COLUMN_STORAGE
 void ScDocument::DumpFormulaGroups( SCTAB nTab, SCCOL nCol ) const
 {
     const ScTable* pTab = FetchTable(nTab);
diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx
index bf227d3..9df67e8 100644
--- a/sc/source/core/data/table1.cxx
+++ b/sc/source/core/data/table1.cxx
@@ -2265,7 +2265,7 @@ void ScTable::SetFormulaResults(
     aCol[nCol].SetFormulaResults(nRow, pResults, nLen);
 }
 
-#if DEBUG_COLUMN_STORAGE
+#if DUMP_COLUMN_STORAGE
 void ScTable::DumpFormulaGroups( SCCOL nCol ) const
 {
     if (!ValidCol(nCol))
diff --git a/sc/source/core/tool/sharedformula.cxx b/sc/source/core/tool/sharedformula.cxx
index 92c1cda..0a13d15 100644
--- a/sc/source/core/tool/sharedformula.cxx
+++ b/sc/source/core/tool/sharedformula.cxx
@@ -82,7 +82,7 @@ void SharedFormulaUtil::splitFormulaCellGroup(const CellStoreType::position_type
 
     // Apply the lower group object to the lower cells.
 #if DEBUG_COLUMN_STORAGE
-    if (xGroup2->mpTopCell->aPos.Row() + xGroup2->mnLength > aPos.first->position + aPos.first->size)
+    if (xGroup2->mpTopCell->aPos.Row() + size_t(xGroup2->mnLength) > aPos.first->position + aPos.first->size)
     {
         cerr << "ScColumn::SplitFormulaCellGroup: Shared formula region goes beyond the formula block. Not good." << endl;
         cerr.flush();
@@ -294,7 +294,7 @@ void SharedFormulaUtil::unshareFormulaCell(const CellStoreType::position_type& a
             xGroup2->mbInvariant = xGroup->mbInvariant;
             xGroup2->mpCode = xGroup->mpCode->Clone();
 #if DEBUG_COLUMN_STORAGE
-            if (xGroup2->mpTopCell->aPos.Row() + xGroup2->mnLength > it->position + it->size)
+            if (xGroup2->mpTopCell->aPos.Row() + size_t(xGroup2->mnLength) > it->position + it->size)
             {
                 cerr << "ScColumn::UnshareFormulaCell: Shared formula region goes beyond the formula block. Not good." << endl;
                 cerr.flush();
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index 25e66e0..709b388 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -447,6 +447,7 @@ private:
     void dumpColumnInformationPixel();
     void dumpColumnInformationHmm();
     void dumpGraphicInformation();
+    void dumpColumnCellStorage();
 #endif
 
 };
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index ce36e13..3fd2933 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -3273,6 +3273,10 @@ void ScGridWindow::KeyInput(const KeyEvent& rKEvt)
         {
             dumpCellProperties();
         }
+        else if (rKeyCode.GetCode() == KEY_F8)
+        {
+            dumpColumnCellStorage();
+        }
     }
 
 #endif
diff --git a/sc/source/ui/view/gridwin_dbgutil.cxx b/sc/source/ui/view/gridwin_dbgutil.cxx
index 4276283..afd385b 100644
--- a/sc/source/ui/view/gridwin_dbgutil.cxx
+++ b/sc/source/ui/view/gridwin_dbgutil.cxx
@@ -112,4 +112,15 @@ void ScGridWindow::dumpGraphicInformation()
     }
 }
 
+void ScGridWindow::dumpColumnCellStorage()
+{
+    // Get the current cursor position.
+    ScAddress aCurPos = pViewData->GetCurPos();
+    ScDocument* pDoc = pViewData->GetDocument();
+
+    // TODO : Perhaps we should dump the whole structure, not just the formula
+    // groups.
+    pDoc->DumpFormulaGroups(aCurPos.Tab(), aCurPos.Col());
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list