Browse Source

Added more features to jni module.

Mark Sibly 8 years ago
parent
commit
6f660d75ea
3 changed files with 51 additions and 1 deletions
  1. 23 1
      modules/jni/jni.monkey2
  2. 24 0
      modules/jni/native/jni_glue.cpp
  3. 4 0
      modules/jni/native/jni_glue.h

+ 23 - 1
modules/jni/jni.monkey2

@@ -35,6 +35,14 @@ Alias jmethodID:_jmethodID Ptr
 
 
 Class JNIEnv Extends Void
 Class JNIEnv Extends Void
 
 
+	'utils
+	'
+	Method JStringToString:String( jstr:jstring ) Extension="bbJNI::JStringToString"
+	
+	Method StringToJString:jstring( str:String ) Extension="bbJNI::StringToJString"
+		
+	'classes
+	'
 	Method FindClass:jclass( name:CString )
 	Method FindClass:jclass( name:CString )
 
 
 	'fields...
 	'fields...
@@ -64,7 +72,21 @@ Class JNIEnv Extends Void
 	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"
 	Method CallStaticBooleanMethod:Bool( clazz:jclass,methodID:jmethodID,args:Variant[] ) Extension="bbJNI::CallStaticBooleanMethod"
-	
+
+	'ctors...
+	'
+	Method AllocObject:jobject( clazz:jclass )
+		
+	Method NewObject:jobject( clazz:jclass,methodID:jmethodID )
+		
+	'refs...
+	'
+	Method NewGlobalRef:jobject( obj:jobject )
+		
+	Method DeleteGlobalRef( obj:jobject )
+		
+	Method IsSameObject:Bool( obj1:jobject,obj2:jobject )
+		
 End
 End
 
 
 #End
 #End

+ 24 - 0
modules/jni/native/jni_glue.cpp

@@ -3,6 +3,30 @@
 
 
 namespace bbJNI{
 namespace bbJNI{
 
 
+	bbString JStringToString( JNIEnv *env,jstring jstr ){
+	
+		const char *cstr=env->GetStringUTFChars( jstr,0 );
+		
+		bbString str=bbString::fromCString( cstr );
+		
+		env->ReleaseStringUTFChars( jstr,cstr );
+		
+		return str;
+	}
+	
+	jstring StringToJString( JNIEnv *env,bbString str ){
+	
+		int n=str.utf8Length()+1;
+		
+		char *buf=new char[n];
+		
+		str.toCString( buf,n );
+		
+		jstring jstr=env->NewStringUTF( buf );
+		
+		return jstr;
+	}
+
 	jvalue *makeArgs( JNIEnv *env,bbArray<bbVariant> args ){
 	jvalue *makeArgs( JNIEnv *env,bbArray<bbVariant> args ){
 	
 	
 		jvalue *jargs=new jvalue[args.length()];
 		jvalue *jargs=new jvalue[args.length()];

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

@@ -12,5 +12,9 @@ namespace bbJNI{
 	void CallStaticVoidMethod( JNIEnv *env,jclass clazz,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 );
 	bbBool CallStaticBooleanMethod( JNIEnv *env,jclass clazz,jmethodID methodID,bbArray<bbVariant> args );
+	
+	bbString JStringToString( JNIEnv *env,jstring jstr );
+	
+	jstring StringToJString( JNIEnv *env,bbString str );
 
 
 }
 }