Changeset 964


Ignore:
Timestamp:
May 29, 2013 10:45:36 PM (7 years ago)
Author:
pbelotti
Message:

de-macroized a function in CouMatrix?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp

    r956 r964  
    8989{return CoinMax (row_ . size (), col_ . size ());}
    9090
     91/// used by add_elem below
     92inline void check_and_insert (int indMaj, int indMin,
     93                              std::set <std::pair <int, CouenneSparseVector *>, CouenneExprMatrix::compare_pair_ind> &vecMaj,
     94                              expression *elem) {
     95
     96  std::          pair <int, CouenneSparseVector *> findme (indMaj, NULL);
     97  std::set <std::pair <int, CouenneSparseVector *>,
     98            CouenneExprMatrix::compare_pair_ind>::const_iterator check = vecMaj.find (findme);
     99
     100  if (check == vecMaj. end ()) {
     101    std::pair <int, CouenneSparseVector *> new_vector (indMaj, new CouenneSparseVector);
     102    new_vector.second -> add_element (indMin, elem);
     103    vecMaj. insert (new_vector);
     104  } else check -> second -> add_element (indMin, elem);
     105}
     106
    91107
    92108/// Insertion into matrix
    93109void CouenneExprMatrix::add_element (int rowInd, int colInd, expression *elem) {
    94 
    95   // don't duplicate code, macroize
    96 
    97 #define check_and_insert(indMaj,indMin,vecMaj,elem)                                                  \
    98   {                                                                                                  \
    99     std::          pair <int, CouenneSparseVector *> findme (indMaj, NULL);                          \
    100     std::set <std::pair <int, CouenneSparseVector *>,                                                \
    101               CouenneExprMatrix::compare_pair_ind>::const_iterator check = vecMaj.find (findme);     \
    102                                                                                                      \
    103     if (check == vecMaj. end ()) {                                                                   \
    104       std::pair <int, CouenneSparseVector *> new_vector (indMaj, new CouenneSparseVector);           \
    105       new_vector.second -> add_element (indMin, elem);                                               \
    106       vecMaj. insert (new_vector);                                                                   \
    107     } else check -> second -> add_element (indMin, elem);                                            \
    108   }
    109110
    110111  check_and_insert (rowInd, colInd, row_, elem);
Note: See TracChangeset for help on using the changeset viewer.