15 env->PopLocalFrame(
nullptr);
25 template < RefDeletionMethod DeleteRef >
29 JNIEnv* env =
nullptr;
40 (env->*DeleteRef)(
Unwrap(p));
46 template <
class T,
template < RefDeletionMethod >
class Deleter = DefaultRefDeleter >
49 template <
class T,
template < RefDeletionMethod >
class Deleter =
DefaultRefDeleter >
55 using UniqueLocalRef = std::unique_ptr< T, DefaultRefDeleter<&JNIEnv::DeleteLocalRef> >;
61 JNIEnv* env =
nullptr;
85 JNIEnv* env =
nullptr;
98 env->ReleaseStringUTFChars(
Unwrap(
string), p);
109 JNIEnv* env =
nullptr;
134 JNIEnv* env =
nullptr;
160 JNIEnv* env =
nullptr;
173 env->ReleasePrimitiveArrayCritical(
Unwrap(array), p, JNI_ABORT);
185 JNIEnv* env =
nullptr;
196 env->MonitorExit(
Unwrap(p));
207 JavaVM* vm =
nullptr;
218 vm->DetachCurrentThread();
223 using UniqueEnv = std::unique_ptr< JNIEnv, JNIEnvDeleter >;
ArrayElementsDeleter(JNIEnv &e, jarray< E > &a)
Definition ownership.hpp:139
void operator()(E *p) const
Definition ownership.hpp:141
ArrayElementsDeleter()=default
Definition ownership.hpp:27
void operator()(jobject *p) const
Definition ownership.hpp:35
DefaultRefDeleter(JNIEnv &e)
Definition ownership.hpp:33
DefaultRefDeleter()=default
void operator()(JNIEnv *p) const
Definition ownership.hpp:213
JNIEnvDeleter(JavaVM &v)
Definition ownership.hpp:211
MonitorDeleter(JNIEnv &e)
Definition ownership.hpp:189
void operator()(jobject *p) const
Definition ownership.hpp:191
void operator()(void *p) const
Definition ownership.hpp:167
PrimitiveArrayCriticalDeleter()=default
PrimitiveArrayCriticalDeleter(JNIEnv &e, jarray< E > &a)
Definition ownership.hpp:165
void operator()(const char16_t *p) const
Definition ownership.hpp:68
StringCharsDeleter(JNIEnv &e, jstring &s)
Definition ownership.hpp:66
StringCharsDeleter()=default
StringCriticalDeleter(JNIEnv &e, jstring &s)
Definition ownership.hpp:114
StringCriticalDeleter()=default
void operator()(const char16_t *p) const
Definition ownership.hpp:116
StringUTFCharsDeleter()=default
StringUTFCharsDeleter(JNIEnv &e, jstring &s)
Definition ownership.hpp:90
void operator()(const char *p) const
Definition ownership.hpp:92
Definition advanced_ownership.hpp:6
std::unique_ptr< const char, StringUTFCharsDeleter > UniqueStringUTFChars
Definition ownership.hpp:103
std::unique_ptr< T, DefaultRefDeleter<&JNIEnv::DeleteLocalRef > > UniqueLocalRef
Definition ownership.hpp:55
void(JNIEnv::*)(::jobject) RefDeletionMethod
Definition ownership.hpp:23
std::unique_ptr< const char16_t, StringCriticalDeleter > UniqueStringCritical
Definition ownership.hpp:127
std::unique_ptr< E, ArrayElementsDeleter< E > > UniqueArrayElements
Definition ownership.hpp:153
std::unique_ptr< jobject, MonitorDeleter > UniqueMonitor
Definition ownership.hpp:201
std::unique_ptr< T, Deleter<&JNIEnv::DeleteWeakGlobalRef > > UniqueWeakGlobalRef
Definition ownership.hpp:50
auto Unwrap(W &&w)
Definition wrapping.hpp:22
std::unique_ptr< JNIEnv, LocalFrameDeleter > UniqueLocalFrame
Definition ownership.hpp:20
std::unique_ptr< const char16_t, StringCharsDeleter > UniqueStringChars
Definition ownership.hpp:79
std::unique_ptr< void, PrimitiveArrayCriticalDeleter< E > > UniquePrimitiveArrayCritical
Definition ownership.hpp:179
std::unique_ptr< JNIEnv, JNIEnvDeleter > UniqueEnv
Definition ownership.hpp:223
std::unique_ptr< T, Deleter<&JNIEnv::DeleteGlobalRef > > UniqueGlobalRef
Definition ownership.hpp:47
Definition ownership.hpp:10
void operator()(JNIEnv *env) const
Definition ownership.hpp:11
Definition typed_methods.hpp:7