KSGSTastaturEreignis.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include "KSGSTastaturEreignis.h"
  2. #include "KSGSTyp.h"
  3. #include "KSGSInt.h"
  4. #include "KSGSBool.h"
  5. #include "../Error/Error.h"
  6. using namespace KSGScript;
  7. // Inhalt der KSGSTastaturEreigninKlasse Klasse aus KSGSTastaturEreignis.h
  8. // Konstruktor
  9. KSGSTastaturEreignisKlasse::KSGSTastaturEreignisKlasse( KSGScriptObj *zObj, TastaturEreignis std )
  10. : KSGSKlasseInstanz( KSGS_TASTATUREREIGNIS, 0, 0, zObj )
  11. {
  12. val = std;
  13. }
  14. // Destruktor
  15. KSGSTastaturEreignisKlasse::~KSGSTastaturEreignisKlasse()
  16. {
  17. }
  18. // nicht constant
  19. KSGSVariable *KSGSTastaturEreignisKlasse::startFunktion( int id, bool access, RCArray< KSGSVariable > *parameter )
  20. {
  21. KSGSVariable *ret = 0;
  22. switch( id )
  23. {
  24. case 0: // void setId( int id )
  25. if( parameter->getEintragAnzahl() < 1 )
  26. error( 20, {}, obj );
  27. val.id = parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0;
  28. break;
  29. case 1: // void setTaste( int taste )
  30. if( parameter->getEintragAnzahl() < 1 )
  31. error( 20, {}, obj );
  32. val.taste = parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0;
  33. break;
  34. case 2: // void setVerarbeitet( bool verarbeitet )
  35. if( parameter->getEintragAnzahl() < 1 )
  36. error( 20, {}, obj );
  37. val.verarbeitet = parameter->z( 0 ) ? parameter->z( 0 )->getBool() : 0;
  38. break;
  39. default: // unbekannt
  40. error( 19, {}, obj );
  41. break;
  42. }
  43. parameter->release();
  44. return ret;
  45. }
  46. void KSGSTastaturEreignisKlasse::set( TastaturEreignis &te )
  47. {
  48. val = te;
  49. }
  50. KSGSVariable *KSGSTastaturEreignisKlasse::doOperator( int id, KSGSVariable *rechts )
  51. {
  52. if( !rechts )
  53. {
  54. error( 3, {}, obj );
  55. return 0;
  56. }
  57. KSGSVariable *ret = 0;
  58. switch( id )
  59. {
  60. case KSGS_O_SET:
  61. if( 1 )
  62. {
  63. val = rechts->getTastaturEreignis();
  64. ret = getThis();
  65. }
  66. break;
  67. }
  68. if( !ret )
  69. error( 21, {}, obj );
  70. if( rechts )
  71. rechts->release();
  72. return ret;
  73. }
  74. // constant
  75. KSGSVariable *KSGSTastaturEreignisKlasse::getVariable( int id, bool zugriff ) const
  76. {
  77. KSGSVariable *ret = 0;
  78. switch( id )
  79. {
  80. case 0: // int id
  81. ret = new KSGSIntKlasse( obj, val.id );
  82. break;
  83. case 1: // int taste
  84. ret = new KSGSIntKlasse( obj, val.taste );
  85. break;
  86. case 2: // bool verarbeitet
  87. ret = new KSGSBoolKlasse( obj, val.verarbeitet );
  88. break;
  89. }
  90. if( !ret )
  91. error( 17, {}, obj );
  92. return ret;
  93. }
  94. TastaturEreignis KSGSTastaturEreignisKlasse::getVal() const
  95. {
  96. return val;
  97. }
  98. // Reference Counting
  99. KSGSVariable *KSGSTastaturEreignisKlasse::release()
  100. {
  101. ref--;
  102. if( !ref )
  103. delete this;
  104. return 0;
  105. }