KSGSFunktion.h 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #ifndef KSGSFunktion_H
  2. #define KSGSFunktion_H
  3. #include "KSGSBefehl.h"
  4. #include "KSGSVariable.h"
  5. #include <Thread.h>
  6. #include <Critical.h>
  7. namespace KSGScript
  8. {
  9. class KSGScriptObj; // ../Main/KSGScript.h
  10. class KSGSKlasseInstanz; // KSGSKlasse.h
  11. class KSGSThreadKlasse; // ../Klassen/KSGSThread.h
  12. typedef KSGSKlasseInstanz KSGSVariable;
  13. class KSGSFunktionInstanz : private Thread
  14. {
  15. protected:
  16. RCArray< KSGSVariable > *lokaleVariablen;
  17. RCArray< KSGSBefehl > *befehle;
  18. KSGSKlasseInstanz *klasse;
  19. KSGScriptObj *obj;
  20. KSGSThreadKlasse *threadVar;
  21. int returnTyp;
  22. KSGSVariable *retVar;
  23. Critical cs;
  24. bool pausiert;
  25. bool beendet;
  26. bool continueB;
  27. bool breakB;
  28. int scrId;
  29. int ref;
  30. // privat
  31. __declspec( dllexport ) virtual void lock();
  32. __declspec( dllexport ) virtual void unlock();
  33. public:
  34. // Konstruktor
  35. __declspec( dllexport ) KSGSFunktionInstanz( RCArray< KSGSBefehl > *ba, int rt, KSGScriptObj *obj, KSGSKlasseInstanz *klasse );
  36. // Destruktor
  37. __declspec( dllexport ) ~KSGSFunktionInstanz();
  38. // nicht constant
  39. __declspec( dllexport ) virtual void setParameter( Array< KSGSVariableDef* > *zDef, RCArray< KSGSVariable > *vars );
  40. __declspec( dllexport ) virtual void setReturnVariable( KSGSVariable *var );
  41. __declspec( dllexport ) virtual void setPause( bool p );
  42. __declspec( dllexport ) virtual void setContinue();
  43. __declspec( dllexport ) virtual void setBreak();
  44. __declspec( dllexport ) virtual void setEnde();
  45. __declspec( dllexport ) virtual KSGSVariable *startFunktion();
  46. __declspec( dllexport ) virtual void thread();
  47. __declspec( dllexport ) virtual int getStatus();
  48. __declspec( dllexport ) virtual void setVariable( int id, KSGSVariable *var );
  49. // constant
  50. __declspec( dllexport ) virtual KSGSVariable *getVariable( int id ) const;
  51. __declspec( dllexport ) virtual int getReturnTyp() const;
  52. __declspec( dllexport ) virtual bool wirdFunktionAusgeführt() const;
  53. __declspec( dllexport ) virtual int warteAufFunktion( int zeit );
  54. __declspec( dllexport ) virtual bool wirdAusgeführt() const;
  55. // Reference Counting
  56. __declspec( dllexport ) virtual KSGSFunktionInstanz *getThis();
  57. __declspec( dllexport ) virtual KSGSFunktionInstanz *release();
  58. };
  59. class KSGSFunktion
  60. {
  61. protected:
  62. RCArray< KSGSBefehl > *befehle;
  63. Array< KSGSVariableDef* > *parameter;
  64. Text name;
  65. int typId;
  66. int sichtbar; // 0 = global, 1 = global in Klasse, 2 = lokal in Klasse
  67. int id;
  68. int ref;
  69. public:
  70. // Konstruktor
  71. __declspec( dllexport ) KSGSFunktion( int id, int sichtbar, int typ );
  72. // Destruktor
  73. __declspec( dllexport ) ~KSGSFunktion();
  74. // nicht constant
  75. __declspec( dllexport ) virtual void setName( const char *txt );
  76. __declspec( dllexport ) virtual void addParameter( KSGSVariableDef *var );
  77. __declspec( dllexport ) virtual void addBefehl( KSGSBefehl *befehl );
  78. __declspec( dllexport ) virtual KSGSFunktionInstanz *erstellInstanz( KSGScriptObj *obj, KSGSKlasseInstanz *klasse, RCArray< KSGSVariable > *params );
  79. // constant
  80. __declspec( dllexport ) virtual int getId() const;
  81. __declspec( dllexport ) virtual int getTypId() const;
  82. __declspec( dllexport ) virtual int getSichtbarkeit() const;
  83. __declspec( dllexport ) virtual bool hatName( const char *txt ) const;
  84. // Reference Counting
  85. __declspec( dllexport ) virtual KSGSFunktion *getThis();
  86. __declspec( dllexport ) virtual KSGSFunktion *release();
  87. };
  88. }
  89. #endif