#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; }