KSGSCompile.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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 : public virtual ReferenceCounter
  13. {
  14. private:
  15. RCArray< Text > *namen;
  16. Array< KSGSCompileVariable * > *vars;
  17. public:
  18. // Konstruktor
  19. __declspec( dllexport ) KSGSCompVarTable();
  20. // Destruktor
  21. __declspec( dllexport ) ~KSGSCompVarTable();
  22. // nicht constant
  23. __declspec( dllexport ) bool addVariable( const char *name, KSGSCompileVariable *var );
  24. // constant
  25. __declspec( dllexport ) KSGSCompileVariable *get( const char *name ) const; // gibt die Variable eines Namens zurück
  26. __declspec( dllexport ) bool hat( const char *name ) const; // prüft, ob name vorhanden ist
  27. };
  28. class KSGSCompFuncTable : public virtual ReferenceCounter
  29. {
  30. private:
  31. RCArray< Text > *namen;
  32. Array< KSGSCompileFunktion * > *funks;
  33. public:
  34. // Konstruktor
  35. __declspec( dllexport ) KSGSCompFuncTable();
  36. // Destruktor
  37. __declspec( dllexport ) ~KSGSCompFuncTable();
  38. // nicht constant
  39. __declspec( dllexport ) bool addFunktion( const char *name, KSGSCompileFunktion *func );
  40. // constant
  41. __declspec( dllexport ) KSGSCompileFunktion *get( const char *name ) const; // gibt die Funktion eines Namens zurück
  42. __declspec( dllexport ) bool hat( const char *name ) const; // prüft, ob name vorhanden ist
  43. };
  44. class KSGSCompKlassTable : public virtual ReferenceCounter
  45. {
  46. private:
  47. RCArray< Text > *namen;
  48. Array< KSGSCompileKlasse * > *klassen;
  49. public:
  50. // Konstruktor
  51. __declspec( dllexport ) KSGSCompKlassTable();
  52. // Destruktor
  53. __declspec( dllexport ) ~KSGSCompKlassTable();
  54. // nicht constant
  55. __declspec( dllexport ) bool addKlasse( const char *name, KSGSCompileKlasse *klasse );
  56. // constant
  57. __declspec( dllexport ) KSGSCompileKlasse *get( const char *name ) const; // gibt die Klasse eines Namens zurück
  58. __declspec( dllexport ) KSGSCompileKlasse *get( int id ) const; // gibt die Klasse einer id zurück
  59. __declspec( dllexport ) bool hat( const char *name ) const; // prüft, ob name vorhanden ist
  60. __declspec( dllexport ) bool hat( int id ) const; // prüft, ob id vorhanden ist
  61. };
  62. struct KSGSCompileVariable
  63. {
  64. int typ;
  65. int id;
  66. int sichtbar; // 0 = global, 1 = global in klasse, 2 = lokal in Klasse, 3 = lokal in Funktion
  67. // Konstruktor
  68. __declspec( dllexport ) KSGSCompileVariable( int t, int s );
  69. };
  70. struct KSGSCompileFunktion
  71. {
  72. int typ;
  73. int id;
  74. int sichtbar; // 0 = global, 1 = global in klasse, 2 = lokal in Klasse
  75. Array< int > parameterTyp;
  76. KSGSCompVarTable vars; // tabelle mit lokalen variblen
  77. // Konstruktor
  78. __declspec( dllexport ) KSGSCompileFunktion( int t, int s, std::initializer_list< int > pt );
  79. };
  80. struct KSGSCompileKlasse
  81. {
  82. int id;
  83. KSGSCompVarTable vars;
  84. KSGSCompFuncTable funcs;
  85. };
  86. }
  87. #endif