X-Git-Url: http://nitlanguage.org diff --git a/src/ffi/java.nit b/src/ffi/java.nit index d5852f6..eca32ac 100644 --- a/src/ffi/java.nit +++ b/src/ffi/java.nit @@ -243,7 +243,6 @@ redef class MModule private fun insert_compiler_options do cflags.add_one("", "-I $(JAVA_HOME)/include/ -I $(JAVA_HOME)/include/linux/") - ldflags.add_one("", "-L $(JNI_LIB_PATH) -ljvm") end # Name of the generated Java class where to store all implementation methods of this module @@ -363,7 +362,7 @@ class JavaFile super ExternFile redef fun makefile_rule_name do return "{filename.basename(".java")}.class" - redef fun makefile_rule_content do return "javac {filename.basename("")} -d ." + redef fun makefile_rule_content do return "javac {filename.basename} -d ." redef fun add_to_jar do return true end @@ -458,7 +457,7 @@ redef class MType # JNI type name (in C) # # So this is a C type, usually defined in `jni.h` - private fun jni_type: String do return "jint" + private fun jni_type: String do return "long" # JNI short type name (for signatures) # @@ -484,6 +483,11 @@ redef class MClassType if mclass.name == "Int" then return "long" if mclass.name == "Float" then return "double" if mclass.name == "Byte" then return "byte" + if mclass.name == "Int8" then return "byte" + if mclass.name == "Int16" then return "short" + if mclass.name == "UInt16" then return "short" + if mclass.name == "Int32" then return "int" + if mclass.name == "UInt32" then return "int" return super end @@ -496,6 +500,11 @@ redef class MClassType if mclass.name == "Int" then return "jlong" if mclass.name == "Float" then return "jdouble" if mclass.name == "Byte" then return "jbyte" + if mclass.name == "Int8" then return "jbyte" + if mclass.name == "Int16" then return "jshort" + if mclass.name == "UInt16" then return "jshort" + if mclass.name == "Int32" then return "jint" + if mclass.name == "UInt32" then return "jint" return super end @@ -556,6 +565,11 @@ redef class MClassType if mclass.name == "Int" then return "J" if mclass.name == "Float" then return "D" if mclass.name == "Byte" then return "B" + if mclass.name == "Int8" then return "B" + if mclass.name == "Int16" then return "S" + if mclass.name == "UInt16" then return "S" + if mclass.name == "Int32" then return "I" + if mclass.name == "UInt32" then return "I" return super end @@ -569,6 +583,11 @@ redef class MClassType if mclass.name == "Int" then return "Long" if mclass.name == "Float" then return "Double" if mclass.name == "Byte" then return "Byte" + if mclass.name == "Int8" then return "Byte" + if mclass.name == "Int16" then return "Short" + if mclass.name == "UInt16" then return "Short" + if mclass.name == "Int32" then return "Int" + if mclass.name == "UInt32" then return "Int" return super end end @@ -607,7 +626,7 @@ redef class MMethod else format.add "V" end - return format.join("") + return format.join end # Similar to `build_c_signature` but adapted to create the signature expected by JNI for C functions