#ifndef GledCore_Eventor_H
#define GledCore_Eventor_H
#include <Glasses/Operator.h>
#include <Glasses/SaturnInfo.h>
class Mountain;
class GThread;
class Eventor : public Operator
{
private:
void _init();
protected:
Double_t mTotalTime;
Double_t mRunTime;
Int_t mBeatsToDo;
Int_t mBeatsDone;
Int_t mLocBeatsDone;
Int_t mStampInterval;
Int_t mInterBeatMS;
ZLink<SaturnInfo> mHost;
Bool_t bMultix;
Bool_t bSignalSafe;
Bool_t bContinuous;
Bool_t bUseDynCast;
Bool_t bTrapILL;
Bool_t bTrapBUS;
Bool_t bTrapSEGV;
Bool_t bTrapFPE;
Bool_t bRunning;
Bool_t bSuspended;
Bool_t bPerforming;
Bool_t bXMultix;
virtual void AdEndarkenment();
virtual void AdUnfoldment();
public:
Eventor(const Text_t* n="Eventor", const Text_t* t=0) :
Operator(n, t) { _init(); }
Mountain* GetChaItOss();
virtual Operator::Arg* PreDance(Operator::Arg* op_arg=0);
virtual void PostDance(Operator::Arg* op_arg);
virtual void PreBeat(Operator::Arg* op_arg) throw(Operator::Exception);
virtual void PostBeat(Operator::Arg* op_arg) throw(Operator::Exception);
virtual void OnStart(Operator::Arg* op_arg);
virtual void OnSuspend(Operator::Arg* op_arg);
virtual void OnResume(Operator::Arg* op_arg);
virtual void OnExit(Operator::Arg* op_arg);
virtual void OnContinue(Operator::Arg* op_arg, Operator::Exception& op_exc);
virtual void OnWait(Operator::Arg* op_arg, Operator::Exception& op_exc);
virtual void OnStop(Operator::Arg* op_arg, Operator::Exception& op_exc);
virtual void OnBreak(Operator::Arg* op_arg, Operator::Exception& op_exc);
virtual void OnBreak(Operator::Arg* op_arg, const TString& msg);
virtual void OnTerminalSignal(Operator::Arg* op_arg, Int_t sid);
virtual void Start();
virtual void Stop();
virtual void Suspend();
virtual void Resume();
virtual void Reset();
virtual void Cancel();
virtual void ResetRecursively();
void SetHost(SaturnInfo* host);
void SetTrapAll();
public:
enum EpochType_e { ET_Manual, ET_DanceStart };
enum TimeSource_e { TS_System, TS_IntStep };
Double_t GetEventTime();
void PushEventTime(Double_t time);
void PopEventTime();
protected:
Int_t mEventID;
Double_t mInternalTime;
EpochType_e mEpochType;
TimeSource_e mTimeSource;
Double_t mTimeEpoch;
Double_t mTimeStep;
list<Double_t> mTimeStack;
public:
#include "Eventor.h7"
ClassDef(Eventor, 1);
};
#endif