diff options
-rw-r--r-- | macros/src/main/scala/ch/jodersky/jni/annotations.scala | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/macros/src/main/scala/ch/jodersky/jni/annotations.scala b/macros/src/main/scala/ch/jodersky/jni/annotations.scala index c7a6555..ffc262e 100644 --- a/macros/src/main/scala/ch/jodersky/jni/annotations.scala +++ b/macros/src/main/scala/ch/jodersky/jni/annotations.scala @@ -37,8 +37,8 @@ object nativeLoaderMacro { //q"$mods object $name extends ..$parents {$self => ..$body }" :: Nil => case ModuleDef(mods, name, Template(parents, self, body)) :: Nil => - val loadPackagedDef: DefDef = q""" - private def loadPackaged(): Unit = { + val extra = q"""{ + def loadPackaged(): Unit = { import java.io.File import java.nio.file.{Files, Path} @@ -65,22 +65,17 @@ object nativeLoaderMacro { System.load(extractedPath.toAbsolutePath.toString) } - """ - val loadDef: DefDef = q""" - private def load(): Unit = try { + + def load(): Unit = try { System.loadLibrary($nativeLibrary) } catch { case ex: UnsatisfiedLinkError => loadPackaged() } - """ - val extraBody = q""" - $loadPackagedDef - $loadDef load() - """ + }""" - ModuleDef(mods, name, Template(parents, self, body :+ extraBody)) :: Nil + ModuleDef(mods, name, Template(parents, self, body :+ extra)) :: Nil case _ => c.abort(c.enclosingPosition, "nativeLoader can only be annotated to classes and singleton objects") |