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
11class 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
21class CoinWarmStart {
22public:
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
48class CoinWarmStartDiff {
49public:
50
51 /// Abstract destructor
52 virtual ~CoinWarmStartDiff() {}
53
54 /// `Virtual constructor'
55 virtual CoinWarmStartDiff *clone() const = 0 ;
56};
57
58#endif
59