00001 00002 00003 #ifndef STRAT_H 00004 #define STRAT_H 00005 00007 #define SEQ_T -3 00008 #define INIT_T -2 00009 #define CONS_T -1 00010 #define OPT_T 0 00011 #define OPT2_T 1 00012 #define OPT3_T 2 00013 #define SPEC_T 3 00014 #define ADAPT_T 4 00015 #define ADAPT2_T 5 00016 #define ADAPT3_T 6 00017 #define ADAPT4_T 7 00018 #define ADAPT5_T 8 00019 00021 class strat 00022 { 00023 protected: 00024 #if !CMK_TRACE_DISABLED 00025 localStat *localStats; 00026 #endif 00028 PVT *localPVT; 00030 eventQueue *eq; 00032 rep *userObj; 00034 sim *parent; 00035 public: 00036 // /// Time leash accumulator 00037 // long long timeLeashTotal; 00038 // /// Number of times Step() is called 00039 // int stepCalls; 00041 int STRAT_T; 00043 00045 Event *targetEvent; 00047 Event *currentEvent; 00049 strat(); 00051 virtual ~strat() { } 00053 void init(eventQueue *q, rep *obj, sim *p, int pIdx); 00055 virtual void initSync() { } 00057 00060 virtual void Step(); 00062 virtual void Rollback() { } 00064 virtual void CancelEvents() { } 00066 virtual POSE_TimeType SafeTime() { return userObj->OVT(); } 00067 }; 00068 00069 #endif