Changeset 715


Ignore:
Timestamp:
Feb 1, 2006 12:17:37 PM (15 years ago)
Author:
forrest
Message:

for readLp with names

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ClpModel.cpp

    r708 r715  
    31863186      objective [i] = - objective[i];
    31873187  }
    3188  
    3189   char ** rowNames = NULL;
    3190   char ** columnNames = NULL;
    3191 #ifndef CLP_NO_STD
    3192   if (lengthNames()) {
    3193     rowNames = new char * [numberRows_];
    3194     for (int iRow=0;iRow<numberRows_;iRow++) {
    3195       rowNames[iRow] =
    3196         strdup(rowName(iRow).c_str());
    3197 #ifdef STRIPBLANKS
    3198       char * xx = rowNames[iRow];
    3199       int i;
    3200       int length = strlen(xx);
    3201       int n=0;
    3202       for (i=0;i<length;i++) {
    3203         if (xx[i]!=' ')
    3204           xx[n++]=xx[i];
    3205       }
    3206       xx[n]='\0';
    3207 #endif
    3208     }
    3209    
    3210     columnNames = new char * [numberColumns_];
    3211     for (int iColumn=0;iColumn<numberColumns_;iColumn++) {
    3212       columnNames[iColumn] =
    3213         strdup(columnName(iColumn).c_str());
    3214 #ifdef STRIPBLANKS
    3215       char * xx = columnNames[iColumn];
    3216       int i;
    3217       int length = strlen(xx);
    3218       int n=0;
    3219       for (i=0;i<length;i++) {
    3220         if (xx[i]!=' ')
    3221           xx[n++]=xx[i];
    3222       }
    3223       xx[n]='\0';
    3224 #endif
    3225     }
    3226   }
    3227 #endif
     3188  // get names
     3189  const char * const * const rowNames = rowNamesAsChar();
     3190  const char * const * const columnNames = columnNamesAsChar();
    32283191  CoinMpsIO writer;
    32293192  writer.passInMessageHandler(handler_);
     
    32553218                         quadratic);
    32563219  if (rowNames) {
     3220    deleteNamesAsChar(rowNames, numberRows_);
     3221    deleteNamesAsChar(columnNames, numberColumns_);
     3222  }
     3223  return returnCode;
     3224}
     3225#ifndef CLP_NO_STD
     3226// Create row names as char **
     3227const char * const * const
     3228ClpModel::rowNamesAsChar() const
     3229{
     3230  char ** rowNames = NULL;
     3231  if (lengthNames()) {
     3232    rowNames = new char * [numberRows_];
    32573233    for (int iRow=0;iRow<numberRows_;iRow++) {
    3258       free(rowNames[iRow]);
    3259     }
    3260     delete [] rowNames;
     3234      rowNames[iRow] =
     3235        strdup(rowName(iRow).c_str());
     3236#ifdef STRIPBLANKS
     3237      char * xx = rowNames[iRow];
     3238      int i;
     3239      int length = strlen(xx);
     3240      int n=0;
     3241      for (i=0;i<length;i++) {
     3242        if (xx[i]!=' ')
     3243          xx[n++]=xx[i];
     3244      }
     3245      xx[n]='\0';
     3246#endif
     3247    }
     3248  }
     3249  return reinterpret_cast<const char * const *>(rowNames);
     3250}
     3251// Create column names as char **
     3252const char * const * const
     3253ClpModel::columnNamesAsChar() const
     3254{
     3255  char ** columnNames = NULL;
     3256  if (lengthNames()) {
     3257    columnNames = new char * [numberColumns_];
    32613258    for (int iColumn=0;iColumn<numberColumns_;iColumn++) {
    3262       free(columnNames[iColumn]);
    3263     }
    3264     delete [] columnNames;
    3265   }
    3266   return returnCode;
    3267 }
     3259      columnNames[iColumn] =
     3260        strdup(columnName(iColumn).c_str());
     3261#ifdef STRIPBLANKS
     3262      char * xx = columnNames[iColumn];
     3263      int i;
     3264      int length = strlen(xx);
     3265      int n=0;
     3266      for (i=0;i<length;i++) {
     3267        if (xx[i]!=' ')
     3268          xx[n++]=xx[i];
     3269      }
     3270      xx[n]='\0';
     3271#endif
     3272    }
     3273  }
     3274  return reinterpret_cast<const char * const *>(columnNames);
     3275}
     3276// Delete char * version of names
     3277void
     3278ClpModel::deleteNamesAsChar(const char * const * const names,int number) const
     3279{
     3280  for (int i=0;i<number;i++) {
     3281    free(const_cast<char *>(names[i]));
     3282  }
     3283  delete [] names;
     3284}
     3285#endif
    32683286#endif
    32693287// Pass in Event handler (cloned and deleted at end)
  • trunk/include/ClpModel.hpp

    r701 r715  
    781781      return objectiveValue_;
    782782   }
     783  /// Create row names as char **
     784  const char * const * const rowNamesAsChar() const;
     785  /// Create column names as char **
     786  const char * const * const columnNamesAsChar() const;
     787  /// Delete char * version of names
     788  void deleteNamesAsChar(const char * const * const names,int number) const;
    783789  //@}
    784790
Note: See TracChangeset for help on using the changeset viewer.