KSGSFunktion.h 3.2 KB

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