00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef CbcEventHandler_H
00011 #define CbcEventHandler_H
00012
00049 #include <map>
00050
00051
00052
00053 class CbcModel ;
00054
00055
00056
00057
00058
00081 class CbcEventHandler {
00082
00083 public:
00084
00087 enum CbcEvent {
00088 node = 200,
00090 treeStatus,
00092 solution,
00094 heuristicSolution,
00096 beforeSolution1,
00098 beforeSolution2,
00100 afterHeuristic,
00102 endSearch
00103 } ;
00104
00110 enum CbcAction {
00111 noAction = -1,
00113 stop = 0,
00117 restart,
00119 restartRoot,
00121 addCuts,
00123 killSolution
00124
00125 } ;
00126
00129 typedef std::map<CbcEvent, CbcAction> eaMapPair ;
00130
00131
00134
00141 virtual CbcAction event(CbcEvent whichEvent) ;
00142
00144
00145
00148
00151 CbcEventHandler(CbcModel *model = 0 ) ;
00152
00155 CbcEventHandler(const CbcEventHandler &orig) ;
00156
00159 CbcEventHandler& operator=(const CbcEventHandler &rhs) ;
00160
00163 virtual CbcEventHandler* clone() const ;
00164
00167 virtual ~CbcEventHandler() ;
00168
00170
00173
00176 inline void setModel(CbcModel *model) {
00177 model_ = model ;
00178 }
00179
00182 inline const CbcModel* getModel() const {
00183 return model_ ;
00184 }
00185
00188 inline void setDfltAction(CbcAction action) {
00189 dfltAction_ = action ;
00190 }
00191
00194 inline void setAction(CbcEvent event, CbcAction action) {
00195 if (eaMap_ == 0) {
00196 eaMap_ = new eaMapPair ;
00197 }
00198 (*eaMap_)[event] = action ;
00199 }
00200
00202
00203
00204 protected:
00205
00211
00214 CbcModel *model_ ;
00215
00218 CbcAction dfltAction_ ;
00219
00222 eaMapPair *eaMap_ ;
00223
00225 } ;
00226
00227 #endif
00228