• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

/build/buildd/coinutils-2.6.4/CoinUtils/src/CoinWarmStartDual.hpp

Go to the documentation of this file.
00001 /* $Id: CoinWarmStartDual.hpp 1215 2009-11-05 11:03:04Z forrest $ */
00002 // Copyright (C) 2000, International Business Machines
00003 // Corporation and others.  All Rights Reserved.
00004 
00005 #ifndef CoinWarmStartDual_H
00006 #define CoinWarmStartDual_H
00007 
00008 #include "CoinHelperFunctions.hpp"
00009 #include "CoinWarmStart.hpp"
00010 #include "CoinWarmStartVector.hpp"
00011 
00012 
00013 //#############################################################################
00014 
00017 class CoinWarmStartDual : public virtual CoinWarmStart {
00018 public:
00020    inline int size() const { return dual_.size(); }
00022    inline const double * dual() const { return dual_.values(); }
00023 
00027    inline void assignDual(int size, double *& dual)
00028     { dual_.assignVector(size, dual); }
00029 
00030    CoinWarmStartDual() {}
00031 
00032    CoinWarmStartDual(int size, const double * dual) : dual_(size, dual) {}
00033 
00034    CoinWarmStartDual(const CoinWarmStartDual& rhs) : dual_(rhs.dual_) {}
00035 
00036    CoinWarmStartDual& operator=(const CoinWarmStartDual& rhs) {
00037      if (this != &rhs) {
00038        dual_ = rhs.dual_;
00039      }
00040      return *this;
00041    }
00042 
00044    virtual CoinWarmStart *clone() const {
00045       return new CoinWarmStartDual(*this);
00046    }
00047 
00048    virtual ~CoinWarmStartDual() {}
00049 
00052 
00060   virtual CoinWarmStartDiff*
00061   generateDiff (const CoinWarmStart *const oldCWS) const ;
00062 
00069   virtual void applyDiff (const CoinWarmStartDiff *const cwsdDiff) ;
00070 
00071 #if 0
00072 protected:
00073   inline const CoinWarmStartVector<double>& warmStartVector() const { return dual_; }
00074 #endif
00075 
00077 
00078 private:
00080   CoinWarmStartVector<double> dual_;
00081 };
00082 
00083 //#############################################################################
00084 
00100 class CoinWarmStartDualDiff : public virtual CoinWarmStartDiff
00101 { public:
00102 
00104   virtual CoinWarmStartDiff *clone() const
00105   {
00106       return new CoinWarmStartDualDiff(*this) ;
00107   }
00108 
00110   virtual CoinWarmStartDualDiff &operator= (const CoinWarmStartDualDiff &rhs)
00111   {
00112       if (this != &rhs) {
00113           diff_ = rhs.diff_;
00114       }
00115       return *this;
00116   }
00117 
00119   virtual ~CoinWarmStartDualDiff() {}
00120 
00121   protected:
00122 
00129   CoinWarmStartDualDiff () : diff_() {}
00130 
00141   CoinWarmStartDualDiff (const CoinWarmStartDualDiff &rhs) :
00142       diff_(rhs.diff_) {}
00143 
00144   private:
00145 
00146   friend CoinWarmStartDiff*
00147     CoinWarmStartDual::generateDiff(const CoinWarmStart *const oldCWS) const ;
00148   friend void
00149     CoinWarmStartDual::applyDiff(const CoinWarmStartDiff *const diff) ;
00150 
00152   CoinWarmStartDualDiff (int sze, const unsigned int *const diffNdxs,
00153                          const double *const diffVals) :
00154       diff_(sze, diffNdxs, diffVals) {}
00155 
00160   CoinWarmStartVectorDiff<double> diff_;
00161 };
00162 
00163 
00164 #endif
00165 

Generated on Fri Oct 15 2010 18:21:02 by  doxygen 1.7.1