Skip to content

Commit bf6249d

Browse files
authored
API Enhancements: JNI.GetDirectBufferAddress() and JNIObject.getField() (#18)
1 parent 33d2997 commit bf6249d

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

Sources/JNI/JNI.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,9 @@ public extension JNI {
6464
let env = self._env
6565
return env.pointee.pointee.MonitorExit(env, obj)
6666
}
67+
68+
func GetDirectBufferAddress(buffer: JavaObject) -> UnsafeMutableRawPointer? {
69+
let env = self._env
70+
return env.pointee.pointee.GetDirectBufferAddress(env, buffer)
71+
}
6772
}

Sources/JNI/JNIFields.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,17 @@ public extension JNI {
2525
try checkAndThrowOnJNIError()
2626
return try T.fromField(fieldID!, on: javaObject)
2727
}
28+
29+
func GetField(_ fieldName: String, fieldJavaClassName: String, from javaObject: JavaObject) throws -> JavaObject {
30+
let env = self._env
31+
let javaClass = try GetObjectClass(obj: javaObject)
32+
defer {
33+
jni.DeleteLocalRef(javaClass)
34+
}
35+
let fieldID = env.pointee.pointee.GetFieldID(env, javaClass, fieldName, "L\(fieldJavaClassName);")
36+
try checkAndThrowOnJNIError()
37+
return try JavaObject.fromField(fieldID!, on: javaObject)
38+
}
2839
}
2940

3041

Sources/JNI/JNIObjects.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ open class JNIObject {
8787
return try jni.GetField(fieldName, from: self.instance)
8888
}
8989

90+
public func getField(_ fieldName: String, fieldJavaClassName: String) throws -> JavaObject {
91+
return try jni.GetField(fieldName, fieldJavaClassName: fieldJavaClassName, from: self.instance)
92+
}
93+
9094
public static func callStatic(methodName: String, arguments: [JavaParameterConvertible] = []) throws {
9195
try jni.callStatic(methodName, on: self.javaClass, arguments: arguments)
9296
}

0 commit comments

Comments
 (0)