| 1 | /* $Id: CoinWarmStart.hpp 1372 2011-01-03 23:31:00Z lou $ */ | 
| 2 | // Copyright (C) 2000, International Business Machines | 
| 3 | // Corporation and others.  All Rights Reserved. | 
| 4 | // This code is licensed under the terms of the Eclipse Public License (EPL). | 
| 5 |  | 
| 6 | #ifndef CoinWarmStart_H | 
| 7 | #define CoinWarmStart_H | 
| 8 |  | 
| 9 | //############################################################################# | 
| 10 |  | 
| 11 | class CoinWarmStartDiff; | 
| 12 |  | 
| 13 | /** Abstract base class for warm start information. | 
| 14 |  | 
| 15 |     Really nothing can be generalized for warm start information --- all we | 
| 16 |     know is that it exists. Hence the abstract base class contains only a | 
| 17 |     virtual destructor and a virtual clone function (a virtual constructor), | 
| 18 |     so that derived classes can provide these functions. | 
| 19 | */ | 
| 20 |  | 
| 21 | class CoinWarmStart { | 
| 22 | public: | 
| 23 |  | 
| 24 |   /// Abstract destructor | 
| 25 |   virtual ~CoinWarmStart() {} | 
| 26 |  | 
| 27 |   /// `Virtual constructor' | 
| 28 |   virtual CoinWarmStart *clone() const = 0 ; | 
| 29 |  | 
| 30 |   virtual CoinWarmStartDiff* | 
| 31 |   generateDiff (const CoinWarmStart *const ) const { return nullptr; } | 
| 32 |  | 
| 33 |  | 
| 34 |   virtual void | 
| 35 |   applyDiff (const CoinWarmStartDiff *const ) {} | 
| 36 |  | 
| 37 | }; | 
| 38 |  | 
| 39 |  | 
| 40 | /*! \class CoinWarmStartDiff | 
| 41 |     \brief Abstract base class for warm start `diff' objects | 
| 42 |  | 
| 43 |   For those types of warm start objects where the notion of a `diff' makes | 
| 44 |   sense, this virtual base class is provided. As with CoinWarmStart, its sole | 
| 45 |   reason for existence is to make it possible to write solver-independent code. | 
| 46 | */ | 
| 47 |  | 
| 48 | class CoinWarmStartDiff { | 
| 49 | public: | 
| 50 |  | 
| 51 |   /// Abstract destructor | 
| 52 |   virtual ~CoinWarmStartDiff() {} | 
| 53 |  | 
| 54 |   /// `Virtual constructor' | 
| 55 |   virtual CoinWarmStartDiff *clone() const = 0 ; | 
| 56 | }; | 
| 57 |  | 
| 58 | #endif | 
| 59 |  |