diff options
Diffstat (limited to 'build/Bonmin/include/coin/CoinModelUseful.hpp')
-rw-r--r-- | build/Bonmin/include/coin/CoinModelUseful.hpp | 441 |
1 files changed, 0 insertions, 441 deletions
diff --git a/build/Bonmin/include/coin/CoinModelUseful.hpp b/build/Bonmin/include/coin/CoinModelUseful.hpp deleted file mode 100644 index f9eeea3..0000000 --- a/build/Bonmin/include/coin/CoinModelUseful.hpp +++ /dev/null @@ -1,441 +0,0 @@ -/* $Id: CoinModelUseful.hpp 1416 2011-04-17 09:57:29Z stefan $ */ -// Copyright (C) 2005, International Business Machines -// Corporation and others. All Rights Reserved. -// This code is licensed under the terms of the Eclipse Public License (EPL). - -#ifndef CoinModelUseful_H -#define CoinModelUseful_H - - -#include <cstdlib> -#include <cmath> -#include <cassert> -#include <cfloat> -#include <cstring> -#include <cstdio> -#include <iostream> - - -#include "CoinPragma.hpp" - -/** - This is for various structures/classes needed by CoinModel. - - CoinModelLink - CoinModelLinkedList - CoinModelHash -*/ -/// for going through row or column - -class CoinModelLink { - -public: - /**@name Constructors, destructor */ - //@{ - /** Default constructor. */ - CoinModelLink(); - /** Destructor */ - ~CoinModelLink(); - //@} - - /**@name Copy method */ - //@{ - /** The copy constructor. */ - CoinModelLink(const CoinModelLink&); - /// = - CoinModelLink& operator=(const CoinModelLink&); - //@} - - /**@name Sets and gets method */ - //@{ - /// Get row - inline int row() const - { return row_;} - /// Get column - inline int column() const - { return column_;} - /// Get value - inline double value() const - { return value_;} - /// Get value - inline double element() const - { return value_;} - /// Get position - inline int position() const - { return position_;} - /// Get onRow - inline bool onRow() const - { return onRow_;} - /// Set row - inline void setRow(int row) - { row_=row;} - /// Set column - inline void setColumn(int column) - { column_=column;} - /// Set value - inline void setValue(double value) - { value_=value;} - /// Set value - inline void setElement(double value) - { value_=value;} - /// Set position - inline void setPosition(int position) - { position_=position;} - /// Set onRow - inline void setOnRow(bool onRow) - { onRow_=onRow;} - //@} - -private: - /**@name Data members */ - //@{ - /// Row - int row_; - /// Column - int column_; - /// Value as double - double value_; - /// Position in data - int position_; - /// If on row chain - bool onRow_; - //@} -}; - -/// for linked lists -// for specifying triple -typedef struct { - // top bit is nonzero if string - // rest is row - unsigned int row; - //CoinModelRowIndex row; - int column; - double value; // If string then index into strings -} CoinModelTriple; -inline int rowInTriple(const CoinModelTriple & triple) -{ return triple.row&0x7fffffff;} -inline void setRowInTriple(CoinModelTriple & triple,int iRow) -{ triple.row = iRow|(triple.row&0x80000000);} -inline bool stringInTriple(const CoinModelTriple & triple) -{ return (triple.row&0x80000000)!=0;} -inline void setStringInTriple(CoinModelTriple & triple,bool string) -{ triple.row = (string ? 0x80000000 : 0)|(triple.row&0x7fffffff);} -inline void setRowAndStringInTriple(CoinModelTriple & triple, - int iRow,bool string) -{ triple.row = (string ? 0x80000000 : 0)|iRow;} -/// for names and hashing -// for hashing -typedef struct { - int index, next; -} CoinModelHashLink; - -/* Function type. */ -typedef double (*func_t) (double); - -/// For string evaluation -/* Data type for links in the chain of symbols. */ -struct symrec -{ - char *name; /* name of symbol */ - int type; /* type of symbol: either VAR or FNCT */ - union - { - double var; /* value of a VAR */ - func_t fnctptr; /* value of a FNCT */ - } value; - struct symrec *next; /* link field */ -}; - -typedef struct symrec symrec; - -class CoinYacc { -private: - CoinYacc(const CoinYacc& rhs); - CoinYacc& operator=(const CoinYacc& rhs); - -public: - CoinYacc() : symtable(NULL), symbuf(NULL), length(0), unsetValue(0) {} - ~CoinYacc() - { - if (length) { - free(symbuf); - symbuf = NULL; - } - symrec* s = symtable; - while (s) { - free(s->name); - symtable = s; - s = s->next; - free(symtable); - } - } - -public: - symrec * symtable; - char * symbuf; - int length; - double unsetValue; -}; - -class CoinModelHash { - -public: - /**@name Constructors, destructor */ - //@{ - /** Default constructor. */ - CoinModelHash(); - /** Destructor */ - ~CoinModelHash(); - //@} - - /**@name Copy method */ - //@{ - /** The copy constructor. */ - CoinModelHash(const CoinModelHash&); - /// = - CoinModelHash& operator=(const CoinModelHash&); - //@} - - /**@name sizing (just increases) */ - //@{ - /// Resize hash (also re-hashs) - void resize(int maxItems,bool forceReHash=false); - /// Number of items i.e. rows if just row names - inline int numberItems() const - { return numberItems_;} - /// Set number of items - void setNumberItems(int number); - /// Maximum number of items - inline int maximumItems() const - { return maximumItems_;} - /// Names - inline const char *const * names() const - { return names_;} - //@} - - /**@name hashing */ - //@{ - /// Returns index or -1 - int hash(const char * name) const; - /// Adds to hash - void addHash(int index, const char * name); - /// Deletes from hash - void deleteHash(int index); - /// Returns name at position (or NULL) - const char * name(int which) const; - /// Returns non const name at position (or NULL) - char * getName(int which) const; - /// Sets name at position (does not create) - void setName(int which,char * name ) ; - /// Validates - void validateHash() const; -private: - /// Returns a hash value - int hashValue(const char * name) const; -public: - //@} -private: - /**@name Data members */ - //@{ - /// Names - char ** names_; - /// hash - CoinModelHashLink * hash_; - /// Number of items - int numberItems_; - /// Maximum number of items - int maximumItems_; - /// Last slot looked at - int lastSlot_; - //@} -}; -/// For int,int hashing -class CoinModelHash2 { - -public: - /**@name Constructors, destructor */ - //@{ - /** Default constructor. */ - CoinModelHash2(); - /** Destructor */ - ~CoinModelHash2(); - //@} - - /**@name Copy method */ - //@{ - /** The copy constructor. */ - CoinModelHash2(const CoinModelHash2&); - /// = - CoinModelHash2& operator=(const CoinModelHash2&); - //@} - - /**@name sizing (just increases) */ - //@{ - /// Resize hash (also re-hashs) - void resize(int maxItems, const CoinModelTriple * triples,bool forceReHash=false); - /// Number of items - inline int numberItems() const - { return numberItems_;} - /// Set number of items - void setNumberItems(int number); - /// Maximum number of items - inline int maximumItems() const - { return maximumItems_;} - //@} - - /**@name hashing */ - //@{ - /// Returns index or -1 - int hash(int row, int column, const CoinModelTriple * triples) const; - /// Adds to hash - void addHash(int index, int row, int column, const CoinModelTriple * triples); - /// Deletes from hash - void deleteHash(int index, int row, int column); -private: - /// Returns a hash value - int hashValue(int row, int column) const; -public: - //@} -private: - /**@name Data members */ - //@{ - /// hash - CoinModelHashLink * hash_; - /// Number of items - int numberItems_; - /// Maximum number of items - int maximumItems_; - /// Last slot looked at - int lastSlot_; - //@} -}; -class CoinModelLinkedList { - -public: - /**@name Constructors, destructor */ - //@{ - /** Default constructor. */ - CoinModelLinkedList(); - /** Destructor */ - ~CoinModelLinkedList(); - //@} - - /**@name Copy method */ - //@{ - /** The copy constructor. */ - CoinModelLinkedList(const CoinModelLinkedList&); - /// = - CoinModelLinkedList& operator=(const CoinModelLinkedList&); - //@} - - /**@name sizing (just increases) */ - //@{ - /** Resize list - for row list maxMajor is maximum rows. - */ - void resize(int maxMajor,int maxElements); - /** Create list - for row list maxMajor is maximum rows. - type 0 row list, 1 column list - */ - void create(int maxMajor,int maxElements, - int numberMajor, int numberMinor, - int type, - int numberElements, const CoinModelTriple * triples); - /// Number of major items i.e. rows if just row links - inline int numberMajor() const - { return numberMajor_;} - /// Maximum number of major items i.e. rows if just row links - inline int maximumMajor() const - { return maximumMajor_;} - /// Number of elements - inline int numberElements() const - { return numberElements_;} - /// Maximum number of elements - inline int maximumElements() const - { return maximumElements_;} - /// First on free chain - inline int firstFree() const - { return first_[maximumMajor_];} - /// Last on free chain - inline int lastFree() const - { return last_[maximumMajor_];} - /// First on chain - inline int first(int which) const - { return first_[which];} - /// Last on chain - inline int last(int which) const - { return last_[which];} - /// Next array - inline const int * next() const - { return next_;} - /// Previous array - inline const int * previous() const - { return previous_;} - //@} - - /**@name does work */ - //@{ - /** Adds to list - easy case i.e. add row to row list - Returns where chain starts - */ - int addEasy(int majorIndex, int numberOfElements, const int * indices, - const double * elements, CoinModelTriple * triples, - CoinModelHash2 & hash); - /** Adds to list - hard case i.e. add row to column list - */ - void addHard(int minorIndex, int numberOfElements, const int * indices, - const double * elements, CoinModelTriple * triples, - CoinModelHash2 & hash); - /** Adds to list - hard case i.e. add row to column list - This is when elements have been added to other copy - */ - void addHard(int first, const CoinModelTriple * triples, - int firstFree, int lastFree,const int * nextOther); - /** Deletes from list - same case i.e. delete row from row list - */ - void deleteSame(int which, CoinModelTriple * triples, - CoinModelHash2 & hash, bool zapTriples); - /** Deletes from list - other case i.e. delete row from column list - This is when elements have been deleted from other copy - */ - void updateDeleted(int which, CoinModelTriple * triples, - CoinModelLinkedList & otherList); - /** Deletes one element from Row list - */ - void deleteRowOne(int position, CoinModelTriple * triples, - CoinModelHash2 & hash); - /** Update column list for one element when - one element deleted from row copy - */ - void updateDeletedOne(int position, const CoinModelTriple * triples); - /// Fills first,last with -1 - void fill(int first,int last); - /** Puts in free list from other list */ - void synchronize(CoinModelLinkedList & other); - /// Checks that links are consistent - void validateLinks(const CoinModelTriple * triples) const; - //@} -private: - /**@name Data members */ - //@{ - /// Previous - maximumElements long - int * previous_; - /// Next - maximumElements long - int * next_; - /// First - maximumMajor+1 long (last free element chain) - int * first_; - /// Last - maximumMajor+1 long (last free element chain) - int * last_; - /// Number of major items i.e. rows if just row links - int numberMajor_; - /// Maximum number of major items i.e. rows if just row links - int maximumMajor_; - /// Number of elements - int numberElements_; - /// Maximum number of elements - int maximumElements_; - /// 0 row list, 1 column list - int type_; - //@} -}; - -#endif |