00001 //========================================================================== 00002 // CMODELCHANGE.H - part of 00003 // OMNeT++/OMNEST 00004 // Discrete System Simulation in C++ 00005 // 00006 // 00007 //========================================================================== 00008 00009 /*--------------------------------------------------------------* 00010 Copyright (C) 1992-2008 Andras Varga 00011 Copyright (C) 2006-2008 OpenSim Ltd. 00012 00013 This file is distributed WITHOUT ANY WARRANTY. See the file 00014 `license' for details on this and other legal matters. 00015 *--------------------------------------------------------------*/ 00016 00017 #ifndef __CMODELCHANGE_H 00018 #define __CMODELCHANGE_H 00019 00020 #include "cobject.h" 00021 00022 NAMESPACE_BEGIN 00023 00055 SIM_API extern simsignal_t PRE_MODEL_CHANGE; 00056 00101 SIM_API extern simsignal_t POST_MODEL_CHANGE; 00102 00109 class SIM_API cModelChangeNotification : public cObject, noncopyable 00110 { 00111 }; 00112 00119 class SIM_API cPreModuleAddNotification : public cModelChangeNotification 00120 { 00121 public: 00122 cModuleType *moduleType; 00123 const char *moduleName; 00124 cModule *parentModule; 00125 int vectorSize; 00126 int index; 00127 }; 00128 00137 class SIM_API cPostModuleAddNotification : public cModelChangeNotification 00138 { 00139 public: 00140 cModule *module; 00141 }; 00142 00150 class SIM_API cPreModuleDeleteNotification : public cModelChangeNotification 00151 { 00152 public: 00153 cModule *module; 00154 }; 00155 00165 class SIM_API cPostModuleDeleteNotification : public cModelChangeNotification 00166 { 00167 public: 00168 cModule *module; 00169 int moduleId; 00170 cModuleType *moduleType; 00171 const char *moduleName; 00172 cModule *parentModule; 00173 int vectorSize; 00174 int index; 00175 }; 00176 00183 class SIM_API cPreModuleReparentNotification : public cModelChangeNotification 00184 { 00185 public: 00186 cModule *module; 00187 cModule *newParentModule; 00188 }; 00189 00195 class SIM_API cPostModuleReparentNotification : public cModelChangeNotification 00196 { 00197 public: 00198 cModule *module; 00199 cModule *oldParentModule; 00200 }; 00201 00216 class SIM_API cPreGateAddNotification : public cModelChangeNotification 00217 { 00218 public: 00219 cModule *module; 00220 const char *gateName; 00221 cGate::Type gateType; 00222 bool isVector; 00223 }; 00224 00239 class SIM_API cPostGateAddNotification : public cModelChangeNotification 00240 { 00241 public: 00242 cModule *module; 00243 const char *gateName; 00244 }; 00245 00257 class SIM_API cPreGateDeleteNotification : public cModelChangeNotification 00258 { 00259 public: 00260 cModule *module; 00261 const char *gateName; 00262 }; 00263 00277 class SIM_API cPostGateDeleteNotification : public cModelChangeNotification 00278 { 00279 public: 00280 cModule *module; 00281 const char *gateName; 00282 cGate::Type gateType; 00283 bool isVector; 00284 int vectorSize; 00285 }; 00286 00295 class SIM_API cPreGateVectorResizeNotification : public cModelChangeNotification 00296 { 00297 public: 00298 cModule *module; 00299 const char *gateName; 00300 int newSize; 00301 }; 00302 00311 class SIM_API cPostGateVectorResizeNotification : public cModelChangeNotification 00312 { 00313 public: 00314 cModule *module; 00315 const char *gateName; 00316 int oldSize; 00317 }; 00318 00329 class SIM_API cPreGateConnectNotification : public cModelChangeNotification 00330 { 00331 public: 00332 cGate *gate; 00333 cGate *targetGate; 00334 cChannel *channel; 00335 }; 00336 00348 class SIM_API cPostGateConnectNotification : public cModelChangeNotification 00349 { 00350 public: 00351 cGate *gate; 00352 }; 00353 00366 class SIM_API cPreGateDisconnectNotification : public cModelChangeNotification 00367 { 00368 public: 00369 cGate *gate; 00370 }; 00371 00383 class SIM_API cPostGateDisconnectNotification : public cModelChangeNotification 00384 { 00385 public: 00386 cGate *gate; 00387 cGate *targetGate; 00388 cChannel *channel; 00389 }; 00390 00408 class SIM_API cPathChangeNotification : public cModelChangeNotification 00409 { 00410 public: 00411 cGate *pathStartGate; 00412 cGate *pathEndGate; 00413 cGate *changedGate; 00414 }; 00415 00424 class SIM_API cPrePathCreateNotification : public cPathChangeNotification { }; 00425 00434 class SIM_API cPostPathCreateNotification : public cPathChangeNotification { }; 00435 00444 class SIM_API cPrePathCutNotification : public cPathChangeNotification { }; 00445 00454 class SIM_API cPostPathCutNotification : public cPathChangeNotification { }; 00455 00462 class SIM_API cPreParameterChangeNotification : public cModelChangeNotification 00463 { 00464 public: 00465 cPar *par; 00466 }; 00467 00474 class SIM_API cPostParameterChangeNotification : public cModelChangeNotification 00475 { 00476 public: 00477 cPar *par; 00478 }; 00479 00485 class SIM_API cPreDisplayStringChangeNotification : public cModelChangeNotification 00486 { 00487 public: 00488 cDisplayString *displayString; 00489 }; 00490 00496 class SIM_API cPostDisplayStringChangeNotification : public cModelChangeNotification 00497 { 00498 public: 00499 cDisplayString *displayString; 00500 }; 00501 00502 NAMESPACE_END 00503 00504 #endif 00505