KSGSTastaturEreignis.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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( KSGScriptProcessor *zObj, TastaturEreignis std )
  10. : KSGSKlasseInstanz( KSGS_TASTATUREREIGNIS, 0, 0, zObj )
  11. {
  12. val = std;
  13. }
  14. // Destruktor
  15. KSGSTastaturEreignisKlasse::~KSGSTastaturEreignisKlasse()
  16. {}
  17. // nicht constant
  18. KSGSVariable *KSGSTastaturEreignisKlasse::startFunktion( int id, bool access, RCArray< KSGSVariable > *parameter )
  19. {
  20. KSGSVariable *ret = 0;
  21. switch( id )
  22. {
  23. case 0: // void setId( int id )
  24. if( parameter->getEintragAnzahl() < 1 )
  25. error( 20, {}, obj );
  26. val.id = parameter->z( 0 ) ? parameter->z( 0 )->getInt() : 0;
  27. break;
  28. case 1: // void setTaste( int taste )
  29. if( parameter->getEintragAnzahl() < 1 )
  30. error( 20, {}, obj );
  31. val.taste = parameter->z( 0 ) ? (unsigned char)parameter->z( 0 )->getInt() : (unsigned char)0;
  32. break;
  33. case 2: // void setVerarbeitet( bool verarbeitet )
  34. if( parameter->getEintragAnzahl() < 1 )
  35. error( 20, {}, obj );
  36. val.verarbeitet = parameter->z( 0 ) ? parameter->z( 0 )->getBool() : 0;
  37. break;
  38. default: // unbekannt
  39. error( 19, {}, obj );
  40. break;
  41. }
  42. parameter->release();
  43. return ret;
  44. }
  45. void KSGSTastaturEreignisKlasse::set( TastaturEreignis &te )
  46. {
  47. val = te;
  48. }
  49. KSGSVariable *KSGSTastaturEreignisKlasse::doOperator( int id, KSGSVariable *rechts )
  50. {
  51. if( !rechts )
  52. {
  53. error( 3, {}, obj );
  54. return 0;
  55. }
  56. KSGSVariable *ret = 0;
  57. switch( id )
  58. {
  59. case KSGS_O_SET:
  60. if( 1 )
  61. {
  62. val = rechts->getTastaturEreignis();
  63. ret = dynamic_cast<KSGSVariable *>( getThis() );
  64. }
  65. break;
  66. }
  67. if( !ret )
  68. error( 21, {}, obj );
  69. if( rechts )
  70. rechts->release();
  71. return ret;
  72. }
  73. // constant
  74. KSGSVariable *KSGSTastaturEreignisKlasse::getVariable( int id, bool zugriff ) const
  75. {
  76. KSGSVariable *ret = 0;
  77. switch( id )
  78. {
  79. case 0: // int id
  80. ret = new KSGSIntKlasse( obj, val.id );
  81. break;
  82. case 1: // int taste
  83. ret = new KSGSIntKlasse( obj, val.taste );
  84. break;
  85. case 2: // bool verarbeitet
  86. ret = new KSGSBoolKlasse( obj, val.verarbeitet );
  87. break;
  88. }
  89. if( !ret )
  90. error( 17, {}, obj );
  91. return ret;
  92. }
  93. TastaturEreignis KSGSTastaturEreignisKlasse::getVal() const
  94. {
  95. return val;
  96. }