123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #pragma once
- #include <Array.h>
- #include "Ereignis.h"
- #include "Aktionen.h"
- using namespace Framework;
- class TriggerRun;
- class VarPointer
- {
- private:
- Variable *var;
- Text name;
- int ref;
- public:
- VarPointer( const char *name, Variable *var );
- ~VarPointer();
- void setVariable( Variable *var );
- Variable *getVariable() const;
- Variable *zVariable() const;
- operator Variable *( ) const;
- VarPointer *getThis();
- VarPointer *release();
- };
- class Memory
- {
- private:
- RCArray< VarPointer > variablen;
- int ref;
- public:
- Memory();
- ~Memory();
- void addVariable( const char *name, Variable *var );
- void setVariable( const char *name, Variable *var );
- Variable *getVariable( const char *name ) const;
- Variable *zVariable( const char *name ) const;
- Memory *getThis();
- Memory *release();
- };
- class Bedingung
- {
- private:
- Aktion *expression;
- int ref;
- public:
- Bedingung();
- ~Bedingung();
- void setExpression( Aktion *expr );
- bool check( Memory *zMem, Ereignis *zEreignis );
- Bedingung *getThis();
- Bedingung *release();
- };
- class Trigger : public Variable
- {
- private:
- int ereignisAnzahl;
- EreignisTyp *ereignisse;
- RCArray< Bedingung > *bedingungen;
- RCArray< Aktion > *aktionen;
- public:
- Trigger();
- ~Trigger();
- int getAktionAnzahl() const;
- Aktion *zAktion( int index ) const;
- Aktion *getAktion( int index ) const;
- // prüft ob der auslöser von einem bestimmten ereignis ausgelößt wird
- bool wirdGetriggertVon( EreignisTyp typ ) const;
- // return: 0, falls die bedingungen nicht erfüllt sind
- TriggerRun *runTrigger( Ereignis *e, Memory *mem );
- };
- class TriggerRun
- {
- private:
- Trigger *trigger;
- Ereignis *ereignis;
- Memory *memory;
- int programCounter;
- double waitCount;
- int ref;
- public:
- TriggerRun( Trigger *trig, Ereignis *e, Memory *mem );
- ~TriggerRun();
- // gibt 0 zurück, wenn der Auslöser vollständig durchgelaufen ist
- bool runNext( double t );
- };
|