sc/inc/scmatrix.hxx | 6 ++++ sc/source/core/data/dociter.cxx | 4 +-- sc/source/core/tool/scmatrix.cxx | 52 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 2 deletions(-)
New commits: commit d7d96ec83f0ecb028e60de0cb18a877a37ddab0a Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Thu Jun 20 13:01:15 2013 -0400 Fix ScCellIterator, which also fixes matrix handling in the formula engine. This one alone fixes 2 unit test failures. Change-Id: I3392f4567888447d867ed29f7ecda2474fae1547 diff --git a/sc/inc/scmatrix.hxx b/sc/inc/scmatrix.hxx index 6ba2b7f..66b271b 100644 --- a/sc/inc/scmatrix.hxx +++ b/sc/inc/scmatrix.hxx @@ -28,7 +28,7 @@ #include <boost/intrusive_ptr.hpp> -#define DEBUG_MATRIX 1 +#define DEBUG_MATRIX 0 class ScInterpreter; class SvNumberFormatter; diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx index 207c305..e9053d3 100644 --- a/sc/source/core/data/dociter.cxx +++ b/sc/source/core/data/dociter.cxx @@ -1049,7 +1049,7 @@ bool ScCellIterator::first() bool ScCellIterator::next() { - maCurPos.IncRow(); + incPos(); return getCurrent(); } @@ -1839,7 +1839,7 @@ void ScHorizontalCellIterator::Advance() return; } - if (nNextRow > MAXROW) + if (nNextRow > static_cast<size_t>(MAXROW)) { // No more blocks to search. bMore = false; commit 0fa527827ac64274a4b18a48f454ddaba7c35cd1 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Thu Jun 20 12:06:11 2013 -0400 Add Dump() method to ScMatrix, which is useful when debugging. Change-Id: I45e6c28b58a03782814ef1089b49a52b873573a6 diff --git a/sc/inc/scmatrix.hxx b/sc/inc/scmatrix.hxx index c91b0ca..6ba2b7f 100644 --- a/sc/inc/scmatrix.hxx +++ b/sc/inc/scmatrix.hxx @@ -28,6 +28,8 @@ #include <boost/intrusive_ptr.hpp> +#define DEBUG_MATRIX 1 + class ScInterpreter; class SvNumberFormatter; class ScMatrixImpl; @@ -349,6 +351,10 @@ public: // All other matrix functions MatMult, MInv, ... are in ScInterpreter // to be numerically safe. + +#if DEBUG_MATRIX + void Dump() const; +#endif }; inline void intrusive_ptr_add_ref(const ScMatrix* p) diff --git a/sc/source/core/tool/scmatrix.cxx b/sc/source/core/tool/scmatrix.cxx index 9b2c634..010f8dc 100644 --- a/sc/source/core/tool/scmatrix.cxx +++ b/sc/source/core/tool/scmatrix.cxx @@ -37,6 +37,12 @@ #include <mdds/multi_type_vector_types.hpp> #include <mdds/multi_type_vector_trait.hpp> +#if DEBUG_MATRIX +#include <iostream> +using std::cout; +using std::endl; +#endif + using ::std::pair; using ::std::for_each; using ::std::count_if; @@ -216,6 +222,10 @@ public: ScMatrix::IterateResult Product(bool bTextAsZero) const; size_t Count(bool bCountStrings) const; +#if DEBUG_MATRIX + void Dump() const; +#endif + private: void CalcPosition(SCSIZE nIndex, SCSIZE& rC, SCSIZE& rR) const; }; @@ -957,6 +967,41 @@ size_t ScMatrixImpl::Count(bool bCountStrings) const return aFunc.getCount(); } +#if DEBUG_MATRIX +void ScMatrixImpl::Dump() const +{ + cout << "-- matrix content" << endl; + SCSIZE nCols, nRows; + GetDimensions(nCols, nRows); + for (SCSIZE nRow = 0; nRow < nRows; ++nRow) + { + for (SCSIZE nCol = 0; nCol < nCols; ++nCol) + { + cout << " row=" << nRow << ", col=" << nCol << " : "; + switch (maMat.get_type(nRow, nCol)) + { + case mdds::mtm::element_string: + cout << "string (" << maMat.get_string(nRow, nCol) << ")"; + break; + case mdds::mtm::element_numeric: + cout << "numeric (" << maMat.get_numeric(nRow, nCol) << ")"; + break; + case mdds::mtm::element_boolean: + cout << "boolean (" << maMat.get_boolean(nRow, nCol) << ")"; + break; + case mdds::mtm::element_empty: + cout << "empty"; + break; + default: + ; + } + + cout << endl; + } + } +} +#endif + void ScMatrixImpl::CalcPosition(SCSIZE nIndex, SCSIZE& rC, SCSIZE& rR) const { SCSIZE nRowSize = maMat.size().row; @@ -1264,4 +1309,11 @@ size_t ScMatrix::Count(bool bCountStrings) const return pImpl->Count(bCountStrings); } +#if DEBUG_MATRIX +void ScMatrix::Dump() const +{ + pImpl->Dump(); +} +#endif + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits