144     char &sense, 
double &right, 
double &range) 
const;
 
  241     int *card_prev) 
const;
 
  248     int *card_prev) 
const;
 
  260   const char *
rowName(
int index) 
const;
 
  270   int rowIndex(
const char *name) 
const;
 
  347     const double *collb, 
const double *colub,
 
  348     const double *obj_coeff,
 
  349     const char *integrality,
 
  350     const double *rowlb, 
const double *rowub);
 
  354     const double *collb, 
const double *colub,
 
  357     const char *integrality,
 
  358     const double *rowlb, 
const double *rowub);
 
  391     const int card_vnames,
 
  392     const bool check_ranged) 
const;
 
  421     char const *
const *
const colnames);
 
  437   int writeLp(
const char *filename,
 
  438     const double epsilon,
 
  439     const int numberAcross,
 
  441     const bool useRowNames = 
true);
 
  458     const double epsilon,
 
  459     const int numberAcross,
 
  461     const bool useRowNames = 
true);
 
  465   int writeLp(
const char *filename, 
const bool useRowNames = 
true);
 
  469   int writeLp(FILE *fp, 
const bool useRowNames = 
true);
 
  475   void readLp(
const char *filename, 
const double epsilon);
 
  481   void readLp(
const char *filename);
 
  488   void readLp(FILE *fp, 
const double epsilon);
 
  692   void startHash(
char const *
const *
const names,
 
  711   void insertHash(
const char *thisName, 
int section);
 
  715   void out_coeff(FILE *fp, 
double v, 
int print_1) 
const;
 
  742   int is_free(
const char *buff) 
const;
 
  746   int is_inf(
const char *buff) 
const;
 
  753   int is_sense(
const char *buff) 
const;
 
  771     char **obj_name, 
int *num_objectives, 
int *obj_starts);
 
  778     int cnt_coeff) 
const;
 
  781   void realloc_coeff(
double **coeff, 
char ***colNames, 
int *maxcoeff) 
const;
 
  785     double **rowlow, 
double **rowup, 
int *maxrow) 
const;
 
  788   void realloc_col(
double **collow, 
double **colup, 
char **is_int,
 
  792   void read_row(
char *buff, 
double **pcoeff, 
char ***pcolNames,
 
  793     int *cnt_coeff, 
int *maxcoeff,
 
  794     double *rhs, 
double *rowlow, 
double *rowup,
 
  795     int *cnt_row, 
double inf) 
const;
 
CoinMessages * messagesPointer()
Return the messages pointer. 
char ** previous_names_[2]
Row names (including objective function name) and column names when stopHash() for the corresponding ...
void convertBoundToSense(const double lower, const double upper, char &sense, double &right, double &range) const 
A quick inlined function to convert from lb/ub style constraint definition to sense/rhs/range style...
char * objName_[MAX_OBJECTIVES]
Objective function name. 
const char * integerColumns() const 
Get characteristic vector of integer variables. 
void setLpDataWithoutRowAndColNames(const CoinPackedMatrix &m, const double *collb, const double *colub, const double *obj_coeff, const char *integrality, const double *rowlb, const double *rowub)
Set the data of the object. 
int numberSets_
Number of sets. 
int find_obj() const 
Locate the objective function. 
void setDecimals(const int)
Set decimals. 
int first_is_number(const char *buff) const 
Return 1 if the first character of buff is a number. 
double objectiveOffset() const 
Returns the (constant) objective offset. 
void readLp()
Does work of readLp. 
CoinLpIO()
Default Constructor. 
double * objective_[MAX_OBJECTIVES]
Pointer to dense vector of objective coefficients. 
void loadSOS(int numberSets, const CoinSet *sets)
Load in SOS stuff. 
Base class for message handling. 
const char * rowName(int index) const 
Return the row name for the specified index. 
COINColumnIndex findHash(const char *name, int section) const 
Return the index of the given name, return -1 if the name is not found. 
int is_comment(const char *buff) const 
Return 1 if the first character of buff is '/' or '\'. 
int numberColumns_
Number of columns. 
Class to read and write Lp files. 
int numberSets() const 
Number of SOS sets. 
void CoinLpIOUnitTest(const std::string &lpDir)
int writeLp(const char *filename, const double epsilon, const int numberAcross, const int decimals, const bool useRowNames=true)
Write the data in Lp format in the file with name filename. 
CoinSet ** setInformation() const 
Set information. 
void setEpsilon(const double)
Set epsilon. 
char ** names_[2]
Row names (including objective function name) and column names (linked to Hash tables). 
double * rowlower_
Pointer to dense vector of row lower bounds. 
void getPreviousRowNames(char const *const *prev, int *card_prev) const 
Get pointer to array[*card_prev] of previous row names. 
char * problemName_
Problem name. 
int getNumCols() const 
Get number of columns. 
void setDefaultRowNames()
Set objective function name to the default "obj" and row names to the default "cons0", "cons1", ... 
CoinMessages messages_
Messages. 
void passInMessageHandler(CoinMessageHandler *handler)
Pass in Message handler. 
char * integerType_
Pointer to dense vector specifying if a variable is continuous (0) or integer (1). 
void out_coeff(FILE *fp, double v, int print_1) const 
Write a coefficient. 
void setObjectiveOffset(double value, int j)
Set objective offset. 
double * rowrange_
Pointer to dense vector of slack variable upper bounds for ranged constraints (undefined for non-rang...
const double * getRowRange() const 
Get pointer to array[getNumRows()] of row ranges. 
void realloc_row(char ***rowNames, CoinBigIndex **start, double **rhs, double **rowlow, double **rowup, int *maxrow) const 
Reallocate vectors related to rows. 
char * rowsense_
Pointer to dense vector of row senses. 
int getNumberAcross() const 
Get numberAcross, the number of monomials to be printed per line. 
Sparse Matrix Base Class. 
void gutsOfCopy(const CoinLpIO &)
Does the heavy lifting for copy and assignment. 
CoinMessageHandler * messageHandler() const 
Return the message handler. 
CoinFileInput * input_
File handler. 
int numberRows_
Number of rows. 
char * fileName_
Current file name. 
int maxHash_[2]
Maximum number of entries in a hash table section. 
double * rhs_
Pointer to dense vector of row rhs. 
CoinMessages messages()
Return the messages. 
double objectiveOffset_[MAX_OBJECTIVES]
Constant offset for objective value. 
CoinBigIndex numberElements_
Number of elements. 
int rowIndex(const char *name) const 
Return the index for the specified row name. 
double infinity_
Value to use for infinity. 
CoinPackedMatrix * matrixByColumn_
Pointer to column-wise copy of problem matrix coefficients. 
void setLpDataRowAndColNames(char const *const *const rownames, char const *const *const colnames)
Set the row and column names. 
char const *const * getColNames() const 
Get pointer to array[getNumCols()] of column names. 
friend void CoinLpIOUnitTest(const std::string &lpDir)
bool isInteger(int columnNumber) const 
Return true if a column is an integer (binary or general integer) variable. 
CoinBigIndex getNumElements() const 
Get number of nonzero elements. 
const double * getObjCoefficients() const 
Get pointer to array[getNumCols()] of objective function coefficients. 
int num_objectives_
Number of objectives. 
int read_monom_obj(double *coeff, char **name, int *cnt, char **obj_name, int *num_objectives, int *obj_starts)
Read a monomial of the objective function. 
int bufferPosition_
Current buffer position. 
void newLanguage(CoinMessages::Language language)
Set the language for messages. 
CoinHashLink * hash_[2]
Hash tables with two sections. 
int bufferLength_
Current buffer length (negative if not got eol) 
int newCardLpIO() const 
Get next line into inputBuffer_ (returns number in) 
const double * getColUpper() const 
Get pointer to array[getNumCols()] of column upper bounds. 
void startHash(char const *const *const names, const COINColumnIndex number, int section)
Build the hash table for the given names. 
Very simple class for containing data on set. 
void checkColNames()
Check that current column names are distinct. 
const char * getProblemName() const 
Get the problem name. 
int numberAcross_
Number of monomials printed in a row. 
void getPreviousColNames(char const *const *prev, int *card_prev) const 
Get pointer to array[*card_prev] of previous column names. 
void setLanguage(CoinMessages::Language language)
Set the language for messages. 
void read_row(char *buff, double **pcoeff, char ***pcolNames, int *cnt_coeff, int *maxcoeff, double *rhs, double *rowlow, double *rowup, int *cnt_row, double inf) const 
Read a constraint. 
int columnIndex(const char *name) const 
Return the index for the specified column name. 
int is_free(const char *buff) const 
Return 1 if buff is the keyword "free" or one of its variants. 
int getDecimals() const 
Get decimals, the number of digits to write after the decimal point. 
int numberHash_[2]
Number of entries in a hash table section. 
void stopHash(int section)
Delete hash storage. 
bool eofFound_
If already inserted one End. 
double * rowupper_
Pointer to dense vector of row upper bounds. 
const double * getRowLower() const 
Get pointer to array[getNumRows()] of row lower bounds. 
void setNumberAcross(const int)
Set numberAcross. 
const double * getRowUpper() const 
Get pointer to array[getNumRows()] of row upper bounds. 
int read_monom_row(char *start_str, double *coeff, char **name, int cnt_coeff) const 
Read a monomial of a constraint. 
void freePreviousNames(const int section)
Free the vector previous_names_[section] and set card_previous_names_[section] to 0...
int is_subject_to(const char *buff) const 
Return an integer indicating if the keyword "subject to" or one of its variants has been read...
double getInfinity() const 
Get infinity. 
Class to hold and manipulate an array of massaged messages. 
double * collower_
Pointer to dense vector of column lower bounds. 
const CoinPackedMatrix * getMatrixByRow() const 
Get pointer to row-wise copy of the coefficient matrix. 
void insertHash(const char *thisName, int section)
Insert thisName in the hash table if not present yet; does nothing if the name is already in...
void skip_comment(char *buff) const 
Read the file fp until buff contains an end of line. 
bool defaultHandler_
Flag to say if the message handler is the default handler. 
const int getNumObjectives() const 
Get pointer to array[getNumCols()] of objective function coefficients. 
void gutsOfDestructor()
Does the heavy lifting for destruct and assignment. 
void realloc_col(double **collow, double **colup, char **is_int, int *maxcol) const 
Reallocate vectors related to columns. 
char const *const * getRowNames() const 
Get pointer to array[getNumRows()+1] of row names, including objective function name as last entry...
double getEpsilon() const 
Get epsilon. 
int is_inf(const char *buff) const 
Return 1 if buff is the keyword "inf" or one of its variants. 
CoinPackedMatrix * matrixByRow_
Pointer to row-wise copy of problem matrix coefficients. 
void setObjectiveOffset(double value)
Set objective offset. 
CoinMessageHandler * handler_
Message handler. 
double * colupper_
Pointer to dense vector of column upper bounds. 
const char * getObjName() const 
Get objective function name. 
int decimals_
Number of decimals printed for coefficients. 
CoinLpIO & operator=(const CoinLpIO &rhs)
assignment operator 
int is_sense(const char *buff) const 
Return an integer indicating the inequality sense read. 
double epsilon_
Value to use for epsilon. 
const char * columnName(int index) const 
Return the column name for the specified index. 
void freeAll()
Free all memory (except memory related to hash tables and objName_). 
void realloc_coeff(double **coeff, char ***colNames, int *maxcoeff) const 
Reallocate vectors related to number of coefficients. 
int is_keyword(const char *buff) const 
Return an integer indicating if one of the keywords "Bounds", "Integers", "Generals", "Binaries", "Semi-continuous", "Sos", "End", or one of their variants has been read. 
void setInfinity(const double)
Set infinity. 
void checkRowNames()
Check that current objective name and all row names are distinct including row names obtained by addi...
const double * getColLower() const 
Get pointer to array[getNumCols()] of column lower bounds. 
Language
Supported languages. 
const char * getRowSense() const 
Get pointer to array[getNumRows()] of constraint senses. 
int are_invalid_names(char const *const *vnames, const int card_vnames, const bool check_ranged) const 
Return 0 if each of the card_vnames entries of vnames is a valid name, return a positive number other...
void setProblemName(const char *name)
Set problem name. 
int card_previous_names_[2]
card_previous_names_[section] holds the number of entries in the vector previous_names_[section]. 
const CoinPackedMatrix * getMatrixByCol() const 
Get pointer to column-wise copy of the coefficient matrix. 
int getNumRows() const 
Get number of rows. 
void print() const 
Dump the data. Low level method for debugging. 
int fscanfLpIO(char *buff) const 
Get next string (returns number in) 
char inputBuffer_[1028]
Current buffer (needed so can get rid of blanks with : 
int is_invalid_name(const char *buff, const bool ranged) const 
Return 0 if buff is a valid name for a row, a column or objective function, return a positive number ...
void setDefaultColNames()
Set column names to the default "x0", "x1", ... 
CoinSet ** set_
Pointer to sets. 
const double * getRightHandSide() const 
Get pointer to array[getNumRows()] of constraint right-hand sides.