opencl/source/openclconfig.cxx         |    4 
 sccomp/qa/unit/SwarmSolverTest.cxx     |  157 ++++++++++++++-------------------
 sccomp/qa/unit/solver.cxx              |    9 +
 sccomp/source/solver/LpsolveSolver.cxx |    4 
 4 files changed, 80 insertions(+), 94 deletions(-)

New commits:
commit 9a668129259eeba1a05745b7cd820fccf3043f45
Author:     Mike Kaganski <[email protected]>
AuthorDate: Fri Oct 29 09:53:10 2021 +0300
Commit:     Mike Kaganski <[email protected]>
CommitDate: Sat Oct 30 21:55:44 2021 +0200

    Prepare for removal of non-const operator[] from Sequence in opencl
    
    Change-Id: Id58484eb9b955948a8edb48000b86cec3b721060
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124377
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <[email protected]>

diff --git a/opencl/source/openclconfig.cxx b/opencl/source/openclconfig.cxx
index 5467fc5e83c9..9c4452c153d3 100644
--- a/opencl/source/openclconfig.cxx
+++ b/opencl/source/openclconfig.cxx
@@ -55,11 +55,11 @@ namespace {
 css::uno::Sequence<OUString> SetOfImplMatcherToStringSequence(const 
OpenCLConfig::ImplMatcherSet& rSet)
 {
     css::uno::Sequence<OUString> result(rSet.size());
-
+    auto resultRange = asNonConstRange(result);
     size_t n(0);
     for (const auto& rItem : rSet)
     {
-        result[n++] =
+        resultRange[n++] =
             rItem.maOS.replaceAll("%", "%25").replaceAll("/", 
"%2F").replaceAll(";", "%3B") + "/" +
             rItem.maOSVersion.replaceAll("%", "%25").replaceAll("/", 
"%2F").replaceAll(";", "%3B") + "/" +
             rItem.maPlatformVendor.replaceAll("%", "%25").replaceAll("/", 
"%2F").replaceAll(";", "%3B") + "/" +
commit 881ea76399a76599e17688f335f4f164d4d29413
Author:     Mike Kaganski <[email protected]>
AuthorDate: Fri Oct 29 09:59:24 2021 +0300
Commit:     Mike Kaganski <[email protected]>
CommitDate: Sat Oct 30 21:55:34 2021 +0200

    Prepare for removal of non-const operator[] from Sequence in sccomp
    
    Change-Id: Ic55d553c85dd0abb92b6b7f223a437c8c2ca0700
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124383
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <[email protected]>

diff --git a/sccomp/qa/unit/SwarmSolverTest.cxx 
b/sccomp/qa/unit/SwarmSolverTest.cxx
index 78cfccaaa376..030822b9cdb4 100644
--- a/sccomp/qa/unit/SwarmSolverTest.cxx
+++ b/sccomp/qa/unit/SwarmSolverTest.cxx
@@ -127,14 +127,14 @@ void SwarmSolverTest::testVariableBounded()
     uno::Sequence<table::CellAddress> aVariables{ { 0, 1, 0 } };
 
     // constraints
-    uno::Sequence<sheet::SolverConstraint> aConstraints(2);
-    aConstraints[0].Left = table::CellAddress(0, 1, 0);
-    aConstraints[0].Operator = sheet::SolverConstraintOperator_LESS_EQUAL;
-    aConstraints[0].Right <<= 100.0;
-
-    aConstraints[1].Left = table::CellAddress(0, 1, 0);
-    aConstraints[1].Operator = sheet::SolverConstraintOperator_GREATER_EQUAL;
-    aConstraints[1].Right <<= -100.0;
+    uno::Sequence<sheet::SolverConstraint> aConstraints{
+        { /* [0] Left     */ table::CellAddress(0, 1, 0),
+          /*     Operator */ sheet::SolverConstraintOperator_LESS_EQUAL,
+          /*     Right    */ uno::Any(100.0) },
+        { /* [1] Left     */ table::CellAddress(0, 1, 0),
+          /*     Operator */ sheet::SolverConstraintOperator_GREATER_EQUAL,
+          /*     Right    */ uno::Any(-100.0) }
+    };
 
     // initialize solver
     xSolver->setDocument(xDocument);
@@ -178,18 +178,17 @@ void SwarmSolverTest::testVariableConstrained()
     uno::Sequence<table::CellAddress> aVariables{ { 0, 1, 0 } };
 
     // constraints
-    uno::Sequence<sheet::SolverConstraint> aConstraints(3);
-    aConstraints[0].Left = table::CellAddress(0, 1, 0);
-    aConstraints[0].Operator = sheet::SolverConstraintOperator_GREATER_EQUAL;
-    aConstraints[0].Right <<= -50000.0;
-
-    aConstraints[1].Left = table::CellAddress(0, 1, 0);
-    aConstraints[1].Operator = sheet::SolverConstraintOperator_LESS_EQUAL;
-    aConstraints[1].Right <<= 0.0;
-
-    aConstraints[2].Left = table::CellAddress(0, 1, 1);
-    aConstraints[2].Operator = sheet::SolverConstraintOperator_GREATER_EQUAL;
-    aConstraints[2].Right <<= 10.0;
+    uno::Sequence<sheet::SolverConstraint> aConstraints{
+        { /* [0] Left     */ table::CellAddress(0, 1, 0),
+          /*     Operator */ sheet::SolverConstraintOperator_GREATER_EQUAL,
+          /*     Right    */ uno::Any(-50000.0) },
+        { /* [1] Left     */ table::CellAddress(0, 1, 0),
+          /*     Operator */ sheet::SolverConstraintOperator_LESS_EQUAL,
+          /*     Right    */ uno::Any(0.0) },
+        { /* [2] Left     */ table::CellAddress(0, 1, 1),
+          /*     Operator */ sheet::SolverConstraintOperator_GREATER_EQUAL,
+          /*     Right    */ uno::Any(10.0) }
+    };
 
     // initialize solver
     xSolver->setDocument(xDocument);
@@ -233,23 +232,20 @@ void SwarmSolverTest::testTwoVariables()
     uno::Sequence<table::CellAddress> aVariables{ { 0, 1, 2 }, { 0, 1, 3 } };
 
     // constraints
-    uno::Sequence<sheet::SolverConstraint> aConstraints(4);
-
-    aConstraints[0].Left = table::CellAddress(0, 1, 2);
-    aConstraints[0].Operator = sheet::SolverConstraintOperator_GREATER_EQUAL;
-    aConstraints[0].Right <<= -100.0;
-
-    aConstraints[1].Left = table::CellAddress(0, 1, 3);
-    aConstraints[1].Operator = sheet::SolverConstraintOperator_GREATER_EQUAL;
-    aConstraints[1].Right <<= -100.0;
-
-    aConstraints[2].Left = table::CellAddress(0, 1, 2);
-    aConstraints[2].Operator = sheet::SolverConstraintOperator_LESS_EQUAL;
-    aConstraints[2].Right <<= 100.0;
-
-    aConstraints[3].Left = table::CellAddress(0, 1, 3);
-    aConstraints[3].Operator = sheet::SolverConstraintOperator_LESS_EQUAL;
-    aConstraints[3].Right <<= 100.0;
+    uno::Sequence<sheet::SolverConstraint> aConstraints{
+        { /* [0] Left     */ table::CellAddress(0, 1, 2),
+          /*     Operator */ sheet::SolverConstraintOperator_GREATER_EQUAL,
+          /*     Right    */ uno::Any(-100.0) },
+        { /* [1] Left     */ table::CellAddress(0, 1, 3),
+          /*     Operator */ sheet::SolverConstraintOperator_GREATER_EQUAL,
+          /*     Right    */ uno::Any(-100.0) },
+        { /* [2] Left     */ table::CellAddress(0, 1, 2),
+          /*     Operator */ sheet::SolverConstraintOperator_LESS_EQUAL,
+          /*     Right    */ uno::Any(100.0) },
+        { /* [3] Left     */ table::CellAddress(0, 1, 3),
+          /*     Operator */ sheet::SolverConstraintOperator_LESS_EQUAL,
+          /*     Right    */ uno::Any(100.0) }
+    };
 
     // initialize solver
     xSolver->setDocument(xDocument);
@@ -299,55 +295,44 @@ void SwarmSolverTest::testMultipleVariables()
     };
 
     // constraints
-    uno::Sequence<sheet::SolverConstraint> aConstraints(12);
-
-    aConstraints[0].Left = table::CellAddress(0, 1, 5);
-    aConstraints[0].Operator = sheet::SolverConstraintOperator_GREATER_EQUAL;
-    aConstraints[0].Right <<= table::CellAddress(0, 1, 6);
-
-    aConstraints[1].Left = table::CellAddress(0, 2, 5);
-    aConstraints[1].Operator = sheet::SolverConstraintOperator_GREATER_EQUAL;
-    aConstraints[1].Right <<= table::CellAddress(0, 2, 6);
-
-    aConstraints[2].Left = table::CellAddress(0, 3, 5);
-    aConstraints[2].Operator = sheet::SolverConstraintOperator_GREATER_EQUAL;
-    aConstraints[2].Right <<= table::CellAddress(0, 3, 6);
-
-    aConstraints[3].Left = table::CellAddress(0, 4, 5);
-    aConstraints[3].Operator = sheet::SolverConstraintOperator_GREATER_EQUAL;
-    aConstraints[3].Right <<= table::CellAddress(0, 4, 6);
-
-    aConstraints[4].Left = table::CellAddress(0, 6, 1);
-    aConstraints[4].Operator = sheet::SolverConstraintOperator_GREATER_EQUAL;
-    aConstraints[4].Right <<= 0.0;
-
-    aConstraints[5].Left = table::CellAddress(0, 6, 2);
-    aConstraints[5].Operator = sheet::SolverConstraintOperator_GREATER_EQUAL;
-    aConstraints[5].Right <<= 0.0;
-
-    aConstraints[6].Left = table::CellAddress(0, 6, 3);
-    aConstraints[6].Operator = sheet::SolverConstraintOperator_GREATER_EQUAL;
-    aConstraints[6].Right <<= 0.0;
-
-    aConstraints[7].Left = table::CellAddress(0, 6, 4);
-    aConstraints[7].Operator = sheet::SolverConstraintOperator_GREATER_EQUAL;
-    aConstraints[7].Right <<= 0.0;
-
-    aConstraints[8].Left = table::CellAddress(0, 6, 1);
-    aConstraints[8].Operator = sheet::SolverConstraintOperator_LESS_EQUAL;
-    aConstraints[8].Right <<= 10000.0;
-
-    aConstraints[9].Left = table::CellAddress(0, 6, 2);
-    aConstraints[9].Operator = sheet::SolverConstraintOperator_LESS_EQUAL;
-    aConstraints[9].Right <<= 10000.0;
-
-    aConstraints[10].Left = table::CellAddress(0, 6, 3);
-    aConstraints[10].Operator = sheet::SolverConstraintOperator_LESS_EQUAL;
-    aConstraints[10].Right <<= 10000.0;
-
-    aConstraints[11].Left = table::CellAddress(0, 6, 4);
-    aConstraints[11].Operator = sheet::SolverConstraintOperator_LESS_EQUAL;
-    aConstraints[11].Right <<= 10000.0;
+    uno::Sequence<sheet::SolverConstraint> aConstraints{
+        { /* [ 0] Left     */ table::CellAddress(0, 1, 5),
+          /*      Operator */ sheet::SolverConstraintOperator_GREATER_EQUAL,
+          /*      Right    */ uno::Any(table::CellAddress(0, 1, 6)) },
+        { /* [ 1] Left     */ table::CellAddress(0, 2, 5),
+          /*      Operator */ sheet::SolverConstraintOperator_GREATER_EQUAL,
+          /*      Right    */ uno::Any(table::CellAddress(0, 2, 6)) },
+        { /* [ 2] Left     */ table::CellAddress(0, 3, 5),
+          /*      Operator */ sheet::SolverConstraintOperator_GREATER_EQUAL,
+          /*      Right    */ uno::Any(table::CellAddress(0, 3, 6)) },
+        { /* [ 3] Left     */ table::CellAddress(0, 4, 5),
+          /*      Operator */ sheet::SolverConstraintOperator_GREATER_EQUAL,
+          /*      Right    */ uno::Any(table::CellAddress(0, 4, 6)) },
+        { /* [ 4] Left     */ table::CellAddress(0, 6, 1),
+          /*      Operator */ sheet::SolverConstraintOperator_GREATER_EQUAL,
+          /*      Right    */ uno::Any(0.0) },
+        { /* [ 5] Left     */ table::CellAddress(0, 6, 2),
+          /*      Operator */ sheet::SolverConstraintOperator_GREATER_EQUAL,
+          /*      Right    */ uno::Any(0.0) },
+        { /* [ 6] Left     */ table::CellAddress(0, 6, 3),
+          /*      Operator */ sheet::SolverConstraintOperator_GREATER_EQUAL,
+          /*      Right    */ uno::Any(0.0) },
+        { /* [ 7] Left     */ table::CellAddress(0, 6, 4),
+          /*      Operator */ sheet::SolverConstraintOperator_GREATER_EQUAL,
+          /*      Right    */ uno::Any(0.0) },
+        { /* [ 8] Left     */ table::CellAddress(0, 6, 1),
+          /*      Operator */ sheet::SolverConstraintOperator_LESS_EQUAL,
+          /*      Right    */ uno::Any(10000.0) },
+        { /* [ 9] Left     */ table::CellAddress(0, 6, 2),
+          /*      Operator */ sheet::SolverConstraintOperator_LESS_EQUAL,
+          /*      Right    */ uno::Any(10000.0) },
+        { /* [10] Left     */ table::CellAddress(0, 6, 3),
+          /*      Operator */ sheet::SolverConstraintOperator_LESS_EQUAL,
+          /*      Right    */ uno::Any(10000.0) },
+        { /* [11] Left     */ table::CellAddress(0, 6, 4),
+          /*      Operator */ sheet::SolverConstraintOperator_LESS_EQUAL,
+          /*      Right    */ uno::Any(10000.0) }
+    };
 
     // initialize solver
     xSolver->setDocument(xDocument);
diff --git a/sccomp/qa/unit/solver.cxx b/sccomp/qa/unit/solver.cxx
index eedbce69f274..c4df7b644643 100644
--- a/sccomp/qa/unit/solver.cxx
+++ b/sccomp/qa/unit/solver.cxx
@@ -90,10 +90,11 @@ void LpSolverTest::testSolver(OUString const & rName)
     uno::Sequence<table::CellAddress> aVariables { {0, 0, 0 } };
 
     // constraints
-    uno::Sequence<sheet::SolverConstraint> aConstraints(1);
-    aConstraints[0].Left = table::CellAddress(0, 0, 0);
-    aConstraints[0].Operator = sheet::SolverConstraintOperator_LESS_EQUAL;
-    aConstraints[0].Right <<= 5.0;
+    uno::Sequence<sheet::SolverConstraint> aConstraints{
+        { /* Left     */ table::CellAddress(0, 0, 0),
+          /* Operator */ sheet::SolverConstraintOperator_LESS_EQUAL,
+          /* Right    */ uno::Any(5.0) }
+    };
 
     // initialize solver
     xSolver->setDocument( m_xDocument );
diff --git a/sccomp/source/solver/LpsolveSolver.cxx 
b/sccomp/source/solver/LpsolveSolver.cxx
index 229c5f0c3dbe..1053f53fa0ee 100644
--- a/sccomp/source/solver/LpsolveSolver.cxx
+++ b/sccomp/source/solver/LpsolveSolver.cxx
@@ -58,6 +58,7 @@
 #include <com/sun/star/table/CellAddress.hpp>
 #include <unotools/resmgr.hxx>
 #include <rtl/math.hxx>
+#include <algorithm>
 #include <memory>
 #include <vector>
 
@@ -308,8 +309,7 @@ void SAL_CALL LpsolveSolver::solve()
 
         REAL* pResultVar = nullptr;
         get_ptr_variables( lp, &pResultVar );
-        for (nVar=0; nVar<nVariables; nVar++)
-            maSolution[nVar] = pResultVar[nVar];
+        std::copy_n(pResultVar, nVariables, maSolution.getArray());
 
         mfResultValue = get_objective( lp );
     }

Reply via email to