sc/source/core/tool/interpr1.cxx | 71 +++++++++++++-------------------------- 1 file changed, 24 insertions(+), 47 deletions(-)
New commits: commit 3aa566566923e3a2d582d72c1141774056bb9554 Author: Eike Rathke <er...@redhat.com> AuthorDate: Fri Aug 24 12:33:52 2018 +0200 Commit: Eike Rathke <er...@redhat.com> CommitDate: Fri Aug 24 14:53:20 2018 +0200 Consolidate duplicated code, use VectorMatrixAccessor, tdf#117016 follow-up Change-Id: I52650913034b1d490ad567867ad4405531095d92 Reviewed-on: https://gerrit.libreoffice.org/59551 Reviewed-by: Eike Rathke <er...@redhat.com> Tested-by: Jenkins diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index b5bebbb0f2f8..1738538c86db 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -6771,59 +6771,37 @@ void ScInterpreter::ScLookup() if (bOmitErrorValues) { std::vector<double> vArray; - if (bVertical) + VectorMatrixAccessor aMatAcc(*pDataMat, bVertical); + const SCSIZE nElements = aMatAcc.GetElementCount(); + for (SCSIZE i=0; i < nElements; ++i) { - for (SCSIZE i = 0; i < nR; ++i) + const double fVal = aMatAcc.GetDouble(i); + if (rtl::math::isFinite(fVal)) { - const double fVal = pDataMat->GetDouble(0, i); - if (rtl::math::isFinite(fVal)) - { - vArray.push_back(fVal); - vIndex.push_back(i); - } - } - if (vArray.empty()) - { - PushNA(); - return; - } - const size_t nElems = vArray.size(); - if (nElems == nR) - { - // No error value omitted, use as is. - pDataMat2 = pDataMat; - std::vector<long>().swap( vIndex); - } - else - { - ScMatrixRef pTempMat = GetNewMat( 1, nElems); - pTempMat->PutDoubleVector( vArray, 0, 0); - pDataMat2 = pTempMat; - nLenMajor = nElems; + vArray.push_back(fVal); + vIndex.push_back(i); } } + if (vArray.empty()) + { + PushNA(); + return; + } + const size_t nElems = vArray.size(); + if (nElems == nElements) + { + // No error value omitted, use as is. + pDataMat2 = pDataMat; + std::vector<long>().swap( vIndex); + } else { - for (SCSIZE i = 0; i < nC; ++i) - { - const double fVal = pDataMat->GetDouble(i, 0); - if (rtl::math::isFinite(fVal)) - { - vArray.push_back(fVal); - vIndex.push_back(i); - } - } - if (vArray.empty()) - { - PushNA(); - return; - } - const size_t nElems = vArray.size(); - if (nElems == nC) + nLenMajor = nElems; + if (bVertical) { - // No error value omitted, use as is. - pDataMat2 = pDataMat; - std::vector<long>().swap( vIndex); + ScMatrixRef pTempMat = GetNewMat( 1, nElems); + pTempMat->PutDoubleVector( vArray, 0, 0); + pDataMat2 = pTempMat; } else { @@ -6831,7 +6809,6 @@ void ScInterpreter::ScLookup() for (size_t i=0; i < nElems; ++i) pTempMat->PutDouble( vArray[i], i, 0); pDataMat2 = pTempMat; - nLenMajor = nElems; } } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits