00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00034 #ifndef ___DESYSTEM_H___
00035 #define ___DESYSTEM_H___
00036
00037 #include "parmanager.h"
00038 #include "gprobemanager.h"
00039 #include "probemanager.h"
00040 #include "rndgen.h"
00041 #include "dedebug.h"
00042 #include "deevent.h"
00043
00044 class DEScheduler;
00045
00047
00068 class DESystem
00069 {
00070 protected:
00071 DEScheduler *Sched;
00072 DETime Time;
00073
00074 DETime CheckInterval;
00075
00076 DEDebug* Dbg;
00077 void NewCheckPoint();
00078
00079 ParamManager* Param;
00080 GlobalProbeManager* Results;
00081 ProbeManager* ProbeMgr;
00082
00083 int RunNumber;
00084
00085 public:
00087
00109 DESystem(ParamManager* _Param,
00110 GlobalProbeManager* _Results,
00111 ProbeManager* _ProbeMgr,
00112 int _TimeResolution,
00113 time_int _TicksPerStep,
00114 time_int _StepsPerBigstep,
00115 time_int _BigstepsPerSuperstep
00116 );
00117
00118 virtual ~DESystem();
00119
00121 const DETime& getTime() const;
00122
00124 virtual void Initialize();
00125
00127 void Run();
00128
00129
00130
00131
00132
00133
00134 virtual void CheckPoint();
00135
00136
00137 DEScheduler& getSched();
00138
00139 static void addParameters(ParamManager *Param);
00140
00141 friend class DEDevice;
00142 friend class DECheckEvent;
00143 };
00144
00145
00146
00147 class DECheckEvent : public DEEvent
00148 {
00149 protected:
00150 DESystem &sys;
00151
00152 public:
00153 DECheckEvent( DETime Time, DESystem &_sys);
00154 virtual const char *Type() const;
00155 virtual void print(ostream &os) const;
00156 virtual bool EvCompareTarget(void *target);
00157 void Handler();
00158 };
00159
00160
00161
00162 #endif
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192