lemon/clp.cc
changeset 783 ef88c0a30f85
parent 576 745e182d0139
child 877 141f9c0db4a3
     1.1 --- a/lemon/clp.cc	Mon Jan 12 23:11:39 2009 +0100
     1.2 +++ b/lemon/clp.cc	Thu Nov 05 15:48:01 2009 +0100
     1.3 @@ -24,7 +24,7 @@
     1.4    ClpLp::ClpLp() {
     1.5      _prob = new ClpSimplex();
     1.6      _init_temporals();
     1.7 -    messageLevel(MESSAGE_NO_OUTPUT);
     1.8 +    messageLevel(MESSAGE_NOTHING);
     1.9    }
    1.10  
    1.11    ClpLp::ClpLp(const ClpLp& other) {
    1.12 @@ -32,7 +32,7 @@
    1.13      rows = other.rows;
    1.14      cols = other.cols;
    1.15      _init_temporals();
    1.16 -    messageLevel(MESSAGE_NO_OUTPUT);
    1.17 +    messageLevel(MESSAGE_NOTHING);
    1.18    }
    1.19  
    1.20    ClpLp::~ClpLp() {
    1.21 @@ -56,12 +56,12 @@
    1.22      }
    1.23    }
    1.24  
    1.25 -  ClpLp* ClpLp::_newSolver() const {
    1.26 +  ClpLp* ClpLp::newSolver() const {
    1.27      ClpLp* newlp = new ClpLp;
    1.28      return newlp;
    1.29    }
    1.30  
    1.31 -  ClpLp* ClpLp::_cloneSolver() const {
    1.32 +  ClpLp* ClpLp::cloneSolver() const {
    1.33      ClpLp* copylp = new ClpLp(*this);
    1.34      return copylp;
    1.35    }
    1.36 @@ -78,6 +78,19 @@
    1.37      return _prob->numberRows() - 1;
    1.38    }
    1.39  
    1.40 +  int ClpLp::_addRow(Value l, ExprIterator b, ExprIterator e, Value u) {
    1.41 +    std::vector<int> indexes;
    1.42 +    std::vector<Value> values;
    1.43 +
    1.44 +    for(ExprIterator it = b; it != e; ++it) {
    1.45 +      indexes.push_back(it->first);
    1.46 +      values.push_back(it->second);
    1.47 +    }
    1.48 +
    1.49 +    _prob->addRow(values.size(), &indexes.front(), &values.front(), l, u);
    1.50 +    return _prob->numberRows() - 1;
    1.51 +  }
    1.52 +
    1.53  
    1.54    void ClpLp::_eraseCol(int c) {
    1.55      _col_names_ref.erase(_prob->getColumnName(c));
    1.56 @@ -430,8 +443,24 @@
    1.57      _clear_temporals();
    1.58    }
    1.59  
    1.60 -  void ClpLp::messageLevel(MessageLevel m) {
    1.61 -    _prob->setLogLevel(static_cast<int>(m));
    1.62 +  void ClpLp::_messageLevel(MessageLevel level) {
    1.63 +    switch (level) {
    1.64 +    case MESSAGE_NOTHING:
    1.65 +      _prob->setLogLevel(0);
    1.66 +      break;
    1.67 +    case MESSAGE_ERROR:
    1.68 +      _prob->setLogLevel(1);
    1.69 +      break;
    1.70 +    case MESSAGE_WARNING:
    1.71 +      _prob->setLogLevel(2);
    1.72 +      break;
    1.73 +    case MESSAGE_NORMAL:
    1.74 +      _prob->setLogLevel(3);
    1.75 +      break;
    1.76 +    case MESSAGE_VERBOSE:
    1.77 +      _prob->setLogLevel(4);
    1.78 +      break;
    1.79 +    }
    1.80    }
    1.81  
    1.82  } //END OF NAMESPACE LEMON