From 7038a1afc2e04b3d7d431fd22b322ed55b4f54df Mon Sep 17 00:00:00 2001 From: Grigory Pomadchin Date: Wed, 22 Feb 2023 23:39:52 -0500 Subject: [PATCH] Add more overloads --- .../core/src/main/scala/simple/Library.scala | 1 + .../core/src/main/scala/simple/Main.scala | 2 ++ .../core/src/test/scala/simple/Test.scala | 1 + .../sbt-jni/overloads/native/src/library.c | 25 +++++++++++++++++++ 4 files changed, 29 insertions(+) diff --git a/plugin/src/sbt-test/sbt-jni/overloads/core/src/main/scala/simple/Library.scala b/plugin/src/sbt-test/sbt-jni/overloads/core/src/main/scala/simple/Library.scala index 690f0e1..97ecb5a 100644 --- a/plugin/src/sbt-test/sbt-jni/overloads/core/src/main/scala/simple/Library.scala +++ b/plugin/src/sbt-test/sbt-jni/overloads/core/src/main/scala/simple/Library.scala @@ -8,5 +8,6 @@ object Library { @native def say(message: String): Int @native def say(message: String, i: Int): Int @native def say(message: String, i: Int, l: Long): Int + @native def say(messages: Array[String]): Int } diff --git a/plugin/src/sbt-test/sbt-jni/overloads/core/src/main/scala/simple/Main.scala b/plugin/src/sbt-test/sbt-jni/overloads/core/src/main/scala/simple/Main.scala index dfbfb46..95e128c 100644 --- a/plugin/src/sbt-test/sbt-jni/overloads/core/src/main/scala/simple/Main.scala +++ b/plugin/src/sbt-test/sbt-jni/overloads/core/src/main/scala/simple/Main.scala @@ -6,10 +6,12 @@ object Main { val result1 = Library.say("hello world") val result2 = Library.say("hello world", 1) val result3 = Library.say("hello world", 1, 2L) + val result4 = Library.say(Array("hello world1", "hello world2")) assert(result1 == 42) assert(result2 == 43) assert(result3 == 44) + assert(result4 == 45) } } diff --git a/plugin/src/sbt-test/sbt-jni/overloads/core/src/test/scala/simple/Test.scala b/plugin/src/sbt-test/sbt-jni/overloads/core/src/test/scala/simple/Test.scala index 3ad8804..d49bc3e 100644 --- a/plugin/src/sbt-test/sbt-jni/overloads/core/src/test/scala/simple/Test.scala +++ b/plugin/src/sbt-test/sbt-jni/overloads/core/src/test/scala/simple/Test.scala @@ -8,6 +8,7 @@ class SimpleSpec extends AnyFlatSpec { assert(Library.say("hello") == 42) assert(Library.say("hello", 1) == 43) assert(Library.say("hello", 1, 2L) == 44) + assert(Library.say(Array("hello world1", "hello world2")) == 45) } } diff --git a/plugin/src/sbt-test/sbt-jni/overloads/native/src/library.c b/plugin/src/sbt-test/sbt-jni/overloads/native/src/library.c index c44a51d..ccff522 100644 --- a/plugin/src/sbt-test/sbt-jni/overloads/native/src/library.c +++ b/plugin/src/sbt-test/sbt-jni/overloads/native/src/library.c @@ -15,6 +15,11 @@ JNIEXPORT jint JNICALL Java_simple_Library_00024_say__Ljava_lang_String_2 return 42; } +/* + * Class: simple_Library_00024 + * Method: say + * Signature: (Ljava/lang/String;I)I + */ JNIEXPORT jint JNICALL Java_simple_Library_00024_say__Ljava_lang_String_2I (JNIEnv *env, jobject clazz, jstring message, jint i) { const char* msg = (*env)->GetStringUTFChars(env, message, 0); @@ -24,6 +29,11 @@ JNIEXPORT jint JNICALL Java_simple_Library_00024_say__Ljava_lang_String_2I return 43; } +/* + * Class: simple_Library_00024 + * Method: say + * Signature: (Ljava/lang/String;IJ)I + */ JNIEXPORT jint JNICALL Java_simple_Library_00024_say__Ljava_lang_String_2IJ (JNIEnv *env, jobject clazz, jstring message, jint i, jlong l) { const char* msg = (*env)->GetStringUTFChars(env, message, 0); @@ -32,3 +42,18 @@ JNIEXPORT jint JNICALL Java_simple_Library_00024_say__Ljava_lang_String_2IJ (*env)->ReleaseStringUTFChars(env, message, msg); return 44; } + +/* + * Class: simple_Library_00024 + * Method: say + * Signature: ([Ljava/lang/String;)I + */ +JNIEXPORT jint JNICALL Java_simple_Library_00024_say___3Ljava_lang_String_2 +(JNIEnv *env, jobject clazz, jobjectArray messages) { + for (jint i = 0; i < (*env)->GetArrayLength(env, messages); i++) { + jstring message = (jstring) ((*env)->GetObjectArrayElement(env, messages, i)); + const char *msg = (*env)->GetStringUTFChars(env, message, 0); + fprintf(stdout, "Printing from native library: %s\n", msg); + } + return 45; +}