sc/Module_sc.mk | 2 sc/inc/column.hxx | 2 sc/inc/document.hxx | 2 sc/inc/table.hxx | 2 sc/qa/unit/ucalc.cxx | 40 +++--- sc/source/core/data/column2.cxx | 227 +++++++++++++++++++++++++++++++----- sc/source/core/data/documen2.cxx | 2 sc/source/core/data/document.cxx | 2 sc/source/core/data/formulacell.cxx | 13 -- sc/source/core/data/table1.cxx | 2 10 files changed, 231 insertions(+), 63 deletions(-)
New commits: commit be4db37dddc261c2fe86bdaa67c4c042d2b0b0a3 Author: Kohei Yoshida <[email protected]> Date: Fri Jun 28 11:50:25 2013 -0400 ResolveStaticReference() to also dynamically recalc formula cells. Change-Id: If42e5105be0e6db7c63d7c4e7c43de23716d6cbf diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx index c2ce0e5..55fb97a 100644 --- a/sc/source/core/data/column2.cxx +++ b/sc/source/core/data/column2.cxx @@ -1862,13 +1862,10 @@ formula::FormulaTokenRef ScColumn::ResolveStaticReference( SCROW nRow ) case sc::element_type_formula: { ScFormulaCell* p = sc::formula_block::at(*it->data, aPos.second); - if (p->GetDirty()) - // Dirty formula cell is not considered static (for now). - // Return null token. Later we will switch to dynamically - // interpreting all dirty formula cells. - return formula::FormulaTokenRef(); + if (p->IsValue()) + return formula::FormulaTokenRef(new formula::FormulaDoubleToken(p->GetValue())); - return formula::FormulaTokenRef(new formula::FormulaDoubleToken(p->GetResultDouble())); + return formula::FormulaTokenRef(new formula::FormulaStringToken(p->GetString())); } case sc::element_type_empty: default: @@ -1884,28 +1881,34 @@ class ToMatrixHandler ScMatrix& mrMat; SCCOL mnMatCol; SCROW mnTopRow; - bool mbSuccess; public: ToMatrixHandler(ScMatrix& rMat, SCCOL nMatCol, SCROW nTopRow) : - mrMat(rMat), mnMatCol(nMatCol), mnTopRow(nTopRow), mbSuccess(true) {} + mrMat(rMat), mnMatCol(nMatCol), mnTopRow(nTopRow) {} void operator() (size_t nRow, double fVal) { mrMat.PutDouble(fVal, mnMatCol, nRow - mnTopRow); } - void operator() (size_t nRow, ScFormulaCell* p) + void operator() (size_t nRow, const ScFormulaCell* p) { - if (p->GetDirty()) - { - mbSuccess = false; - return; - } + // Formula cell may need to re-calculate. + ScFormulaCell& rCell = const_cast<ScFormulaCell&>(*p); + if (rCell.IsValue()) + mrMat.PutDouble(rCell.GetValue(), mnMatCol, nRow - mnTopRow); + else + mrMat.PutString(rCell.GetString(), mnMatCol, nRow - mnTopRow); + } - mrMat.PutDouble(p->GetResultDouble(), mnMatCol, nRow - mnTopRow); + void operator() (size_t nRow, const OUString& rStr) + { + mrMat.PutString(rStr, mnMatCol, nRow - mnTopRow); } - bool isSuccess() const { return mbSuccess; } + void operator() (size_t nRow, const EditTextObject* pStr) + { + mrMat.PutString(ScEditUtil::GetString(*pStr), mnMatCol, nRow - mnTopRow); + } }; } @@ -1916,8 +1919,8 @@ bool ScColumn::ResolveStaticReference( ScMatrix& rMat, SCCOL nMatCol, SCROW nRow return false; ToMatrixHandler aFunc(rMat, nMatCol, nRow1); - sc::ProcessFormulaNumeric(maCells.begin(), maCells, nRow1, nRow2, aFunc); - return aFunc.isSuccess(); + sc::ParseAllNonEmpty(maCells.begin(), maCells, nRow1, nRow2, aFunc); + return true; } namespace { commit 3c339eb948ca49b3b7ca31d9267dbd98a6fa708f Author: Kohei Yoshida <[email protected]> Date: Fri Jun 28 11:29:14 2013 -0400 Have FetchDoubleArray() to optionally calculate dependent formula cells. Change-Id: Ide29df664ff002f9cd8fe3edbf9512dd0cbb9eb6 diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx index eef6442..13a0651 100644 --- a/sc/inc/column.hxx +++ b/sc/inc/column.hxx @@ -464,7 +464,7 @@ public: formula::FormulaTokenRef ResolveStaticReference( SCROW nRow ); bool ResolveStaticReference( ScMatrix& rMat, SCCOL nMatCol, SCROW nRow1, SCROW nRow2 ); void FillMatrix( ScMatrix& rMat, size_t nMatCol, SCROW nRow1, SCROW nRow2 ) const; - const double* FetchDoubleArray( sc::FormulaGroupContext& rCxt, SCROW nRow1, SCROW nRow2 ) const; + const double* FetchDoubleArray( sc::FormulaGroupContext& rCxt, SCROW nRow1, SCROW nRow2 ); void SetFormulaResults( SCROW nRow, const double* pResults, size_t nLen ); void SetNumberFormat( SCROW nRow, sal_uInt32 nNumberFormat ); diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index 12cd7ff..3d12935 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -1979,7 +1979,7 @@ public: formula::FormulaTokenRef ResolveStaticReference( const ScRange& rRange ); const double* FetchDoubleArray( - sc::FormulaGroupContext& rCxt, const ScAddress& rPos, SCROW nLength ) const; + sc::FormulaGroupContext& rCxt, const ScAddress& rPos, SCROW nLength ); SvtBroadcaster* GetBroadcaster( const ScAddress& rPos ); const SvtBroadcaster* GetBroadcaster( const ScAddress& rPos ) const; diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx index 0d0aa8e..41dd35e 100644 --- a/sc/inc/table.hxx +++ b/sc/inc/table.hxx @@ -836,7 +836,7 @@ public: formula::FormulaTokenRef ResolveStaticReference( SCCOL nCol, SCROW nRow ); formula::FormulaTokenRef ResolveStaticReference( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 ); const double* FetchDoubleArray( - sc::FormulaGroupContext& rCxt, SCCOL nCol, SCROW nRow1, SCROW nRow2 ) const; + sc::FormulaGroupContext& rCxt, SCCOL nCol, SCROW nRow1, SCROW nRow2 ); ScRefCellValue GetRefCellValue( SCCOL nCol, SCROW nRow ); diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx index 5b2e718..c2ce0e5 100644 --- a/sc/source/core/data/column2.cxx +++ b/sc/source/core/data/column2.cxx @@ -2076,23 +2076,189 @@ void ScColumn::FillMatrix( ScMatrix& rMat, size_t nMatCol, SCROW nRow1, SCROW nR sc::ParseBlock(maCells.begin(), maCells, aFunc, nRow1, nRow2); } -const double* ScColumn::FetchDoubleArray( sc::FormulaGroupContext& /*rCxt*/, SCROW nRow1, SCROW nRow2 ) const +namespace { + +bool appendDouble( + sc::FormulaGroupContext::DoubleArrayType& rArray, size_t nLen, + sc::CellStoreType::iterator it, const sc::CellStoreType::iterator& itEnd ) { - // TODO: I'll use the context object later. - if (nRow1 > nRow2) - return NULL; + size_t nLenRemain = nLen; + for (; it != itEnd; ++it) + { + switch (it->type) + { + case sc::element_type_numeric: + { + sc::numeric_block::iterator itData = sc::numeric_block::begin(*it->data); + sc::numeric_block::iterator itDataEnd; + if (nLenRemain >= it->size) + { + // Block is shorter than the remaining requested length. + itDataEnd = sc::numeric_block::end(*it->data); + nLenRemain -= it->size; + } + else + { + itDataEnd = itData; + std::advance(itDataEnd, nLenRemain); + nLenRemain = 0; + } - std::pair<sc::CellStoreType::const_iterator,size_t> aPos = maCells.position(nRow1); - if (aPos.first->type != sc::element_type_numeric) - // This is not a numeric cell block. + for (; itData != itDataEnd; ++itData) + rArray.push_back(*itData); + } + break; + case sc::element_type_formula: + { + sc::formula_block::iterator itData = sc::formula_block::begin(*it->data); + sc::formula_block::iterator itDataEnd; + if (nLenRemain >= it->size) + { + // Block is shorter than the remaining requested length. + itDataEnd = sc::formula_block::end(*it->data); + nLenRemain -= it->size; + } + else + { + itDataEnd = itData; + std::advance(itDataEnd, nLenRemain); + nLenRemain = 0; + } + + for (; itData != itDataEnd; ++itData) + { + ScFormulaCell& rFC = **itData; + rArray.push_back(rFC.GetValue()); + } + } + break; + case sc::element_type_empty: + { + // Fill it with 0's. + if (nLenRemain >= it->size) + { + rArray.resize(rArray.size() + it->size, 0); + nLenRemain -= it->size; + } + else + { + rArray.resize(rArray.size() + nLenRemain, 0); + nLenRemain = 0; + } + } + break; + case sc::element_type_string: + case sc::element_type_edittext: + default: + return false; + } + + if (!nLenRemain) + return true; + } + + return false; +} + +} + +const double* ScColumn::FetchDoubleArray( sc::FormulaGroupContext& rCxt, SCROW nRow1, SCROW nRow2 ) +{ + if (nRow1 > nRow2) return NULL; + size_t nLenRequested = nRow2 - nRow1 + 1; + sc::CellStoreType::position_type aPos = maCells.position(nRow1); size_t nLen = aPos.first->size - aPos.second; - if (static_cast<SCROW>(nLen) < nRow2 - nRow1 + 1) - // Array shorter than requested. - return NULL; + switch (aPos.first->type) + { + case sc::element_type_numeric: + { + // This is a numeric cell block. + if (nLenRequested <= nLen) + // Requested length fits a single block. + return &sc::numeric_block::at(*aPos.first->data, aPos.second); + + // Allocate a new array and copy the values to it. + sc::numeric_block::const_iterator it = sc::numeric_block::begin(*aPos.first->data); + sc::numeric_block::const_iterator itEnd = sc::numeric_block::end(*aPos.first->data); + std::advance(it, aPos.second); + rCxt.maArrays.push_back(new sc::FormulaGroupContext::DoubleArrayType(it, itEnd)); + sc::FormulaGroupContext::DoubleArrayType& rArray = rCxt.maArrays.back(); + rArray.reserve(nLenRequested); + + // Fill the remaining array with values from the following blocks. + ++aPos.first; + if (!appendDouble(rArray, nLenRequested - nLen, aPos.first, maCells.end())) + return NULL; + + return &rArray[0]; + } + break; + case sc::element_type_formula: + { + rCxt.maArrays.push_back(new sc::FormulaGroupContext::DoubleArrayType); + sc::FormulaGroupContext::DoubleArrayType& rArray = rCxt.maArrays.back(); + rArray.reserve(nLenRequested); + + sc::formula_block::const_iterator it = sc::formula_block::begin(*aPos.first->data); + sc::formula_block::const_iterator itEnd; + if (nLenRequested <= nLen) + { + // Requested length is within a single block. + itEnd = it; + std::advance(itEnd, nLenRequested); + for (; it != itEnd; ++it) + { + ScFormulaCell& rCell = **it; + rArray.push_back(rCell.GetValue()); // the cell may be interpreted. + } + + return &rArray[0]; + } + + itEnd = sc::formula_block::end(*aPos.first->data); + std::advance(itEnd, nLenRequested); + for (; it != itEnd; ++it) + { + ScFormulaCell& rCell = **it; + rArray.push_back(rCell.GetValue()); // the cell may be interpreted. + } + + // Fill the remaining array with values from the following blocks. + ++aPos.first; + if (!appendDouble(rArray, nLenRequested - nLen, aPos.first, maCells.end())) + return NULL; + + return &rArray[0]; + } + break; + case sc::element_type_empty: + { + if (nLenRequested <= nLen) + { + // Fill the whole length with zero. + rCxt.maArrays.push_back(new sc::FormulaGroupContext::DoubleArrayType(nLenRequested, 0.0)); + return &rCxt.maArrays.back()[0]; + } + + // Fill the array with zero for the length of the empty block. + rCxt.maArrays.push_back(new sc::FormulaGroupContext::DoubleArrayType(nLen, 0.0)); + sc::FormulaGroupContext::DoubleArrayType& rArray = rCxt.maArrays.back(); + rArray.reserve(nLenRequested); + + // Fill the remaining array with values from the following blocks. + ++aPos.first; + if (!appendDouble(rArray, nLenRequested - nLen, aPos.first, maCells.end())) + return NULL; + + return &rArray[0]; + } + default: + ; + } - return &sc::numeric_block::at(*aPos.first->data, aPos.second); + return NULL; } void ScColumn::SetFormulaResults( SCROW nRow, const double* pResults, size_t nLen ) diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index 1e23d7a..9e0c4af 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -1608,7 +1608,7 @@ formula::FormulaTokenRef ScDocument::ResolveStaticReference( const ScRange& rRan } const double* ScDocument::FetchDoubleArray( - sc::FormulaGroupContext& rCxt, const ScAddress& rPos, SCROW nLength ) const + sc::FormulaGroupContext& rCxt, const ScAddress& rPos, SCROW nLength ) { SCTAB nTab = rPos.Tab(); if (!TableExists(nTab)) diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx index 8c2ed77..9c0a2b5 100644 --- a/sc/source/core/data/formulacell.cxx +++ b/sc/source/core/data/formulacell.cxx @@ -2956,13 +2956,13 @@ namespace { class GroupTokenConverter { - sc::FormulaGroupContext maCxt; + sc::FormulaGroupContext& mrCxt; ScTokenArray& mrGroupTokens; ScDocument& mrDoc; ScFormulaCell& mrCell; public: - GroupTokenConverter(ScTokenArray& rGroupTokens, ScDocument& rDoc, ScFormulaCell& rCell) : - mrGroupTokens(rGroupTokens), mrDoc(rDoc), mrCell(rCell) {} + GroupTokenConverter(sc::FormulaGroupContext& rCxt, ScTokenArray& rGroupTokens, ScDocument& rDoc, ScFormulaCell& rCell) : + mrCxt(rCxt), mrGroupTokens(rGroupTokens), mrDoc(rDoc), mrCell(rCell) {} bool convert(ScTokenArray& rCode) { @@ -2993,7 +2993,7 @@ public: // we finish cell storage rework, we'll support temporary // generation of a double array which is a combination of // multiple cell array segments. - const double* pArray = mrDoc.FetchDoubleArray(maCxt, aRefPos, mrCell.GetCellGroup()->mnLength); + const double* pArray = mrDoc.FetchDoubleArray(mrCxt, aRefPos, mrCell.GetCellGroup()->mnLength); if (!pArray) return false; @@ -3035,7 +3035,7 @@ public: for (SCCOL i = aRef.Ref1.nCol; i <= aRef.Ref2.nCol; ++i) { aRefPos.SetCol(i); - const double* pArray = mrDoc.FetchDoubleArray(maCxt, aRefPos, nArrayLength); + const double* pArray = mrDoc.FetchDoubleArray(mrCxt, aRefPos, nArrayLength); if (!pArray) return false; @@ -3123,9 +3123,8 @@ bool ScFormulaCell::InterpretFormulaGroup() return InterpretInvariantFormulaGroup(); sc::FormulaGroupContext aCxt; - ScTokenArray aCode; - GroupTokenConverter aConverter(aCode, *pDocument, *this); + GroupTokenConverter aConverter(aCxt, aCode, *pDocument, *this); if (!aConverter.convert(*pCode)) return false; return sc::FormulaGroupInterpreter::getStatic()->interpret(*pDocument, aPos, xGroup, aCode); diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx index 2d90fa9..dcd0344 100644 --- a/sc/source/core/data/table1.cxx +++ b/sc/source/core/data/table1.cxx @@ -2156,7 +2156,7 @@ formula::FormulaTokenRef ScTable::ResolveStaticReference( SCCOL nCol1, SCROW nRo } const double* ScTable::FetchDoubleArray( - sc::FormulaGroupContext& rCxt, SCCOL nCol, SCROW nRow1, SCROW nRow2 ) const + sc::FormulaGroupContext& rCxt, SCCOL nCol, SCROW nRow1, SCROW nRow2 ) { if (nRow2 < nRow1) return NULL; commit 6e53dadc46bf0be0345bb12fdbc7a71811621f9f Author: Kohei Yoshida <[email protected]> Date: Thu Jun 27 20:11:14 2013 -0400 These test were removed by accident. Change-Id: I11ec1972c714b867f3b1be71a45b8e3d65cce656 diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk index 74888f0..0b3970f 100644 --- a/sc/Module_sc.mk +++ b/sc/Module_sc.mk @@ -37,6 +37,8 @@ endif $(eval $(call gb_Module_add_check_targets,sc,\ CppunitTest_sc_ucalc \ + CppunitTest_sc_filters_test \ + CppunitTest_sc_rangelst_test \ )) $(eval $(call gb_Module_add_slowcheck_targets,sc, \ commit 8f99e30ff74af0e9b301b3c28e496182593a59c7 Author: Kohei Yoshida <[email protected]> Date: Thu Jun 27 18:38:06 2013 -0400 Specify type for cppunit macros. Change-Id: Ia639be24af7dd480fbe45530673ff01b700de324 diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 3d3b353..9fc681e 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -6242,15 +6242,15 @@ void Test::testSharedFormulas() m_pDoc->SetString(aPos, "=A11*2"); pFC = m_pDoc->GetFormulaCell(aPos); CPPUNIT_ASSERT_MESSAGE("This cell is expected to be a shared formula cell.", pFC && pFC->IsShared()); - CPPUNIT_ASSERT_EQUAL(9, pFC->GetSharedTopRow()); - CPPUNIT_ASSERT_EQUAL(2, pFC->GetSharedLength()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(9), pFC->GetSharedTopRow()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(2), pFC->GetSharedLength()); aPos.SetRow(8); // B9 m_pDoc->SetString(aPos, "=A9*2"); pFC = m_pDoc->GetFormulaCell(aPos); CPPUNIT_ASSERT_MESSAGE("This cell is expected to be a shared formula cell.", pFC && pFC->IsShared()); - CPPUNIT_ASSERT_EQUAL(8, pFC->GetSharedTopRow()); - CPPUNIT_ASSERT_EQUAL(3, pFC->GetSharedLength()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(8), pFC->GetSharedTopRow()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(3), pFC->GetSharedLength()); aPos.SetRow(12); // B13 m_pDoc->SetString(aPos, "=A13*2"); @@ -6262,8 +6262,8 @@ void Test::testSharedFormulas() m_pDoc->SetString(aPos, "=A12*2"); pFC = m_pDoc->GetFormulaCell(aPos); CPPUNIT_ASSERT_MESSAGE("This cell is expected to be a shared formula cell.", pFC && pFC->IsShared()); - CPPUNIT_ASSERT_EQUAL(8, pFC->GetSharedTopRow()); - CPPUNIT_ASSERT_EQUAL(5, pFC->GetSharedLength()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(8), pFC->GetSharedTopRow()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(5), pFC->GetSharedLength()); // Insert formulas to B15:B16. aPos.SetRow(14); // B15 @@ -6272,16 +6272,16 @@ void Test::testSharedFormulas() m_pDoc->SetString(aPos, "=A16*2"); pFC = m_pDoc->GetFormulaCell(aPos); CPPUNIT_ASSERT_MESSAGE("This cell is expected to be a shared formula cell.", pFC && pFC->IsShared()); - CPPUNIT_ASSERT_EQUAL(14, pFC->GetSharedTopRow()); - CPPUNIT_ASSERT_EQUAL(2, pFC->GetSharedLength()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(14), pFC->GetSharedTopRow()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(2), pFC->GetSharedLength()); // Insert a formula to B14, and B9:B16 should be shared. aPos.SetRow(13); // B14 m_pDoc->SetString(aPos, "=A14*2"); pFC = m_pDoc->GetFormulaCell(aPos); CPPUNIT_ASSERT_MESSAGE("This cell is expected to be a shared formula cell.", pFC && pFC->IsShared()); - CPPUNIT_ASSERT_EQUAL(8, pFC->GetSharedTopRow()); - CPPUNIT_ASSERT_EQUAL(8, pFC->GetSharedLength()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(8), pFC->GetSharedTopRow()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(8), pFC->GetSharedLength()); // Insert an incompatible formula to B12, to split the shared range to B9:B11 and B13:B16. aPos.SetRow(11); // B12 @@ -6292,14 +6292,14 @@ void Test::testSharedFormulas() aPos.SetRow(8); // B9 pFC = m_pDoc->GetFormulaCell(aPos); CPPUNIT_ASSERT_MESSAGE("This cell is expected to be a shared formula cell.", pFC && pFC->IsShared()); - CPPUNIT_ASSERT_EQUAL(8, pFC->GetSharedTopRow()); - CPPUNIT_ASSERT_EQUAL(3, pFC->GetSharedLength()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(8), pFC->GetSharedTopRow()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(3), pFC->GetSharedLength()); aPos.SetRow(12); // B13 pFC = m_pDoc->GetFormulaCell(aPos); CPPUNIT_ASSERT_MESSAGE("This cell is expected to be a shared formula cell.", pFC && pFC->IsShared()); - CPPUNIT_ASSERT_EQUAL(12, pFC->GetSharedTopRow()); - CPPUNIT_ASSERT_EQUAL(4, pFC->GetSharedLength()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(12), pFC->GetSharedTopRow()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(4), pFC->GetSharedLength()); // Extend B13:B16 to B13:B20. aPos.SetRow(16); // B17 @@ -6312,8 +6312,8 @@ void Test::testSharedFormulas() m_pDoc->SetString(aPos, "=A20*2"); pFC = m_pDoc->GetFormulaCell(aPos); CPPUNIT_ASSERT_MESSAGE("This cell is expected to be a shared formula cell.", pFC && pFC->IsShared()); - CPPUNIT_ASSERT_EQUAL(12, pFC->GetSharedTopRow()); - CPPUNIT_ASSERT_EQUAL(8, pFC->GetSharedLength()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(12), pFC->GetSharedTopRow()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(8), pFC->GetSharedLength()); #if 0 // Insert empty rows at B16 to split B13:B20 into B13:B15 and B21:B25. @@ -6322,14 +6322,14 @@ void Test::testSharedFormulas() aPos.SetRow(12); // B13 pFC = m_pDoc->GetFormulaCell(aPos); CPPUNIT_ASSERT_MESSAGE("This cell is expected to be a shared formula cell.", pFC && pFC->IsShared()); - CPPUNIT_ASSERT_EQUAL(12, pFC->GetSharedTopRow()); - CPPUNIT_ASSERT_EQUAL(3, pFC->GetSharedLength()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(12), pFC->GetSharedTopRow()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(3), pFC->GetSharedLength()); aPos.SetRow(23); // B24 pFC = m_pDoc->GetFormulaCell(aPos); CPPUNIT_ASSERT_MESSAGE("This cell is expected to be a shared formula cell.", pFC && pFC->IsShared()); - CPPUNIT_ASSERT_EQUAL(20, pFC->GetSharedTopRow()); - CPPUNIT_ASSERT_EQUAL(5, pFC->GetSharedLength()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(20), pFC->GetSharedTopRow()); + CPPUNIT_ASSERT_EQUAL(static_cast<SCROW>(5), pFC->GetSharedLength()); #endif m_pDoc->DeleteTab(0); commit 72a117f73b71ba98856456cd98c905981bc966e9 Author: Kohei Yoshida <[email protected]> Date: Thu Jun 27 16:47:17 2013 -0400 We don't need these header includes. Change-Id: Ia2f7226fa3c7dc5ac98bd23833e67d7262cd8b9b diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx index 6c520a0..3869f6e 100644 --- a/sc/source/core/data/documen2.cxx +++ b/sc/source/core/data/documen2.cxx @@ -86,8 +86,6 @@ #include "macromgr.hxx" #include "formulacell.hxx" #include "clipcontext.hxx" -#include "interpre.hxx" -#include "formulagroup.hxx" using namespace com::sun::star; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
