00001 // Copyright (C) 2000, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 #ifndef _BCP_WARMSTART_DUAL_H 00004 #define _BCP_WARMSTART_DUAL_H 00005 00006 #include "BCP_warmstart.hpp" 00007 #include "BCP_vector_change.hpp" 00008 00009 /* NOTE: 00010 Doxygen gracefully generates description for all inherited methods if they 00011 are not documented here. So the virtual methods are documented ONLY if they 00012 have something additional to say. 00013 */ 00014 00015 //############################################################################# 00016 00020 class BCP_warmstart_dual : public BCP_warmstart { 00021 private: 00023 BCP_warmstart_dual& operator=(const BCP_warmstart_dual&); 00024 00028 BCP_warmstart_dual() : _dual(BCP_Storage_WrtParent) {} 00029 00030 private: 00032 BCP_vec_change<double> _dual; 00035 public: 00039 BCP_warmstart_dual(BCP_buffer& buf) : _dual(buf) {} 00042 BCP_warmstart_dual(const double* first, const double* last) : 00043 _dual(first, last) {} 00045 BCP_warmstart_dual(const BCP_warmstart_dual& ws) : _dual(ws._dual) {} 00046 00047 virtual ~BCP_warmstart_dual() {} 00050 // Inherited methods -------------------------------------------------------- 00051 00054 virtual CoinWarmStart* convert_to_CoinWarmStart() const; 00055 00056 virtual BCP_storage_t storage() const { return _dual.storage(); } 00057 00058 virtual BCP_warmstart* clone() const { 00059 return new BCP_warmstart_dual(*this); 00060 } 00061 00062 virtual BCP_warmstart* empty_wrt_this() const { 00063 // The default constructor creates an empty WrtParent warmstart info 00064 // (i.e., no change wrt the parent) 00065 return new BCP_warmstart_dual(); 00066 } 00067 00068 virtual int storage_size() const { 00069 return _dual.storage_size(); 00070 } 00071 00072 virtual void update(const BCP_warmstart* const change); 00073 00074 virtual BCP_warmstart* as_change(const BCP_warmstart* const old_ws, 00075 const BCP_vec<int>& del_vars, 00076 const BCP_vec<int>& del_cuts, 00077 const double petol, 00078 const double detol) const; 00079 00080 // Not inherited methods ---------------------------------------------------- 00081 00083 void pack(BCP_buffer& buf) const { 00084 _dual.pack(buf); 00085 } 00086 }; 00087 00088 #endif