From: Luke H. <lh...@us...> - 2002-11-30 00:20:02
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/common/callbacks In directory sc8-pr-cvs1:/tmp/cvs-serv26599/common/callbacks Modified Files: CallbackManager.cpp CallbackManager.h GLUQuadricCallbacks.cpp GLUQuadricCallbacks.h JavaMethod.cpp JavaMethod.h README.txt Added Files: Makefile.am Log Message: the callback classes now compile and link with the library. However it still is not usable =/ --- NEW FILE: Makefile.am --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/callbacks/Makefile.am noinst_LTLIBRARIES = libcallbacks.la libcallbacks_la_SOURCES = $(COMMON) $(CALLBACKS) libcallbacks_la_CPPFLAGS = -D_DEBUG INCLUDES = -I../ COMMON = \ CallbackContainer.cpp \ CallbackContainer.h \ CallbackManager.cpp \ CallbackManager.h \ JavaMethod.cpp \ JavaMethod.h CALLBACKS = \ GLUQuadricCallbacks.cpp \ GLUQuadricCallbacks.h Index: CallbackManager.cpp CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/callbacks/CallbackManager.cpp =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/common/callbacks/CallbackManager.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- CallbackManager.cpp 29 Nov 2002 06:06:16 -0000 1.1 +++ CallbackManager.cpp 30 Nov 2002 00:19:59 -0000 1.2 @@ -19,5 +19,28 @@ // CallbackManager::~CallbackManager() { + data.clear(); +} + +bool CallbackManager::add(jint key, CallbackContainer *value) +{ + data[key] = value; } +bool CallbackManager::del(jint key) +{ + if (data.find(key) != data.end()) { + delete data[key]; + data.erase(key); + } +} + +CallbackContainer * CallbackManager::get(jint key) +{ + if (data.find(key) == data.end()) { + return NULL; + } + else { + return data[key]; + } +} Index: CallbackManager.h CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/callbacks/CallbackManager.h =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/common/callbacks/CallbackManager.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- CallbackManager.h 29 Nov 2002 06:06:16 -0000 1.1 +++ CallbackManager.h 30 Nov 2002 00:19:59 -0000 1.2 @@ -10,18 +10,20 @@ #include <map> #include <jni.h> +#include "CallbackContainer.h" + class CallbackManager { public: CallbackManager(); ~CallbackManager(); - static bool add(jint, CallbackContainer); - static bool del(jint); - static CallbackContainer get(jint); + bool add(jint, CallbackContainer*); + bool del(jint); + CallbackContainer* get(jint); protected: private: - static map<jint, CallbackContainer> data; + std::map<jint, CallbackContainer*> data; }; #endif /* _CallbackManager_H */ Index: GLUQuadricCallbacks.cpp CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/callbacks/GLUQuadricCallbacks.cpp =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/common/callbacks/GLUQuadricCallbacks.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- GLUQuadricCallbacks.cpp 29 Nov 2002 06:06:16 -0000 1.1 +++ GLUQuadricCallbacks.cpp 30 Nov 2002 00:19:59 -0000 1.2 @@ -5,7 +5,7 @@ // Created on November 28, 2002, 8:21 PM // -#include "GLUQuadricCallback.h" +#include "GLUQuadricCallbacks.h" // // Constructor @@ -25,29 +25,35 @@ if (errorCallback != NULL) { delete errorCallback; } - delete quad; } +typedef void (GLAPIENTRY *callback_t)(); + + +/* having a couple issues. I cant use a pointer to a method as a function pointer? */ + void GLUQuadricCallbacks::add(JavaMethod *cb, GLenum type) { /* If we are already refering to a callback, get rid of it */ - if (gluError != NULL) { + if (errorCallback != NULL) { delete errorCallback; } + switch (type) { - case GLU_ERROR; + case GLU_ERROR: errorCallback = cb; - gluQuadricCallback(quad, type, *gluError) +// gluQuadricCallback(quadric, type, (callback_t) this->gluError); break; - }; + } } -void GLUQuadricCallbacks::gluError(GLenum type) { - jclass cls = (*errorCallback->env)->GetObjectClass(errorCallback->env, errorCallback.obj); - jmethodID mid = (*errorCallback->env)->getMethodID(errorCallback->env, cls, errorCallback.method.c_str()); - if (mid == 0) { - return; - } - /* Hopefully this will end up calling the java method for handling GLU_ERROR for this quad */ - (*errorCallback->env)->CallVoidMethod(errorCallback->env, errorCallback.obj, mid, (jint) type); -} \ No newline at end of file +void CALLBACK GLUQuadricCallbacks::gluError(GLenum type) { + +// jclass cls = (*errorCallback->env)->GetObjectClass(errorCallback->env, errorCallback->obj); +// jmethodID mid = (*errorCallback->env)->getMethodID(errorCallback->env, cls, errorCallback->method.c_str()); +// if (mid == 0) { +// return; +// } +// /* Hopefully this will end up calling the java method for handling GLU_ERROR for this quad */ +// (*errorCallback->env)->CallVoidMethod(errorCallback->env, errorCallback->obj, mid, (jint) type); +} Index: GLUQuadricCallbacks.h CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/callbacks/GLUQuadricCallbacks.h =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/common/callbacks/GLUQuadricCallbacks.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- GLUQuadricCallbacks.h 29 Nov 2002 06:06:16 -0000 1.1 +++ GLUQuadricCallbacks.h 30 Nov 2002 00:19:59 -0000 1.2 @@ -1,28 +1,39 @@ // -// File: GLUQuadricCallback.h +// File: GLUQuadricCallbacks.h // Author: alterself // // Created on November 28, 2002, 8:21 PM // -#ifndef _GLUQuadricCallback_H -#define _GLUQuadricCallback_H +#ifndef _GLUQuadricCallbacks_H +#define _GLUQuadricCallbacks_H #include "extgl.h" +#include <GL/glu.h> +#include <stdlib.h> +#include <stdio.h> -class GLUQuadricCallbacks : public Callback { +#include "JavaMethod.h" +#include "CallbackContainer.h" + +#ifndef CALLBACK +#define CALLBACK +#endif + + +class GLUQuadricCallbacks : public CallbackContainer { public: - GLUQuadricCallback(jint quad); - ~GLUQuadricCallback(); + GLUQuadricCallbacks(GLUquadricObj *quad); + ~GLUQuadricCallbacks(); void add(JavaMethod*, GLenum); - void gluError(GLenum); + void CALLBACK gluError(GLenum); protected: private: - GLUquadricObj *quadric; - JavaMethod *errorCallback; + JavaMethod* errorCallback; + GLUquadricObj* quadric; }; -#endif /* _GLUQuadricCallback_H */ +#endif /* _GLUQuadricCallbacks_H */ Index: JavaMethod.cpp CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/callbacks/JavaMethod.cpp =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/common/callbacks/JavaMethod.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- JavaMethod.cpp 29 Nov 2002 06:06:16 -0000 1.1 +++ JavaMethod.cpp 30 Nov 2002 00:19:59 -0000 1.2 @@ -5,12 +5,12 @@ // Created on November 28, 2002, 3:37 PM // -#include "Callback.h" +#include "JavaMethod.h" // // Constructor /// -JavaMethod::JavaMethod(JNIEnv *newEnv, jobject newObj, string newMethod) +JavaMethod::JavaMethod(JNIEnv *newEnv, jobject newObj, std::string newMethod) { env = newEnv; obj = newObj; @@ -22,6 +22,5 @@ // JavaMethod::~JavaMethod() { - delete(method); } Index: JavaMethod.h CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/callbacks/JavaMethod.h =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/common/callbacks/JavaMethod.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- JavaMethod.h 29 Nov 2002 06:06:16 -0000 1.1 +++ JavaMethod.h 30 Nov 2002 00:19:59 -0000 1.2 @@ -8,20 +8,19 @@ #ifndef _JavaMethod_H #define _JavaMethod_H #include <string> - +#include <jni.h> class JavaMethod { public: - JavaMethod(JNIEnv *, jobject, string); + JavaMethod(JNIEnv *, jobject, std::string); ~JavaMethod(); - + + JNIEnv* env; + jobject obj; + std::string method; protected: private: - JNIEnv* env; - jobject obj; - string method; - }; #endif /* _JavaMethod_H */ Index: README.txt CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/callbacks/README.txt =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/common/callbacks/README.txt,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- README.txt 29 Nov 2002 09:19:39 -0000 1.6 +++ README.txt 30 Nov 2002 00:19:59 -0000 1.7 @@ -1,7 +1,5 @@ This is just the start of my callback implementation. -As it is, it wont compile =) - Basically... we have 3 main classes... CallbackManager, which maintains a mapping of objects to callback containers |