KSGSLeser.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #ifndef KSGSLeser_H
  2. #define KSGSLeser_H
  3. #include <Text.h>
  4. #include <Array.h>
  5. #include <Datei.h>
  6. using namespace Framework;
  7. namespace KSGScript
  8. {
  9. class KSGScriptObj;
  10. class KSGSKlasse;
  11. class KSGSFunktion;
  12. struct KSGSVariableDef;
  13. class KSGSCompVarTable;
  14. class KSGSCompFuncTable;
  15. class KSGSCompKlassTable;
  16. class KSGSBefehl;
  17. __declspec( dllexport ) void removeLehr( Text *txt );
  18. __declspec( dllexport ) void removeKlammer( Text *txt );
  19. __declspec( dllexport ) int hatOperator( Text *txt );
  20. __declspec( dllexport ) int getOperatorPos( Text *txt, int *län );
  21. struct KSGSLeseDebug
  22. {
  23. Text datei;
  24. int zeile;
  25. };
  26. struct KSGSLeseBefehl
  27. {
  28. int typ;
  29. Text befehl;
  30. Array< KSGSLeseBefehl* > listA;
  31. Array< KSGSLeseBefehl* > listB;
  32. KSGSLeseDebug debug;
  33. // Destruktor
  34. __declspec( dllexport ) ~KSGSLeseBefehl();
  35. };
  36. struct KSGSLeseVariable
  37. {
  38. Text typ;
  39. Text name;
  40. Text wert;
  41. KSGSLeseDebug debug;
  42. };
  43. struct KSGSLeseFunktion
  44. {
  45. Text name;
  46. Text typ;
  47. Array< KSGSLeseVariable* > parameter;
  48. Array< KSGSLeseBefehl* > befehle;
  49. KSGSLeseDebug debug;
  50. // Destruktor
  51. __declspec( dllexport ) ~KSGSLeseFunktion();
  52. };
  53. struct KSGSLeseKlasse
  54. {
  55. Text name;
  56. Array< KSGSLeseVariable* > variablen;
  57. Array< bool > vSichtbar;
  58. Array< KSGSLeseFunktion* > funktionen;
  59. Array< bool > fSichtbar;
  60. KSGSLeseDebug debug;
  61. // Destruktor
  62. __declspec( dllexport ) ~KSGSLeseKlasse();
  63. };
  64. struct KSGSLeseScript
  65. {
  66. Array< KSGSLeseVariable* > variablen;
  67. Array< KSGSLeseFunktion* > funktionen;
  68. Array< KSGSLeseKlasse* > klassen;
  69. // Destruktor
  70. __declspec( dllexport ) ~KSGSLeseScript();
  71. };
  72. class KSGSLeser
  73. {
  74. private:
  75. KSGScriptObj *zObj;
  76. KSGSLeseScript *dat;
  77. Datei *d;
  78. Text *pfad;
  79. int zeile;
  80. int mainFuncId;
  81. int mausFuncId;
  82. int tastaturFuncId;
  83. int tickFuncId;
  84. int renderFuncId;
  85. int ref;
  86. // privat
  87. // Script Laden
  88. __declspec( dllexport ) bool ladeDatei();
  89. __declspec( dllexport ) bool leseBis( char c );
  90. __declspec( dllexport ) __int64 nextPosOf( char c, char c2 );
  91. __declspec( dllexport ) bool leseBisText();
  92. __declspec( dllexport ) int leseNext();
  93. __declspec( dllexport ) bool istTrenner( char c );
  94. __declspec( dllexport ) bool istLehr( char c );
  95. __declspec( dllexport ) KSGSLeseKlasse *leseKlasse();
  96. __declspec( dllexport ) KSGSLeseFunktion *leseFunktion();
  97. __declspec( dllexport ) KSGSLeseVariable *leseVariable( bool param = 0 );
  98. __declspec( dllexport ) KSGSLeseBefehl *leseBefehl();
  99. // Script Compilieren
  100. __declspec( dllexport ) bool compileKlasse( KSGSLeseKlasse *zLK, KSGSCompKlassTable *zKT );
  101. __declspec( dllexport ) bool compileFunktion( KSGSLeseFunktion *zLF, KSGSCompKlassTable *zKT, KSGSCompFuncTable *zFT, int s = 0 );
  102. __declspec( dllexport ) KSGSVariableDef *compileVariable( KSGSLeseVariable *zLV, KSGSCompKlassTable *zKT, int id );
  103. __declspec( dllexport ) KSGSKlasse *buildKlasse( KSGSLeseKlasse *zLK, KSGSCompKlassTable *zKT, KSGSCompFuncTable *zFT, KSGSCompVarTable *zVT );
  104. __declspec( dllexport ) KSGSFunktion *buildFunktion( KSGSLeseFunktion *zLF, KSGSCompKlassTable *zKT, KSGSCompFuncTable *zFT, KSGSCompVarTable *zVT, const char *klassName = 0 );
  105. __declspec( dllexport ) KSGSBefehl *buildBefehl( KSGSLeseBefehl *zLB, KSGSCompKlassTable *zKT, KSGSCompFuncTable *zFT, KSGSCompVarTable *zVT, const char *klassName = 0, const char *funktionName = 0 );
  106. public:
  107. // Konstruktor
  108. __declspec( dllexport ) KSGSLeser( const char *pfad, KSGScriptObj *zObj );
  109. // Destruktor
  110. __declspec( dllexport ) ~KSGSLeser();
  111. // nicht constant
  112. __declspec( dllexport ) bool laden();
  113. __declspec( dllexport ) bool compile( RCArray< KSGSKlasse > *klassen, RCArray< KSGSFunktion > *funktionen, Array< KSGSVariableDef* > *variablen );
  114. // constant
  115. __declspec( dllexport ) int getMainFuncId() const;
  116. __declspec( dllexport ) int getMausFuncId() const;
  117. __declspec( dllexport ) int getTastaturFuncId() const;
  118. __declspec( dllexport ) int getTickFuncId() const;
  119. __declspec( dllexport ) int getRenderFuncId() const;
  120. // Reference Counting
  121. __declspec( dllexport ) KSGSLeser *getThis();
  122. __declspec( dllexport ) KSGSLeser *release();
  123. };
  124. }
  125. #endif