KSGSCompile.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #ifndef KSGSCompile_H
  2. #define KSGSCompile_H
  3. #include <Array.h>
  4. #include <Text.h>
  5. #include <initializer_list>
  6. using namespace Framework;
  7. namespace KSGScript
  8. {
  9. struct KSGSCompileVariable; // aus dieser Datei
  10. struct KSGSCompileFunktion; // aus dieser Datei
  11. struct KSGSCompileKlasse; // aus dieser Datei
  12. class KSGSCompVarTable
  13. {
  14. private:
  15. RCArray< Text > *namen;
  16. Array< KSGSCompileVariable* > *vars;
  17. int ref;
  18. public:
  19. // Konstruktor
  20. __declspec( dllexport ) KSGSCompVarTable();
  21. // Destruktor
  22. __declspec( dllexport ) ~KSGSCompVarTable();
  23. // nicht constant
  24. __declspec( dllexport ) bool addVariable( const char *name, KSGSCompileVariable *var );
  25. // constant
  26. __declspec( dllexport ) KSGSCompileVariable *get( const char *name ) const; // gibt die Variable eines Namens zurück
  27. __declspec( dllexport ) bool hat( const char *name ) const; // prüft, ob name vorhanden ist
  28. // Reference Counting
  29. __declspec( dllexport ) KSGSCompVarTable *getThis();
  30. __declspec( dllexport ) KSGSCompVarTable *release();
  31. };
  32. class KSGSCompFuncTable
  33. {
  34. private:
  35. RCArray< Text > *namen;
  36. Array< KSGSCompileFunktion* > *funks;
  37. int ref;
  38. public:
  39. // Konstruktor
  40. __declspec( dllexport ) KSGSCompFuncTable();
  41. // Destruktor
  42. __declspec( dllexport ) ~KSGSCompFuncTable();
  43. // nicht constant
  44. __declspec( dllexport ) bool addFunktion( const char *name, KSGSCompileFunktion *func );
  45. // constant
  46. __declspec( dllexport ) KSGSCompileFunktion *get( const char *name ) const; // gibt die Funktion eines Namens zurück
  47. __declspec( dllexport ) bool hat( const char *name ) const; // prüft, ob name vorhanden ist
  48. // Reference Counting
  49. __declspec( dllexport ) KSGSCompFuncTable *getThis();
  50. __declspec( dllexport ) KSGSCompFuncTable *release();
  51. };
  52. class KSGSCompKlassTable
  53. {
  54. private:
  55. RCArray< Text > *namen;
  56. Array< KSGSCompileKlasse* > *klassen;
  57. int ref;
  58. public:
  59. // Konstruktor
  60. __declspec( dllexport ) KSGSCompKlassTable();
  61. // Destruktor
  62. __declspec( dllexport ) ~KSGSCompKlassTable();
  63. // nicht constant
  64. __declspec( dllexport ) bool addKlasse( const char *name, KSGSCompileKlasse *klasse );
  65. // constant
  66. __declspec( dllexport ) KSGSCompileKlasse *get( const char *name ) const; // gibt die Klasse eines Namens zurück
  67. __declspec( dllexport ) KSGSCompileKlasse *get( int id ) const; // gibt die Klasse einer id zurück
  68. __declspec( dllexport ) bool hat( const char *name ) const; // prüft, ob name vorhanden ist
  69. __declspec( dllexport ) bool hat( int id ) const; // prüft, ob id vorhanden ist
  70. // Reference Counting
  71. __declspec( dllexport ) KSGSCompKlassTable *getThis();
  72. __declspec( dllexport ) KSGSCompKlassTable *release();
  73. };
  74. struct KSGSCompileVariable
  75. {
  76. int typ;
  77. int id;
  78. int sichtbar; // 0 = global, 1 = global in klasse, 2 = lokal in Klasse, 3 = lokal in Funktion
  79. // Konstruktor
  80. __declspec( dllexport ) KSGSCompileVariable( int t, int s );
  81. };
  82. struct KSGSCompileFunktion
  83. {
  84. int typ;
  85. int id;
  86. int sichtbar; // 0 = global, 1 = global in klasse, 2 = lokal in Klasse
  87. Array< int > parameterTyp;
  88. KSGSCompVarTable vars; // tabelle mit lokalen variblen
  89. // Konstruktor
  90. __declspec( dllexport ) KSGSCompileFunktion( int t, int s, std::initializer_list< int > pt );
  91. };
  92. struct KSGSCompileKlasse
  93. {
  94. int id;
  95. KSGSCompVarTable vars;
  96. KSGSCompFuncTable funcs;
  97. };
  98. }
  99. #endif