@@ -69,6 +69,11 @@ namespace jni_utils {
69
69
env_->DeleteLocalRef (ref_);
70
70
}
71
71
}
72
+ JavaLocalRef (JavaLocalRef&& other) : env_(other.env_), ref_(other.ref_) {
73
+ other.ref_ = nullptr ;
74
+ }
75
+
76
+ JavaLocalRef (const JavaLocalRef&) = delete ;
72
77
73
78
inline JNIType get () const {
74
79
return ref_;
@@ -162,6 +167,8 @@ namespace jni_utils {
162
167
data = std::span<char >(const_cast <char *>(c_str), env->GetStringUTFLength (s));
163
168
}
164
169
170
+ JavaStringRef (const JavaStringRef &) = delete ;
171
+
165
172
~JavaStringRef () {
166
173
env->ReleaseStringUTFChars (s, data.data ());
167
174
}
@@ -195,8 +202,18 @@ namespace jni_utils {
195
202
data = std::span<unsigned char >(reinterpret_cast <unsigned char *>(env->GetByteArrayElements (byte_array, nullptr )), length);
196
203
}
197
204
205
+ JavaByteArrayRef (const JavaByteArrayRef &) = delete ;
206
+
207
+ JavaByteArrayRef (JavaByteArrayRef&& other) : env(other.env), byte_array(other.byte_array), data(other.data) {
208
+ other.byte_array = nullptr ;
209
+ other.data = {};
210
+ }
211
+
198
212
~JavaByteArrayRef () {
199
- env->ReleaseByteArrayElements (byte_array, reinterpret_cast <jbyte *>(data.data ()), 0 );
213
+ if (byte_array) {
214
+ env->ReleaseByteArrayElements (byte_array,
215
+ reinterpret_cast <jbyte *>(data.data ()), 0 );
216
+ }
200
217
}
201
218
202
219
// Get the data as a span. Only valid during the lifetime of this object.
0 commit comments