thread.h

Go to the documentation of this file.
00001 
00010 #ifndef _THREAD_H_
00011 #define _THREAD_H_
00012 
00013 #include "../jnilib.h"
00014 
00015 #ifdef __cplusplus
00016 extern "C" {
00017 #endif
00018 
00020 #define CLS_THREAD "at/fhv/sgr/threading/JNIThread"
00021 
00022 struct Thread_;
00023 
00024 struct ThreadCPP_;
00025 
00026 #ifdef __cplusplus
00027    typedef ThreadCPP_ Thread; 
00028    #define createThread createThreadCPP 
00029    #define deleteThread deleteThreadCPP 
00030 #else
00031    typedef struct Thread_ Thread; 
00032    #define createThread createThreadC 
00033    #define deleteThread deleteThreadC 
00034 #endif
00035 
00039 typedef struct ThreadData {
00040    jclass clsthread; 
00041    jobject thread; 
00042    jmethodID mstart; 
00043    jmethodID msetPriority; 
00044    jmethodID mgetPriority; 
00045    jmethodID msleep; 
00046    jmethodID myield; 
00047 } ThreadData;
00048 
00052 typedef struct Thread_ {
00053    ThreadData thread;
00054    jobject (*getObject)(Thread* thread);
00055    void (*start)(Thread* thread);
00056    void (*setPriority)(Thread* thread, jint priority);
00057    jint (*getPriority)(Thread* thread);
00058    void (*sleep)(Thread* thread, jlong milliseconds);
00059    void (*yield)(Thread* thread);
00060 } Thread_;
00061 
00065 typedef struct ThreadCPP_ {
00066    ThreadData thread;
00067    struct Thread_ *functions;
00068 
00069 #ifdef __cplusplus
00070    jobject getObject() {
00071       return functions->getObject(this);
00072    }
00073 
00074    void start() {
00075       functions->start(this);
00076    }
00077 
00078    void setPriority(jint priority) {
00079       functions->setPriority(this, priority);
00080    }
00081 
00082    jint getPriority() {
00083       return functions->getPriority(this);
00084    }
00085 
00086    void sleep(jlong milliseconds) {
00087       functions->sleep(this, milliseconds);
00088    }
00089 
00090    void yield() {
00091       functions->yield(this);
00092    }
00093 
00094 #endif
00095 } ThreadCPP_;
00096 
00097 
00098 void createThreadC(Thread_* thread, void (*func)());
00099 void createThreadCPP(ThreadCPP_* thread, void (*func)());
00100 void deleteThreadC(Thread_* thread);
00101 void deleteThreadCPP(ThreadCPP_* thread);
00102 
00103 #ifdef __cplusplus
00104 } /* extern "C" */
00105 #endif
00106 
00107 #endif /* _THREAD_H_ */
00108 
00109 /* end of file thread.h */

Generated on Sat Nov 19 14:11:12 2005 for GrubC by  doxygen 1.4.4