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 >;
std::unique_ptr< T, DefaultRefDeleter<&JNIEnv::DeleteLocalRef > > UniqueLocalRef
Definition: ownership.hpp:55
std::unique_ptr< JNIEnv, LocalFrameDeleter > UniqueLocalFrame
Definition: ownership.hpp:20
void operator()(JNIEnv *p) const
Definition: ownership.hpp:213
void operator()(jobject *p) const
Definition: ownership.hpp:191
std::unique_ptr< jobject, MonitorDeleter > UniqueMonitor
Definition: ownership.hpp:201
Definition: ownership.hpp:157
Definition: ownership.hpp:9
std::unique_ptr< const char16_t, StringCharsDeleter > UniqueStringChars
Definition: ownership.hpp:79
void operator()(const char16_t *p) const
Definition: ownership.hpp:116
JNIEnvDeleter(JavaVM &v)
Definition: ownership.hpp:211
std::unique_ptr< const char16_t, StringCriticalDeleter > UniqueStringCritical
Definition: ownership.hpp:127
StringUTFCharsDeleter(JNIEnv &e, jstring &s)
Definition: ownership.hpp:90
void operator()(const char16_t *p) const
Definition: ownership.hpp:68
std::unique_ptr< const char, StringUTFCharsDeleter > UniqueStringUTFChars
Definition: ownership.hpp:103
Definition: ownership.hpp:26
MonitorDeleter(JNIEnv &e)
Definition: ownership.hpp:189
DefaultRefDeleter(JNIEnv &e)
Definition: ownership.hpp:33
void operator()(void *p) const
Definition: ownership.hpp:167
Definition: advanced_ownership.hpp:5
std::unique_ptr< T, Deleter<&JNIEnv::DeleteGlobalRef > > UniqueGlobalRef
Definition: ownership.hpp:47
ArrayElementsDeleter(JNIEnv &e, jarray< E > &a)
Definition: ownership.hpp:139
void operator()(E *p) const
Definition: ownership.hpp:141
Definition: ownership.hpp:204
std::unique_ptr< T, Deleter<&JNIEnv::DeleteWeakGlobalRef > > UniqueWeakGlobalRef
Definition: ownership.hpp:50
Definition: ownership.hpp:82
void operator()(JNIEnv *env) const
Definition: ownership.hpp:11
Definition: ownership.hpp:58
auto Unwrap(W &&w)
Definition: wrapping.hpp:22
void(JNIEnv::*)(::jobject) RefDeletionMethod
Definition: ownership.hpp:23
Definition: typed_methods.hpp:7
void operator()(jobject *p) const
Definition: ownership.hpp:35
std::unique_ptr< JNIEnv, JNIEnvDeleter > UniqueEnv
Definition: ownership.hpp:223
std::unique_ptr< void, PrimitiveArrayCriticalDeleter< E > > UniquePrimitiveArrayCritical
Definition: ownership.hpp:179
Definition: ownership.hpp:106
Definition: ownership.hpp:182
std::unique_ptr< E, ArrayElementsDeleter< E > > UniqueArrayElements
Definition: ownership.hpp:153
PrimitiveArrayCriticalDeleter(JNIEnv &e, jarray< E > &a)
Definition: ownership.hpp:165
StringCharsDeleter(JNIEnv &e, jstring &s)
Definition: ownership.hpp:66
StringCriticalDeleter(JNIEnv &e, jstring &s)
Definition: ownership.hpp:114
void operator()(const char *p) const
Definition: ownership.hpp:92
Definition: ownership.hpp:131