37 template <
class T,
class D >
50 explicit Unique(std::nullptr_t ptr =
nullptr)
63 Unique(
Unique<U, D>&& other, std::enable_if_t<std::is_convertible<const U&, const T&>::value>* =
nullptr)
74 reset(other.release());
75 deleter = std::move(other.deleter);
101 template <
class T,
template < RefDeletionMethod >
class Deleter =
DefaultRefDeleter >
104 template <
class T,
template < RefDeletionMethod >
class Deleter =
DefaultRefDeleter >
132 template <
class T,
class D >
148 template <
class T,
class D >
155 template <
template < RefDeletionMethod >
class Deleter,
class T >
164 return NewGlobal<DefaultRefDeleter>(env, t);
173 template <
template < RefDeletionMethod >
class Deleter,
class T,
template < RefDeletionMethod >
class WeakDeleter >
176 jobject* obj = Wrap<jobject*>(env.NewGlobalRef(
Unwrap(t->get())));
184 return NewGlobal<DefaultRefDeleter>(env, t);
188 template <
template < RefDeletionMethod >
class Deleter,
class T >
197 return NewWeak<DefaultRefDeleter>(env, t);
213 template <
class T,
template < RefDeletionMethod >
class WeakDeleter >
216 jobject* obj = Wrap<jobject*>(env.NewLocalRef(
Unwrap(t->get())));
UniqueLocalRef< T > NewLocalRef(JNIEnv &env, T *t)
Definition: functions.hpp:172
decltype(Untag(std::declval< T >())) UntaggedType
Definition: tagging.hpp:130
T Type
Definition: unique.hpp:135
UniqueGlobalRef< T, Deleter > NewGlobalRef(JNIEnv &env, T *t)
Definition: functions.hpp:132
auto ReleaseUnique(T primitive)
Definition: unique.hpp:143
const D & get_deleter() const
Definition: unique.hpp:97
Unique(std::nullptr_t ptr=nullptr)
Definition: unique.hpp:50
Unique(JNIEnv &env, UntaggedType *ptr)
Definition: unique.hpp:54
Definition: unique.hpp:127
Definition: unique.hpp:115
Definition: ownership.hpp:26
void operator()(jobject *) const
Definition: unique.hpp:119
D & get_deleter()
Definition: unique.hpp:96
Definition: advanced_ownership.hpp:5
Unique(Unique &&other)
Definition: unique.hpp:58
auto NewWeak(JNIEnv &env, const T &t)
Definition: unique.hpp:189
Unique & operator=(Unique &&other)
Definition: unique.hpp:72
auto Unwrap(W &&w)
Definition: wrapping.hpp:22
typename RemoveUnique< T >::Type RemoveUniqueType
Definition: unique.hpp:139
Unique(Unique< U, D > &&other, std::enable_if_t< std::is_convertible< const U &, const T &>::value > *=nullptr)
Definition: unique.hpp:63
UniqueWeakGlobalRef< T, Deleter > NewWeakGlobalRef(JNIEnv &env, T *t)
Definition: functions.hpp:205
Definition: unique.hpp:38
NullDeleter(JNIEnv &)
Definition: unique.hpp:118
R CheckJavaException(JNIEnv &env, R &&r)
Definition: errors.hpp:61
auto NewLocal(JNIEnv &env, const T &t)
Definition: unique.hpp:202
UntaggedType * release()
Definition: unique.hpp:89
~Unique()
Definition: unique.hpp:67
typename TagTraits< TheTag >::UntaggedType UntaggedType
Definition: object.hpp:49
void reset(UntaggedType *ptr=nullptr)
Definition: unique.hpp:79
T Type
Definition: unique.hpp:129
auto NewGlobal(JNIEnv &env, const T &t)
Definition: unique.hpp:156