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 >;
Definition: ownership.hpp:132
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
Definition: ownership.hpp:205
void operator()(JNIEnv *p) const
Definition: ownership.hpp:213
JNIEnvDeleter(JavaVM &v)
Definition: ownership.hpp:211
Definition: ownership.hpp:183
MonitorDeleter(JNIEnv &e)
Definition: ownership.hpp:189
void operator()(jobject *p) const
Definition: ownership.hpp:191
Definition: ownership.hpp:158
void operator()(void *p) const
Definition: ownership.hpp:167
PrimitiveArrayCriticalDeleter()=default
PrimitiveArrayCriticalDeleter(JNIEnv &e, jarray< E > &a)
Definition: ownership.hpp:165
Definition: ownership.hpp:59
void operator()(const char16_t *p) const
Definition: ownership.hpp:68
StringCharsDeleter(JNIEnv &e, jstring &s)
Definition: ownership.hpp:66
StringCharsDeleter()=default
Definition: ownership.hpp:107
StringCriticalDeleter(JNIEnv &e, jstring &s)
Definition: ownership.hpp:114
StringCriticalDeleter()=default
void operator()(const char16_t *p) const
Definition: ownership.hpp:116
Definition: ownership.hpp:83
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< E, ArrayElementsDeleter< E > > UniqueArrayElements
Definition: ownership.hpp:153
void(JNIEnv::*)(::jobject) RefDeletionMethod
Definition: ownership.hpp:23
std::unique_ptr< T, Deleter<&JNIEnv::DeleteWeakGlobalRef > > UniqueWeakGlobalRef
Definition: ownership.hpp:50
std::unique_ptr< const char16_t, StringCharsDeleter > UniqueStringChars
Definition: ownership.hpp:79
std::unique_ptr< const char16_t, StringCriticalDeleter > UniqueStringCritical
Definition: ownership.hpp:127
std::unique_ptr< jobject, MonitorDeleter > UniqueMonitor
Definition: ownership.hpp:201
std::unique_ptr< JNIEnv, JNIEnvDeleter > UniqueEnv
Definition: ownership.hpp:223
std::unique_ptr< const char, StringUTFCharsDeleter > UniqueStringUTFChars
Definition: ownership.hpp:103
std::unique_ptr< T, DefaultRefDeleter<&JNIEnv::DeleteLocalRef > > UniqueLocalRef
Definition: ownership.hpp:55
std::unique_ptr< void, PrimitiveArrayCriticalDeleter< E > > UniquePrimitiveArrayCritical
Definition: ownership.hpp:179
std::unique_ptr< JNIEnv, LocalFrameDeleter > UniqueLocalFrame
Definition: ownership.hpp:20
std::unique_ptr< T, Deleter<&JNIEnv::DeleteGlobalRef > > UniqueGlobalRef
Definition: ownership.hpp:47
auto Unwrap(W &&w)
Definition: wrapping.hpp:22
Definition: ownership.hpp:10
void operator()(JNIEnv *env) const
Definition: ownership.hpp:11
Definition: typed_methods.hpp:7