1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 /* */ 3 /* This file is part of the program and library */ 4 /* SCIP --- Solving Constraint Integer Programs */ 5 /* */ 6 /* Copyright (C) 2002-2021 Konrad-Zuse-Zentrum */ 7 /* fuer Informationstechnik Berlin */ 8 /* */ 9 /* SCIP is distributed under the terms of the ZIB Academic License. */ 10 /* */ 11 /* You should have received a copy of the ZIB Academic License */ 12 /* along with SCIP; see the file COPYING. If not visit scipopt.org. */ 13 /* */ 14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 16 /**@file pub_event.h 17 * @ingroup PUBLICCOREAPI 18 * @brief public methods for managing events 19 * @author Tobias Achterberg 20 */ 21 22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 23 24 #ifndef __SCIP_PUB_EVENT_H__ 25 #define __SCIP_PUB_EVENT_H__ 26 27 28 #include "scip/def.h" 29 #include "scip/type_event.h" 30 #include "scip/type_lp.h" 31 #include "scip/type_sol.h" 32 #include "scip/type_tree.h" 33 #include "scip/type_var.h" 34 35 /* In optimized mode, some function calls are overwritten by defines to reduce the number of function calls and 36 * speed up the algorithms. For this, we need to include struct_event.h. 37 */ 38 #ifdef NDEBUG 39 #include "scip/struct_event.h" 40 #endif 41 42 #ifdef __cplusplus 43 extern "C" { 44 #endif 45 46 /* 47 * Event handler methods 48 */ 49 50 /**@addtogroup PublicEventHandlerMethods 51 * 52 * @{ 53 */ 54 55 /** gets name of event handler */ 56 SCIP_EXPORT 57 const char* SCIPeventhdlrGetName( 58 SCIP_EVENTHDLR* eventhdlr /**< event handler */ 59 ); 60 61 /** gets user data of event handler */ 62 SCIP_EXPORT 63 SCIP_EVENTHDLRDATA* SCIPeventhdlrGetData( 64 SCIP_EVENTHDLR* eventhdlr /**< event handler */ 65 ); 66 67 /** sets user data of event handler; user has to free old data in advance! */ 68 SCIP_EXPORT 69 void SCIPeventhdlrSetData( 70 SCIP_EVENTHDLR* eventhdlr, /**< event handler */ 71 SCIP_EVENTHDLRDATA* eventhdlrdata /**< new event handler user data */ 72 ); 73 74 /** is event handler initialized? */ 75 SCIP_EXPORT 76 SCIP_Bool SCIPeventhdlrIsInitialized( 77 SCIP_EVENTHDLR* eventhdlr /**< event handler */ 78 ); 79 80 /** gets time in seconds used in this event handler for setting up for next stages */ 81 SCIP_EXPORT 82 SCIP_Real SCIPeventhdlrGetSetupTime( 83 SCIP_EVENTHDLR* eventhdlr /**< event handler */ 84 ); 85 86 /** gets time in seconds used in this event handler */ 87 SCIP_EXPORT 88 SCIP_Real SCIPeventhdlrGetTime( 89 SCIP_EVENTHDLR* eventhdlr /**< event handler */ 90 ); 91 92 /** @} */ 93 94 /* 95 * Event methods 96 */ 97 98 /**@addtogroup PublicEventMethods 99 * 100 * @{ 101 */ 102 103 /** gets type of event */ 104 SCIP_EXPORT 105 SCIP_EVENTTYPE SCIPeventGetType( 106 SCIP_EVENT* event /**< event */ 107 ); 108 109 /** gets variable for a variable event (var added, var deleted, var fixed, 110 * objective value or domain change, domain hole added or removed) */ 111 SCIP_EXPORT 112 SCIP_VAR* SCIPeventGetVar( 113 SCIP_EVENT* event /**< event */ 114 ); 115 116 /** gets old objective value for an objective value change event */ 117 SCIP_EXPORT 118 SCIP_Real SCIPeventGetOldobj( 119 SCIP_EVENT* event /**< event */ 120 ); 121 122 /** gets new objective value for an objective value change event */ 123 SCIP_EXPORT 124 SCIP_Real SCIPeventGetNewobj( 125 SCIP_EVENT* event /**< event */ 126 ); 127 128 /** gets old bound for a bound change event */ 129 SCIP_EXPORT 130 SCIP_Real SCIPeventGetOldbound( 131 SCIP_EVENT* event /**< event */ 132 ); 133 134 /** gets new bound for a bound change event */ 135 SCIP_EXPORT 136 SCIP_Real SCIPeventGetNewbound( 137 SCIP_EVENT* event /**< event */ 138 ); 139 140 /** gets old variable type for a variable type change event */ 141 SCIP_EXPORT 142 SCIP_VARTYPE SCIPeventGetOldtype( 143 SCIP_EVENT* event /**< event */ 144 ); 145 146 /** gets new variable type for a variable type change event */ 147 SCIP_EXPORT 148 SCIP_VARTYPE SCIPeventGetNewtype( 149 SCIP_EVENT* event /**< event */ 150 ); 151 152 /** gets node for a node or LP event */ 153 SCIP_EXPORT 154 SCIP_NODE* SCIPeventGetNode( 155 SCIP_EVENT* event /**< event */ 156 ); 157 158 /** gets solution for a primal solution event */ 159 SCIP_EXPORT 160 SCIP_SOL* SCIPeventGetSol( 161 SCIP_EVENT* event /**< event */ 162 ); 163 164 /** gets the left bound of open interval in the hole */ 165 SCIP_EXPORT 166 SCIP_Real SCIPeventGetHoleLeft( 167 SCIP_EVENT* event /**< event */ 168 ); 169 170 /** gets the right bound of open interval in the hole */ 171 SCIP_EXPORT 172 SCIP_Real SCIPeventGetHoleRight( 173 SCIP_EVENT* event /**< event */ 174 ); 175 176 /** gets row for a row event */ 177 SCIP_EXPORT 178 SCIP_ROW* SCIPeventGetRow( 179 SCIP_EVENT* event /**< event */ 180 ); 181 182 /** gets column for a row change coefficient event */ 183 SCIP_EXPORT 184 SCIP_COL* SCIPeventGetRowCol( 185 SCIP_EVENT* event /**< event */ 186 ); 187 188 /** gets old coefficient value for a row change coefficient event */ 189 SCIP_EXPORT 190 SCIP_Real SCIPeventGetRowOldCoefVal( 191 SCIP_EVENT* event /**< event */ 192 ); 193 194 /** gets new coefficient value for a row change coefficient event */ 195 SCIP_EXPORT 196 SCIP_Real SCIPeventGetRowNewCoefVal( 197 SCIP_EVENT* event /**< event */ 198 ); 199 200 /** gets old constant value for a row change constant event */ 201 SCIP_EXPORT 202 SCIP_Real SCIPeventGetRowOldConstVal( 203 SCIP_EVENT* event /**< event */ 204 ); 205 206 /** gets new constant value for a row change constant event */ 207 SCIP_EXPORT 208 SCIP_Real SCIPeventGetRowNewConstVal( 209 SCIP_EVENT* event /**< event */ 210 ); 211 212 /** gets side for a row change side event */ 213 SCIP_EXPORT 214 SCIP_SIDETYPE SCIPeventGetRowSide( 215 SCIP_EVENT* event /**< event */ 216 ); 217 218 /** gets old side value for a row change side event */ 219 SCIP_EXPORT 220 SCIP_Real SCIPeventGetRowOldSideVal( 221 SCIP_EVENT* event /**< event */ 222 ); 223 224 /** gets new side value for a row change side event */ 225 SCIP_EXPORT 226 SCIP_Real SCIPeventGetRowNewSideVal( 227 SCIP_EVENT* event /**< event */ 228 ); 229 230 #ifdef NDEBUG 231 232 /* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and 233 * speed up the algorithms. 234 */ 235 236 #define SCIPeventGetType(event) ((event)->eventtype) 237 #define SCIPeventGetOldobj(event) ((event)->data.eventobjchg.oldobj) 238 #define SCIPeventGetNewobj(event) ((event)->data.eventobjchg.newobj) 239 #define SCIPeventGetOldbound(event) ((event)->data.eventbdchg.oldbound) 240 #define SCIPeventGetNewbound(event) ((event)->data.eventbdchg.newbound) 241 #define SCIPeventGetOldtype(event) ((event)->data.eventtypechg.oldtype) 242 #define SCIPeventGetNewtype(event) ((event)->data.eventtypechg.newtype) 243 #define SCIPeventGetNode(event) ((event)->data.node) 244 #define SCIPeventGetSol(event) ((event)->data.sol) 245 #define SCIPeventGetRowCol(event) ((event)->data.eventrowcoefchanged.col) 246 #define SCIPeventGetRowOldCoefVal(event) ((event)->data.eventrowcoefchanged.oldval) 247 #define SCIPeventGetRowNewCoefVal(event) ((event)->data.eventrowcoefchanged.newval) 248 #define SCIPeventGetRowOldConstVal(event) ((event)->data.eventrowconstchanged.oldval) 249 #define SCIPeventGetRowNewConstVal(event) ((event)->data.eventrowconstchanged.newval) 250 #define SCIPeventGetRowSide(event) ((event)->data.eventrowsidechanged.side) 251 #define SCIPeventGetRowOldSideVal(event) ((event)->data.eventrowsidechanged.oldval) 252 #define SCIPeventGetRowNewSideVal(event) ((event)->data.eventrowsidechanged.newval) 253 254 #endif 255 256 /** @} */ 257 258 #ifdef __cplusplus 259 } 260 #endif 261 262 #endif 263