123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #include "KSGSThread.h"
- #include "KSGSTyp.h"
- #include "../Error/Error.h"
- #include "KSGSInt.h"
- #include "KSGSBool.h"
- using namespace KSGScript;
- // Inhalt der KSGSThreadKlasse Klasse aus KSGSThreadKlasse.h
- // Konstruktor
- KSGSThreadKlasse::KSGSThreadKlasse( KSGScriptProcessor *zObj, KSGSFunktionInstanz *f )
- : KSGSKlasseInstanz( KSGS_THREAD, 0, 0, zObj )
- {
- func = f;
- }
- // Destruktor
- KSGSThreadKlasse::~KSGSThreadKlasse()
- {
- if( func )
- func->release();
- }
- // nicht constant
- void KSGSThreadKlasse::threadEnde()
- {
- if( func )
- func = (KSGSFunktionInstanz *)func->release();
- }
- KSGSVariable *KSGSThreadKlasse::startFunktion( int id, bool access, RCArray< KSGSVariable > *parameter )
- {
- switch( id )
- {
- case 0: // void pause();
- if( func )
- func->setPause( 1 );
- break;
- case 1: // void fortsetzen();
- if( func )
- func->setPause( 0 );
- break;
- case 2: // void ende();
- if( func )
- func->setEnde();
- break;
- case 3: // bool läuft();
- if( func )
- {
- parameter->release();
- return new KSGSBoolKlasse( obj, func->isExecuting() );
- }
- break;
- case 4: // int warteAufThread( int zeit )
- if( func )
- {
- int zeit = 0;
- if( parameter->getEintragAnzahl() >= 1 && parameter->z( 0 ) )
- zeit = parameter->z( 0 )->getInt();
- else
- error( 20, {}, obj );
- parameter->release();
- return new KSGSIntKlasse( obj, func->warteAufFunktion( zeit ) );
- }
- break;
- default:
- error( 19, {}, obj );
- break;
- }
- parameter->release();
- return 0;
- }
|