[haiku-commits] haiku: hrev43670 - src/libs/linprog

  • From: clemens.zeidler@xxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 18 Jan 2012 21:32:42 +0100 (CET)

hrev43670 adds 1 changeset to branch 'master'
old head: 2a14f70ce80c2f6f2839ebf09dba2fd35fc13c15
new head: e4ff57c33f99608310f257d09cccf606f2b296c3

----------------------------------------------------------------------------

e4ff57c: Use correct ALM variable index.
  
  There is list of all variables and a list of variables used by contraints. 
When editing the min, max variable constraints access the
  correct list.

                                     [ czeidler <haiku@xxxxxxxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev43670
Commit:      e4ff57c33f99608310f257d09cccf606f2b296c3
URL:         http://cgit.haiku-os.org/haiku/commit/?id=e4ff57c
Author:      czeidler <haiku@xxxxxxxxxxxxxxxxxx>
Date:        Wed Jan 18 20:13:12 2012 UTC

----------------------------------------------------------------------------

1 files changed, 11 insertions(+), 6 deletions(-)
src/libs/linprog/ActiveSetSolver.cpp |   17 +++++++++++------

----------------------------------------------------------------------------

diff --git a/src/libs/linprog/ActiveSetSolver.cpp 
b/src/libs/linprog/ActiveSetSolver.cpp
index 0948c39..a1e8451 100644
--- a/src/libs/linprog/ActiveSetSolver.cpp
+++ b/src/libs/linprog/ActiveSetSolver.cpp
@@ -433,9 +433,14 @@ ActiveSetSolver::Solve()
 bool
 ActiveSetSolver::VariableAdded(Variable* variable)
 {
-       // TODO: error checks
-       fVariableGEConstraints.AddItem(NULL);
-       fVariableLEConstraints.AddItem(NULL);
+       if (fVariableGEConstraints.AddItem(NULL) == false)
+               return false;
+       if (fVariableLEConstraints.AddItem(NULL) == false) {
+               // clean up
+               int32 count = fVariableGEConstraints.CountItems();
+               fVariableGEConstraints.RemoveItemAt(count - 1);
+               return false;   
+       }
        return true;
 }
 
@@ -443,8 +448,8 @@ ActiveSetSolver::VariableAdded(Variable* variable)
 bool
 ActiveSetSolver::VariableRemoved(Variable* variable)
 {
-       fVariableGEConstraints.RemoveItemAt(variable->Index());
-       fVariableLEConstraints.RemoveItemAt(variable->Index());
+       fVariableGEConstraints.RemoveItemAt(variable->GlobalIndex());
+       fVariableLEConstraints.RemoveItemAt(variable->GlobalIndex());
        return true;
 }
 
@@ -454,7 +459,7 @@ ActiveSetSolver::VariableRangeChanged(Variable* variable)
 {
        double min = variable->Min();
        double max = variable->Max();
-       int32 variableIndex = variable->Index();
+       int32 variableIndex = variable->GlobalIndex();
 
        Constraint* constraintGE = fVariableGEConstraints.ItemAt(variableIndex);
        Constraint* constraintLE = fVariableLEConstraints.ItemAt(variableIndex);


Other related posts:

  • » [haiku-commits] haiku: hrev43670 - src/libs/linprog - clemens . zeidler