Skip to content

Swift5 #16

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jan 14, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
project(SwiftJNI LANGUAGES C Swift)

add_subdirectory(Sources/JNI)
26 changes: 26 additions & 0 deletions Sources/JNI/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
set(CMAKE_Swift_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/swift)

add_library(JNI SHARED
Array+JavaParameterConvertible.swift
JavaParameterConvertible+Objects.swift
JavaParameterConvertible+Primitives.swift
JavaParameterConvertible.swift
JNI.swift
JNIClassManipulation.swift
JNIExceptions.swift
JNIFields.swift
JNIMethods.swift
JNIObjects.swift
JNIRefs.swift
JNIStrings.swift
SwiftJNI.swift
)

set_target_properties(JNI PROPERTIES
INTERFACE_LINK_DIRECTORIES $<TARGET_LINKER_FILE_DIR:JNI>
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_Swift_MODULE_DIRECTORY})

target_compile_options(JNI PUBLIC
SHELL: -I ${SwiftJNI_SOURCE_DIR}/Sources/CJNI)

# TODO Add ${SwiftJNI_SOURCE_DIR}/Sources/CJNI to interface include dirs?
12 changes: 6 additions & 6 deletions Sources/JNI/JNI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -35,32 +35,32 @@ public class JNI {
}

public extension JNI {
public func GetVersion() -> JavaInt {
func GetVersion() -> JavaInt {
let env = self._env
return env.pointee.pointee.GetVersion(env)
}

public func GetJavaVM(vm: UnsafeMutablePointer<UnsafeMutablePointer<JavaVM>>) -> JavaInt {
func GetJavaVM(vm: UnsafeMutablePointer<UnsafeMutablePointer<JavaVM>>) -> JavaInt {
let env = self._env
return env.pointee.pointee.GetJavaVM(env, vm)
}

public func RegisterNatives(targetClass: JavaClass, _ methods: UnsafePointer<JNINativeMethod>, _ nMethods: JavaInt) -> JavaInt {
func RegisterNatives(targetClass: JavaClass, _ methods: UnsafePointer<JNINativeMethod>, _ nMethods: JavaInt) -> JavaInt {
let env = self._env
return env.pointee.pointee.RegisterNatives(env, targetClass, methods, nMethods)
}

public func UnregisterNatives(targetClass: JavaClass) -> JavaInt {
func UnregisterNatives(targetClass: JavaClass) -> JavaInt {
let env = self._env
return env.pointee.pointee.UnregisterNatives(env, targetClass)
}

public func MonitorEnter(obj: JavaObject) -> JavaInt {
func MonitorEnter(obj: JavaObject) -> JavaInt {
let env = self._env
return env.pointee.pointee.MonitorEnter(env, obj)
}

public func MonitorExit(obj: JavaObject) -> JavaInt {
func MonitorExit(obj: JavaObject) -> JavaInt {
let env = self._env
return env.pointee.pointee.MonitorExit(env, obj)
}
Expand Down
16 changes: 8 additions & 8 deletions Sources/JNI/JNIClassManipulation.swift
Original file line number Diff line number Diff line change
@@ -1,44 +1,44 @@
import CJNI

public extension JNI {
// public func DefineClass(name: String, _ loader: JavaObject, _ buffer: UnsafePointer<JavaByte>, _ bufferLength: jsize) -> JavaClass {
// func DefineClass(name: String, _ loader: JavaObject, _ buffer: UnsafePointer<JavaByte>, _ bufferLength: jsize) -> JavaClass {
// let env = self._env
// return env.pointee.pointee.DefineClass(env, name, loader, buffer, bufferLength)!
// }

public func FindClass(name: String) throws -> JavaClass {
func FindClass(name: String) throws -> JavaClass {
let env = self._env
let result = env.pointee.pointee.FindClass(env, name.replacingFullstopsWithSlashes())
try checkAndThrowOnJNIError()
return result!
}

public func FromReflectedMethod(method: JavaObject) -> JavaMethodID {
func FromReflectedMethod(method: JavaObject) -> JavaMethodID {
let env = self._env
return env.pointee.pointee.FromReflectedMethod(env, method)!
}

public func FromReflectedField(field: JavaObject) -> JavaFieldID {
func FromReflectedField(field: JavaObject) -> JavaFieldID {
let env = self._env
return env.pointee.pointee.FromReflectedField(env, field)!
}

public func ToReflectedMethod(targetClass: JavaClass, _ methodID: JavaMethodID, _ isStatic: JavaBoolean) -> JavaObject {
func ToReflectedMethod(targetClass: JavaClass, _ methodID: JavaMethodID, _ isStatic: JavaBoolean) -> JavaObject {
let env = self._env
return env.pointee.pointee.ToReflectedMethod(env, targetClass, methodID, isStatic)!
}

public func GetSuperclass(targetClass: JavaClass) -> JavaClass {
func GetSuperclass(targetClass: JavaClass) -> JavaClass {
let env = self._env
return env.pointee.pointee.GetSuperclass(env, targetClass)!
}

public func IsAssignableFrom(classA: JavaClass, _ classB: JavaClass) -> JavaBoolean {
func IsAssignableFrom(classA: JavaClass, _ classB: JavaClass) -> JavaBoolean {
let env = self._env
return env.pointee.pointee.IsAssignableFrom(env, classA, classB)
}

public func ToReflectedField(targetClass: JavaClass, _ fieldID: JavaFieldID, _ isStatic: JavaBoolean) -> JavaObject {
func ToReflectedField(targetClass: JavaClass, _ fieldID: JavaFieldID, _ isStatic: JavaBoolean) -> JavaObject {
let env = self._env
return env.pointee.pointee.ToReflectedField(env, targetClass, fieldID, isStatic)!
}
Expand Down
14 changes: 7 additions & 7 deletions Sources/JNI/JNIExceptions.swift
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
import CJNI

public extension JNI {
public func ExceptionCheck() -> Bool {
func ExceptionCheck() -> Bool {
let env = self._env
return env.pointee.pointee.ExceptionCheck(env) == true
}

public func ExceptionDescribe() {
func ExceptionDescribe() {
let env = self._env
env.pointee.pointee.ExceptionDescribe(env)
}

public func ExceptionClear() {
func ExceptionClear() {
let env = self._env
env.pointee.pointee.ExceptionClear(env)
}

public func ExceptionOccurred() -> JavaThrowable {
func ExceptionOccurred() -> JavaThrowable {
let env = self._env
return env.pointee.pointee.ExceptionOccurred(env)!
}

public func Throw(obj: JavaThrowable) -> JavaInt {
func Throw(obj: JavaThrowable) -> JavaInt {
let env = self._env
return env.pointee.pointee.Throw(env, obj)
}

public func ThrowNew(targetClass: JavaClass, _ message: String) -> JavaInt {
func ThrowNew(targetClass: JavaClass, _ message: String) -> JavaInt {
let env = self._env
return env.pointee.pointee.ThrowNew(env, targetClass, message)
}

public func FatalError(msg: String) {
func FatalError(msg: String) {
let env = self._env
env.pointee.pointee.FatalError(env, msg)
}
Expand Down
28 changes: 14 additions & 14 deletions Sources/JNI/JNIFields.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
import CJNI

public extension JNI {
public func GetStaticField<T: JavaInitializableFromField & JavaParameterConvertible>(_ fieldName: String, on javaClass: JavaClass) throws -> T {
func GetStaticField<T: JavaInitializableFromField & JavaParameterConvertible>(_ fieldName: String, on javaClass: JavaClass) throws -> T {
let env = self._env
let fieldID = env.pointee.pointee.GetStaticFieldID(env, javaClass, fieldName, T.asJNIParameterString)
try checkAndThrowOnJNIError()
return try T.fromStaticField(fieldID!, of: javaClass)
}

public func GetField<T: JavaInitializableFromField & JavaParameterConvertible>(_ fieldName: String, from javaObject: JavaObject) throws -> T {
func GetField<T: JavaInitializableFromField & JavaParameterConvertible>(_ fieldName: String, from javaObject: JavaObject) throws -> T {
let env = self._env
let javaClass = try GetObjectClass(obj: javaObject)
let fieldID = env.pointee.pointee.GetFieldID(env, javaClass, fieldName, T.asJNIParameterString)
Expand All @@ -28,42 +28,42 @@ public extension JNI {
public extension JNI {
// MARK: Fields

public func GetBooleanField(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaBoolean {
func GetBooleanField(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaBoolean {
let _env = self._env
let result = _env.pointee.pointee.GetBooleanField(_env, javaObject, id)
try checkAndThrowOnJNIError()
return result
}

public func GetIntField(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaInt {
func GetIntField(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaInt {
let _env = self._env
let result = _env.pointee.pointee.GetIntField(_env, javaObject, id)
try checkAndThrowOnJNIError()
return result
}

public func GetFloatField(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaFloat {
func GetFloatField(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaFloat {
let _env = self._env
let result = _env.pointee.pointee.GetFloatField(_env, javaObject, id)
try checkAndThrowOnJNIError()
return result
}

public func GetLongField(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaLong {
func GetLongField(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaLong {
let _env = self._env
let result = _env.pointee.pointee.GetLongField(_env, javaObject, id)
try checkAndThrowOnJNIError()
return result
}

public func GetDoubleField(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaDouble {
func GetDoubleField(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaDouble {
let _env = self._env
let result = _env.pointee.pointee.GetDoubleField(_env, javaObject, id)
try checkAndThrowOnJNIError()
return result
}

public func GetObjectField(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaObject {
func GetObjectField(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaObject {
let _env = self._env
let result = _env.pointee.pointee.GetObjectField(_env, javaObject, id)
try checkAndThrowOnJNIError()
Expand All @@ -72,42 +72,42 @@ public extension JNI {

// MARK: Static Fields

public func GetStaticBooleanField(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaBoolean {
func GetStaticBooleanField(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaBoolean {
let _env = self._env
let result = _env.pointee.pointee.GetStaticBooleanField(_env, javaClass, id)
try checkAndThrowOnJNIError()
return result
}

public func GetStaticIntField(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaInt {
func GetStaticIntField(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaInt {
let _env = self._env
let result = _env.pointee.pointee.GetStaticIntField(_env, javaClass, id)
try checkAndThrowOnJNIError()
return result
}

public func GetStaticFloatField(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaFloat {
func GetStaticFloatField(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaFloat {
let _env = self._env
let result = _env.pointee.pointee.GetStaticFloatField(_env, javaClass, id)
try checkAndThrowOnJNIError()
return result
}

public func GetStaticLongField(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaLong {
func GetStaticLongField(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaLong {
let _env = self._env
let result = _env.pointee.pointee.GetStaticLongField(_env, javaClass, id)
try checkAndThrowOnJNIError()
return result
}

public func GetStaticDoubleField(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaDouble {
func GetStaticDoubleField(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaDouble {
let _env = self._env
let result = _env.pointee.pointee.GetStaticDoubleField(_env, javaClass, id)
try checkAndThrowOnJNIError()
return result
}

public func GetStaticObjectField(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaObject {
func GetStaticObjectField(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaObject {
let _env = self._env
guard let result = _env.pointee.pointee.GetStaticObjectField(_env, javaClass, id) else { throw JNIError() }
try checkAndThrowOnJNIError()
Expand Down
Loading