Browse Source

WIP jni module.

Mark Sibly 8 years ago
parent
commit
7ad42301cc
3 changed files with 47 additions and 1 deletions
  1. 3 0
      modules/jni/jni.monkey2
  2. 38 1
      modules/jni/native/jni_glue.cpp
  3. 6 0
      modules/jni/native/jni_glue.h

+ 3 - 0
modules/jni/jni.monkey2

@@ -55,12 +55,15 @@ Class JNIEnv Extends Void
 
 
 	Method CallVoidMethod:Void( obj:jobject,methodID:jmethodID,args:Variant[] ) Extension="bbJNI::CallVoidMethod"
 	Method CallVoidMethod:Void( obj:jobject,methodID:jmethodID,args:Variant[] ) Extension="bbJNI::CallVoidMethod"
 	
 	
+	Method CallBooleanMethod:Bool( obj:jobject,methodID:jmethodID,args:Variant[] ) Extension="bbJNI::CallBooleanMethod"
+	
 	'static methods...
 	'static methods...
 	'
 	'
 	Method GetStaticMethodID:jmethodID( clazz:jclass,name:CString,sig:CString )
 	Method GetStaticMethodID:jmethodID( clazz:jclass,name:CString,sig:CString )
 	
 	
 	Method CallStaticVoidMethod:Void( clazz:jclass,methodID:jmethodID,args:Variant[] ) Extension="bbJNI::CallStaticVoidMethod"
 	Method CallStaticVoidMethod:Void( clazz:jclass,methodID:jmethodID,args:Variant[] ) Extension="bbJNI::CallStaticVoidMethod"
 	
 	
+	Method CallStaticBooleanMethod:Bool( clazz:jclass,methodID:jmethodID,args:Variant[] ) Extension="bbJNI::CallStaticBooleanMethod"
 	
 	
 End
 End
 
 

+ 38 - 1
modules/jni/native/jni_glue.cpp

@@ -17,7 +17,13 @@ namespace bbJNI{
 			
 			
 			bbTypeInfo *type=arg.getType();
 			bbTypeInfo *type=arg.getType();
 			
 			
-			if( type==bbGetType<bbInt>() ){
+			if( type==bbGetType<bbBool>() ){
+			
+				bbBool val=arg.get<bbBool>();
+				
+				jarg->z=val;
+				
+			}else if( type==bbGetType<bbInt>() ){
 			
 			
 				bbInt val=arg.get<bbInt>();
 				bbInt val=arg.get<bbInt>();
 				
 				
@@ -57,5 +63,36 @@ namespace bbJNI{
 		delete[] jargs;
 		delete[] jargs;
 	}
 	}
 
 
+	bbBool CallBooleanMethod( JNIEnv *env,jobject obj,jmethodID methodID,bbArray<bbVariant> args ){
+		
+		jvalue *jargs=makeArgs( env,args );
+		
+		bbBool r=env->CallBooleanMethodA( obj,methodID,jargs );
+		
+		delete[] jargs;
+		
+		return r;
+	}
+
+	void CallStaticVoidMethod( JNIEnv *env,jclass clazz,jmethodID methodID,bbArray<bbVariant> args ){
+		
+		jvalue *jargs=makeArgs( env,args );
+		
+		env->CallStaticVoidMethodA( clazz,methodID,jargs );
+		
+		delete[] jargs;
+	}
+
+	bbBool CallStaticBooleanMethod( JNIEnv *env,jclass clazz,jmethodID methodID,bbArray<bbVariant> args ){
+		
+		jvalue *jargs=makeArgs( env,args );
+		
+		bbBool r=env->CallStaticBooleanMethodA( clazz,methodID,jargs );
+		
+		delete[] jargs;
+		
+		return r;
+	}
+
 }
 }
 
 

+ 6 - 0
modules/jni/native/jni_glue.h

@@ -6,5 +6,11 @@
 namespace bbJNI{
 namespace bbJNI{
 
 
 	void CallVoidMethod( JNIEnv *env,jobject obj,jmethodID methodID,bbArray<bbVariant> args );
 	void CallVoidMethod( JNIEnv *env,jobject obj,jmethodID methodID,bbArray<bbVariant> args );
+	
+	bbBool CallBooleanMethod( JNIEnv *env,jobject obj,jmethodID methodID,bbArray<bbVariant> args );
+
+	void CallStaticVoidMethod( JNIEnv *env,jclass clazz,jmethodID methodID,bbArray<bbVariant> args );
+	
+	bbBool CallStaticBooleanMethod( JNIEnv *env,jclass clazz,jmethodID methodID,bbArray<bbVariant> args );
 
 
 }
 }