Skip to content

Commit 327e1ff

Browse files
committed
allow passing Int64 aka JavaFloat through JNI
1 parent 0cee578 commit 327e1ff

File tree

3 files changed

+56
-0
lines changed

3 files changed

+56
-0
lines changed

Sources/JNI/JNIFields.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ public extension JNI {
4949
return result
5050
}
5151

52+
public func GetInt64Field(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaLong {
53+
let _env = self._env
54+
let result = _env.pointee.pointee.GetLongField(_env, javaObject, id)
55+
try checkAndThrowOnJNIError()
56+
return result
57+
}
58+
5259
public func GetDoubleField(of javaObject: JavaObject, id: JavaFieldID) throws -> JavaDouble {
5360
let _env = self._env
5461
let result = _env.pointee.pointee.GetDoubleField(_env, javaObject, id)
@@ -86,6 +93,13 @@ public extension JNI {
8693
return result
8794
}
8895

96+
public func GetStaticInt64Field(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaLong {
97+
let _env = self._env
98+
let result = _env.pointee.pointee.GetStaticLongField(_env, javaClass, id)
99+
try checkAndThrowOnJNIError()
100+
return result
101+
}
102+
89103
public func GetStaticDoubleField(of javaClass: JavaClass, id: JavaFieldID) throws -> JavaDouble {
90104
let _env = self._env
91105
let result = _env.pointee.pointee.GetStaticDoubleField(_env, javaClass, id)

Sources/JNI/JNIMethods.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,14 @@ extension JNI {
123123
return result
124124
}
125125

126+
public func CallInt64Method(_ method: JavaMethodID, on object: JavaObject, parameters: [JavaParameter]) throws -> JavaLong {
127+
let _env = self._env
128+
var methodArgs = parameters
129+
let result = _env.pointee.pointee.CallLongMethod(_env, object, method, &methodArgs)
130+
try checkAndThrowOnJNIError()
131+
return result
132+
}
133+
126134
public func CallDoubleMethod(_ method: JavaMethodID, on object: JavaObject, parameters: [JavaParameter]) throws -> JavaDouble {
127135
let _env = self._env
128136
var methodArgs = parameters
@@ -168,6 +176,14 @@ extension JNI {
168176
return result
169177
}
170178

179+
public func CallStaticInt64Method(_ method: JavaMethodID, on javaClass: JavaClass, parameters: [JavaParameter]) throws -> JavaLong {
180+
let _env = self._env
181+
var methodArgs = parameters
182+
let result = _env.pointee.pointee.CallStaticLongMethodA(_env, javaClass, method, &methodArgs)
183+
try checkAndThrowOnJNIError()
184+
return result
185+
}
186+
171187
public func CallStaticFloatMethod(_ method: JavaMethodID, on javaClass: JavaClass, parameters: [JavaParameter]) throws -> JavaFloat {
172188
let _env = self._env
173189
var methodArgs = parameters

Sources/JNI/JavaParameterConvertible+Primitives.swift

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,3 +107,29 @@ extension Float: JavaParameterConvertible, JavaInitializableFromMethod, JavaInit
107107
return try jni.GetFloatField(of: javaObject, id: fieldID)
108108
}
109109
}
110+
111+
// Int64 aka JavaLong
112+
113+
extension Int64: JavaParameterConvertible, JavaInitializableFromMethod, JavaInitializableFromField {
114+
public static let asJNIParameterString = "J"
115+
116+
public func toJavaParameter() -> JavaParameter {
117+
return JavaParameter(long: Int64(self))
118+
}
119+
120+
public static func fromStaticField(_ fieldID: JavaFieldID, of javaClass: JavaClass) throws -> Int64 {
121+
return try Int64(jni.GetStaticInt64Field(of: javaClass, id: fieldID))
122+
}
123+
124+
public static func fromMethod(calling methodID: JavaMethodID, on object: JavaObject, args: [JavaParameter]) throws -> Int64 {
125+
return try jni.CallInt64Method(methodID, on: object, parameters: args)
126+
}
127+
128+
public static func fromStaticMethod(calling methodID: JavaMethodID, on javaClass: JavaClass, args: [JavaParameter]) throws -> Int64 {
129+
return try jni.CallStaticInt64Method(methodID, on: javaClass, parameters: args)
130+
}
131+
132+
public static func fromField(_ fieldID: JavaFieldID, on javaObject: JavaObject) throws -> Int64 {
133+
return try jni.GetInt64Field(of: javaObject, id: fieldID)
134+
}
135+
}

0 commit comments

Comments
 (0)