diff options
author | Jakob Odersky <jakob@odersky.com> | 2016-05-02 05:19:07 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2016-05-11 11:17:09 -0700 |
commit | 791cb363b77332e3abdf4039102dfcdb863ce6c3 (patch) | |
tree | 09ff5d807a1407abedade57b692204ceac3f3280 /plugin/src/sbt-test/sbt-jni/multiclasses/core | |
parent | 49563ee13599b0cb1add27b24446677a13b1f563 (diff) | |
download | sbt-jni-791cb363b77332e3abdf4039102dfcdb863ce6c3.tar.gz sbt-jni-791cb363b77332e3abdf4039102dfcdb863ce6c3.tar.bz2 sbt-jni-791cb363b77332e3abdf4039102dfcdb863ce6c3.zip |
Use macro annotation to load native library
This also removes the need for third projects to depend on a "loader library".
Diffstat (limited to 'plugin/src/sbt-test/sbt-jni/multiclasses/core')
3 files changed, 60 insertions, 0 deletions
diff --git a/plugin/src/sbt-test/sbt-jni/multiclasses/core/src/main/scala/multiclasses/Adder.scala b/plugin/src/sbt-test/sbt-jni/multiclasses/core/src/main/scala/multiclasses/Adder.scala new file mode 100644 index 0000000..91d5683 --- /dev/null +++ b/plugin/src/sbt-test/sbt-jni/multiclasses/core/src/main/scala/multiclasses/Adder.scala @@ -0,0 +1,18 @@ +package multiclasses + +import ch.jodersky.jni.nativeLoader + +@nativeLoader("demo0") +class Adder(base0: Int) { + + final private val base = base0 + + @native def plus(term: Int): Int + +} + +object Adder { + + @native def sum(term1: Int, term2: Int): Int + +} diff --git a/plugin/src/sbt-test/sbt-jni/multiclasses/core/src/main/scala/multiclasses/Main.scala b/plugin/src/sbt-test/sbt-jni/multiclasses/core/src/main/scala/multiclasses/Main.scala new file mode 100644 index 0000000..6734ae9 --- /dev/null +++ b/plugin/src/sbt-test/sbt-jni/multiclasses/core/src/main/scala/multiclasses/Main.scala @@ -0,0 +1,30 @@ +package multiclasses + +object Main { + + def addition(): Unit = { + val zero = new Adder(0) + val one = new Adder(1) + assert((zero plus 1) == 1) + assert((one plus 1) == 2) + assert(Adder.sum(0,1) == 1) + } + + def multiplication(): Unit = { + val zero = new Multiplier { + override def base = 0 + } + + val one = new Multiplier { + override def base = 1 + } + assert((zero times 1) == 0) + assert((one times 1) == 1) + } + + def main(args: Array[String]): Unit = { + addition() + multiplication() + } + +} diff --git a/plugin/src/sbt-test/sbt-jni/multiclasses/core/src/main/scala/multiclasses/Multiplier.scala b/plugin/src/sbt-test/sbt-jni/multiclasses/core/src/main/scala/multiclasses/Multiplier.scala new file mode 100644 index 0000000..19cd25f --- /dev/null +++ b/plugin/src/sbt-test/sbt-jni/multiclasses/core/src/main/scala/multiclasses/Multiplier.scala @@ -0,0 +1,12 @@ +package multiclasses + +import ch.jodersky.jni.nativeLoader + +@nativeLoader("multiplier1") +abstract class Multiplier { + + def base: Int = 1 + + @native def times(factor: Int): Int + +} |