KSGSFunktion.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. KSGScriptProcessor *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, KSGScriptProcessor *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 isFunctionExecuting() const;
  52. __declspec( dllexport ) virtual int warteAufFunktion( int zeit );
  53. __declspec( dllexport ) virtual bool isExecuting() const;
  54. };
  55. class KSGSFunktion : public virtual ReferenceCounter
  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. public:
  65. // Konstruktor
  66. __declspec( dllexport ) KSGSFunktion( int id, int sichtbar, int typ );
  67. // Destruktor
  68. __declspec( dllexport ) virtual ~KSGSFunktion();
  69. // nicht constant
  70. __declspec( dllexport ) virtual void setName( const char *txt );
  71. __declspec( dllexport ) virtual void addParameter( KSGSVariableDef *var );
  72. __declspec( dllexport ) virtual void addBefehl( KSGSBefehl *befehl );
  73. __declspec( dllexport ) virtual KSGSFunktionInstanz *erstellInstanz( KSGScriptProcessor *obj, KSGSVariable *klasse, RCArray< KSGSVariable > *params );
  74. // constant
  75. __declspec( dllexport ) virtual int getId() const;
  76. __declspec( dllexport ) virtual int getTypId() const;
  77. __declspec( dllexport ) virtual int getSichtbarkeit() const;
  78. __declspec( dllexport ) virtual bool hatName( const char *txt ) const;
  79. };
  80. }
  81. #endif