@@ -4,23 +4,23 @@ convert(::Type{JObject}, str::AbstractString) = convert(JObject, JString(str))
4
4
# Cast java object from S to T . Needed for polymorphic calls
5
5
function convert (:: Type{JavaObject{T}} , obj:: JavaObject{S} ) where {T,S}
6
6
if isConvertible (T, S) # Safe static cast
7
- ptr = JNI. NewLocalRef (penv, obj. ptr)
7
+ ptr = JNI. NewLocalRef (obj. ptr)
8
8
ptr === C_NULL && geterror ()
9
9
return JavaObject {T} (ptr)
10
10
end
11
11
isnull (obj) && throw (ArgumentError (" Cannot convert NULL" ))
12
- realClass = JNI. GetObjectClass (penv, obj. ptr)
12
+ realClass = JNI. GetObjectClass (obj. ptr)
13
13
if isConvertible (T, realClass) # dynamic cast
14
- ptr = JNI. NewLocalRef (penv, obj. ptr)
14
+ ptr = JNI. NewLocalRef (obj. ptr)
15
15
ptr === C_NULL && geterror ()
16
16
return JavaObject {T} (ptr)
17
17
end
18
18
throw (JavaCallError (" Cannot cast java object from $S to $T " ))
19
19
end
20
20
21
21
# Is java type convertible from S to T.
22
- isConvertible (T, S) = JNI. IsAssignableFrom (penv, metaclass (S). ptr, metaclass (T). ptr) == JNI_TRUE
23
- isConvertible (T, S:: Ptr{Nothing} ) = JNI. IsAssignableFrom (penv, S, metaclass (T). ptr) == JNI_TRUE
22
+ isConvertible (T, S) = JNI. IsAssignableFrom (metaclass (S). ptr, metaclass (T). ptr) == JNI_TRUE
23
+ isConvertible (T, S:: Ptr{Nothing} ) = JNI. IsAssignableFrom (S, metaclass (T). ptr) == JNI_TRUE
24
24
25
25
unsafe_convert (:: Type{Ptr{Nothing}} , cls:: JavaMetaClass ) = cls. ptr
26
26
@@ -71,8 +71,8 @@ for (x, y, z) in [(:jboolean, :(JNI.NewBooleanArray), :(JNI.SetBooleanArrayRegio
71
71
function convert_arg (argtype:: Type{Array{$x,1}} , arg)
72
72
carg = convert (argtype, arg)
73
73
sz= length (carg)
74
- arrayptr = $ y (penv, sz)
75
- $ z (penv, arrayptr, 0 , sz, carg)
74
+ arrayptr = $ y (sz)
75
+ $ z (arrayptr, 0 , sz, carg)
76
76
return carg, arrayptr
77
77
end
78
78
end
@@ -83,9 +83,9 @@ function convert_arg(argtype::Type{Array{T,1}}, arg) where T<:JavaObject
83
83
carg = convert (argtype, arg)
84
84
sz = length (carg)
85
85
init = carg[1 ]
86
- arrayptr = JNI. NewObjectArray (penv, sz, metaclass (T). ptr, init. ptr)
86
+ arrayptr = JNI. NewObjectArray (sz, metaclass (T). ptr, init. ptr)
87
87
for i= 2 : sz
88
- JNI. SetObjectArrayElement (penv, arrayptr, i- 1 , carg[i]. ptr)
88
+ JNI. SetObjectArrayElement (arrayptr, i- 1 , carg[i]. ptr)
89
89
end
90
90
return carg, arrayptr
91
91
end
@@ -104,24 +104,24 @@ for (x, y, z) in [(:jboolean, :(JNI.GetBooleanArrayElements), :(JNI.ReleaseBoole
104
104
(:jdouble , :(JNI. GetDoubleArrayElements), :(JNI. ReleaseDoubleArrayElements)) ]
105
105
m = quote
106
106
function convert_result (rettype:: Type{Array{$(x),1}} , result)
107
- sz = JNI. GetArrayLength (penv, result)
108
- arr = $ y (penv, result, Ptr {jboolean} (C_NULL ))
107
+ sz = JNI. GetArrayLength (result)
108
+ arr = $ y (result, Ptr {jboolean} (C_NULL ))
109
109
jl_arr:: Array = unsafe_wrap (Array, arr, Int (sz))
110
110
jl_arr = deepcopy (jl_arr)
111
- $ z (penv, result, arr, Int32 (0 ))
111
+ $ z (result, arr, Int32 (0 ))
112
112
return jl_arr
113
113
end
114
114
end
115
115
eval (m)
116
116
end
117
117
118
118
function convert_result (rettype:: Type{Array{JavaObject{T},1}} , result) where T
119
- sz = JNI. GetArrayLength (penv, result)
119
+ sz = JNI. GetArrayLength (result)
120
120
121
121
ret = Array {JavaObject{T}} (undef, sz)
122
122
123
123
for i= 1 : sz
124
- a= JNI. GetObjectArrayElement (penv, result, i- 1 )
124
+ a= JNI. GetObjectArrayElement (result, i- 1 )
125
125
ret[i] = JavaObject {T} (a)
126
126
end
127
127
return ret
@@ -130,33 +130,33 @@ end
130
130
131
131
# covers return types like Vector{Vector{T}}
132
132
function convert_result (rettype:: Type{Array{T,1}} , result) where T
133
- sz = JNI. GetArrayLength (penv, result)
133
+ sz = JNI. GetArrayLength (result)
134
134
135
135
ret = Array {T} (undef, sz)
136
136
137
137
for i= 1 : sz
138
- a= JNI. GetObjectArrayElement (penv, result, i- 1 )
138
+ a= JNI. GetObjectArrayElement (result, i- 1 )
139
139
ret[i] = convert_result (T, a)
140
140
end
141
141
return ret
142
142
end
143
143
144
144
145
145
function convert_result (rettype:: Type{Array{JavaObject{T},2}} , result) where T
146
- sz = JNI. GetArrayLength (penv, result)
146
+ sz = JNI. GetArrayLength (result)
147
147
if sz == 0
148
148
return Array {T} (undef, 0 ,0 )
149
149
end
150
- a_1 = JNI. GetObjectArrayElement (penv, result, 0 )
151
- sz_1 = JNI. GetArrayLength (penv, a_1)
150
+ a_1 = JNI. GetObjectArrayElement (result, 0 )
151
+ sz_1 = JNI. GetArrayLength (a_1)
152
152
ret = Array {JavaObject{T}} (undef, sz, sz_1)
153
153
for i= 1 : sz
154
- a = JNI. GetObjectArrayElement (penv, result, i- 1 )
154
+ a = JNI. GetObjectArrayElement (result, i- 1 )
155
155
# check that size of the current subarray is the same as for the first one
156
- sz_a = JNI. GetArrayLength (penv, a)
156
+ sz_a = JNI. GetArrayLength (a)
157
157
@assert (sz_a == sz_1, " Size of $(i) th subrarray is $sz_a , but size of the 1st subarray was $sz_1 " )
158
158
for j= 1 : sz_1
159
- x = JNI. GetObjectArrayElement (penv, a, j- 1 )
159
+ x = JNI. GetObjectArrayElement (a, j- 1 )
160
160
ret[i, j] = JavaObject {T} (x)
161
161
end
162
162
end
@@ -166,17 +166,17 @@ end
166
166
167
167
# matrices of primitive types and other arrays
168
168
function convert_result (rettype:: Type{Array{T,2}} , result) where T
169
- sz = JNI. GetArrayLength (penv, result)
169
+ sz = JNI. GetArrayLength (result)
170
170
if sz == 0
171
171
return Array {T} (undef, 0 ,0 )
172
172
end
173
- a_1 = JNI. GetObjectArrayElement (penv, result, 0 )
174
- sz_1 = JNI. GetArrayLength (penv, a_1)
173
+ a_1 = JNI. GetObjectArrayElement (result, 0 )
174
+ sz_1 = JNI. GetArrayLength (a_1)
175
175
ret = Array {T} (undef, sz, sz_1)
176
176
for i= 1 : sz
177
- a = JNI. GetObjectArrayElement (penv, result, i- 1 )
177
+ a = JNI. GetObjectArrayElement (result, i- 1 )
178
178
# check that size of the current subarray is the same as for the first one
179
- sz_a = JNI. GetArrayLength (penv, a)
179
+ sz_a = JNI. GetArrayLength (a)
180
180
@assert (sz_a == sz_1, " Size of $(i) th subrarray is $sz_a , but size of the 1st subarray was $sz_1 " )
181
181
ret[i, :] = convert_result (Vector{T}, a)
182
182
end
@@ -252,10 +252,10 @@ end
252
252
function unsafe_string (jstr:: JString ) # jstr must be a jstring obtained via a JNI call
253
253
if isnull (jstr); return " " ; end # Return empty string to keep type stability. But this is questionable
254
254
pIsCopy = Array {jboolean} (undef, 1 )
255
- # buf::Ptr{UInt8} = JNI.GetStringUTFChars(penv, jstr.ptr, pIsCopy)
256
- buf = JNI. GetStringUTFChars (penv, jstr. ptr, pIsCopy)
255
+ # buf::Ptr{UInt8} = JNI.GetStringUTFChars(jstr.ptr, pIsCopy)
256
+ buf = JNI. GetStringUTFChars (jstr. ptr, pIsCopy)
257
257
s = unsafe_string (buf)
258
- JNI. ReleaseStringUTFChars (penv, jstr. ptr, buf)
258
+ JNI. ReleaseStringUTFChars (jstr. ptr, buf)
259
259
return s
260
260
end
261
261
@@ -269,11 +269,11 @@ for (x, y, z) in [(:jboolean, :(JNI.GetBooleanArrayElements), :(JNI.ReleaseBoole
269
269
(:jdouble , :(JNI. GetDoubleArrayElements), :(JNI. ReleaseDoubleArrayElements)) ]
270
270
m = quote
271
271
function convert (:: Type{Array{$(x),1}} , obj:: JObject )
272
- sz = JNI. GetArrayLength (penv, obj. ptr)
273
- arr = $ y (penv, obj. ptr, Ptr {jboolean} (C_NULL ))
272
+ sz = JNI. GetArrayLength (obj. ptr)
273
+ arr = $ y (obj. ptr, Ptr {jboolean} (C_NULL ))
274
274
jl_arr:: Array = unsafe_wrap (Array, arr, Int (sz))
275
275
jl_arr = deepcopy (jl_arr)
276
- $ z (penv, obj. ptr, arr, Int32 (0 ))
276
+ $ z (obj. ptr, arr, Int32 (0 ))
277
277
return jl_arr
278
278
end
279
279
end
@@ -282,10 +282,10 @@ end
282
282
283
283
284
284
function convert (:: Type{Array{T, 1}} , obj:: JObject ) where T
285
- sz = JNI. GetArrayLength (penv, obj. ptr)
285
+ sz = JNI. GetArrayLength (obj. ptr)
286
286
ret = Array {T} (undef, sz)
287
287
for i= 1 : sz
288
- ptr = JNI. GetObjectArrayElement (penv, obj. ptr, i- 1 )
288
+ ptr = JNI. GetObjectArrayElement (obj. ptr, i- 1 )
289
289
ret[i] = convert (T, JObject (ptr))
290
290
end
291
291
return ret
0 commit comments