17 return env.GetVersion();
27 template <
class Array >
29 -> std::enable_if_t< IsArraylike<Array>::value,
jclass& >
92 return env.ExceptionCheck();
102 env.ExceptionDescribe();
107 env.ExceptionClear();
131 template <
template < RefDeletionMethod >
class Deleter,
class T >
137 throw std::bad_alloc();
149 template <
template < RefDeletionMethod >
class Deleter,
class T,
template < RefDeletionMethod >
class WeakDeleter >
157 template <
class T,
template < RefDeletionMethod >
class WeakDeleter >
163 template <
class T,
template < RefDeletionMethod >
class Deleter >
166 env.DeleteGlobalRef(
Unwrap(
ref.release()));
177 throw std::bad_alloc();
183 template <
class T,
template < RefDeletionMethod >
class WeakDeleter >
194 env.DeleteLocalRef(
Unwrap(
ref.release()));
204 template <
template < RefDeletionMethod >
class Deleter,
class T >
210 throw std::bad_alloc();
220 template <
class T,
template < RefDeletionMethod >
class Deleter >
223 env.DeleteWeakGlobalRef(
Unwrap(
ref.release()));
240 template <
class...
Args >
266 template <
class R,
class...
Args >
267 std::enable_if_t<!std::is_void<R>::value,
R>
274 template <
class R,
class...
Args >
275 std::enable_if_t<std::is_void<R>::value,
R>
282 template <
class R,
class...
Args >
283 std::enable_if_t<!std::is_void<R>::value,
R>
290 template <
class R,
class...
Args >
291 std::enable_if_t<std::is_void<R>::value,
R>
326 template <
class R,
class...
Args >
327 std::enable_if_t<!std::is_void<R>::value,
R>
334 template <
class R,
class...
Args >
335 std::enable_if_t<std::is_void<R>::value,
R>
370 template <
class Array >
372 -> std::enable_if_t< IsArraylike<Array>::value,
jstring& >
419 env.ReleaseStringUTFChars(
Unwrap(
string),
chars.release());
429 template <
class Array >
431 -> std::enable_if_t< IsArraylike<Array>::value >
442 template <
class Array >
444 -> std::enable_if_t< IsArraylike<Array>::value >
513 env.ReleasePrimitiveArrayCritical(
Unwrap(array),
carray, 0);
531 template <
class T,
class Array >
533 -> std::enable_if_t< IsArraylike<Array>::value >
545 template <
class T,
class Array >
547 -> std::enable_if_t< IsArraylike<Array>::value >
615 env.GetDirectBufferAddress(
Unwrap(
buf)));
621 env.GetDirectBufferCapacity(
Unwrap(
buf)));
627 return env.GetObjectRefType(
Unwrap(
obj));
639 return reinterpret_cast<void**
>(env);
Definition ownership.hpp:132
Definition ownership.hpp:27
Definition ownership.hpp:205
Definition ownership.hpp:183
Definition ownership.hpp:158
Definition ownership.hpp:59
Definition ownership.hpp:107
Definition ownership.hpp:83
Definition advanced_ownership.hpp:6
void Throw(JNIEnv &env, jthrowable &obj)
Definition functions.hpp:78
bool ExceptionCheck(JNIEnv &env)
Definition functions.hpp:90
std::unique_ptr< E, ArrayElementsDeleter< E > > UniqueArrayElements
Definition ownership.hpp:153
jarray< jobject > & NewObjectArray(JNIEnv &env, jsize length, jclass &elementClass, jobject *initialElement=nullptr)
Definition functions.hpp:553
UniqueGlobalRef< T, Deleter > NewGlobalRef(JNIEnv &env, T *t)
Definition functions.hpp:132
bool IsAssignableFrom(JNIEnv &env, jclass &clazz1, jclass &clazz2)
Definition functions.hpp:71
jobject & NewObject(JNIEnv &env, jclass &clazz, jmethodID &method, Args &&... args)
Definition functions.hpp:241
void CheckErrorCode(jint err)
Definition errors.hpp:43
std::unique_ptr< T, Deleter<&JNIEnv::DeleteWeakGlobalRef > > UniqueWeakGlobalRef
Definition ownership.hpp:50
JavaVM & GetJavaVM(JNIEnv &env)
Definition functions.hpp:598
std::unique_ptr< const char16_t, StringCharsDeleter > UniqueStringChars
Definition ownership.hpp:79
UniqueWeakGlobalRef< T, Deleter > NewWeakGlobalRef(JNIEnv &env, T *t)
Definition functions.hpp:205
jsize GetArrayLength(JNIEnv &env, jarray< E > &array)
Definition functions.hpp:465
jobject & ToReflectedField(JNIEnv &env, jclass &clazz, jfieldID &field, bool isStatic)
Definition functions.hpp:58
std::enable_if_t<!std::is_void< R >::value, R > CallStaticMethod(JNIEnv &env, jclass &clazz, jmethodID &method, Args &&... args)
Definition functions.hpp:328
UniqueEnv AttachCurrentThread(JavaVM &vm)
Definition functions.hpp:631
void ExceptionDescribe(JNIEnv &env)
Definition functions.hpp:100
void MonitorExit(JNIEnv &env, UniqueMonitor &&monitor)
Definition functions.hpp:592
void SetField(JNIEnv &env, jobject *obj, jfieldID &field, T value)
Definition functions.hpp:313
std::unique_ptr< const char16_t, StringCriticalDeleter > UniqueStringCritical
Definition ownership.hpp:127
void SetArrayRegion(JNIEnv &env, jarray< T > &array, jsize start, jsize len, const T *buf)
Definition functions.hpp:539
jobjectRefType GetObjectRefType(JNIEnv &env, jobject *obj)
Definition functions.hpp:625
void DeleteWeakGlobalRef(JNIEnv &env, UniqueWeakGlobalRef< T, Deleter > &&ref)
Definition functions.hpp:221
jclass & GetObjectClass(JNIEnv &env, jobject &obj)
Definition functions.hpp:247
jfieldID * FromReflectedField(JNIEnv &env, jobject *obj)
Definition functions.hpp:46
R CheckJavaException(JNIEnv &env, R &&r)
Definition errors.hpp:61
version
Definition types.hpp:83
@ jni_version_1_1
Definition types.hpp:84
jobject * PopLocalFrame(JNIEnv &env, UniqueLocalFrame &&frame, jobject *result=nullptr)
Definition functions.hpp:123
std::tuple< UniqueArrayElements< E >, bool > GetArrayElements(JNIEnv &env, jarray< E > &array)
Definition functions.hpp:479
jstring & NewString(JNIEnv &env, const char16_t *chars, jsize len)
Definition functions.hpp:364
jsize GetStringLength(JNIEnv &env, jstring &string)
Definition functions.hpp:377
jobject & NewDirectByteBuffer(JNIEnv &env, void *address, jlong capacity)
Definition functions.hpp:606
void * GetDirectBufferAddress(JNIEnv &env, jobject &buf)
Definition functions.hpp:612
jclass & FindClass(JNIEnv &env, const char *name)
Definition functions.hpp:34
jarray< E > & NewArray(JNIEnv &env, jsize length)
Definition functions.hpp:472
UniqueLocalFrame PushLocalFrame(JNIEnv &env, jint capacity)
Definition functions.hpp:117
std::enable_if_t<!std::is_void< R >::value, R > CallNonvirtualMethod(JNIEnv &env, jobject *obj, jclass &clazz, jmethodID &method, Args &&... args)
Definition functions.hpp:284
std::unique_ptr< jobject, MonitorDeleter > UniqueMonitor
Definition ownership.hpp:201
std::tuple< UniqueStringUTFChars, bool > GetStringUTFChars(JNIEnv &env, jstring &string)
Definition functions.hpp:409
std::unique_ptr< JNIEnv, JNIEnvDeleter > UniqueEnv
Definition ownership.hpp:223
void DeleteGlobalRef(JNIEnv &env, UniqueGlobalRef< T, Deleter > &&ref)
Definition functions.hpp:164
void ReleasePrimitiveArrayCritical(JNIEnv &env, jarray< E > &array, void *carray)
Definition functions.hpp:511
jclass * GetSuperclass(JNIEnv &env, jclass &clazz)
Definition functions.hpp:65
jobject * GetObjectArrayElement(JNIEnv &env, jarray< jobject > &array, jsize index)
Definition functions.hpp:559
jint GetVersion(JNIEnv &env)
Definition functions.hpp:15
void ReleaseStringCritical(JNIEnv &env, jstring &string, UniqueStringCritical &&chars)
Definition functions.hpp:457
void RegisterNatives(JNIEnv &env, jclass &clazz, const Methods &... methods)
Definition functions.hpp:573
void SetStaticField(JNIEnv &env, jclass &clazz, jfieldID &field, T value)
Definition functions.hpp:357
bool IsSameObject(JNIEnv &env, jobject *ref1, jobject *ref2)
Definition functions.hpp:228
std::pointer_traits< ::jmethodID >::element_type jmethodID
Definition types.hpp:56
void ThrowNew(JNIEnv &env, jclass &clazz, const char *msg=nullptr)
Definition functions.hpp:84
std::unique_ptr< const char, StringUTFCharsDeleter > UniqueStringUTFChars
Definition ownership.hpp:103
void EnsureLocalCapacity(JNIEnv &env, jint capacity)
Definition functions.hpp:198
void SetObjectArrayElement(JNIEnv &env, jarray< jobject > &array, jsize index, jobject *value)
Definition functions.hpp:565
void ExceptionClear(JNIEnv &env)
Definition functions.hpp:105
jthrowable * ExceptionOccurred(JNIEnv &env)
Definition functions.hpp:95
void GetStringUTFRegion(JNIEnv &env, jstring &string, jsize start, jsize len, char *buf)
Definition functions.hpp:436
jclass & DefineClass(JNIEnv &env, const char *name, jobject &loader, const jbyte *buf, jsize size)
Definition functions.hpp:21
void ReleaseStringUTFChars(JNIEnv &env, jstring &string, UniqueStringUTFChars &&chars)
Definition functions.hpp:417
std::unique_ptr< T, DefaultRefDeleter<&JNIEnv::DeleteLocalRef > > UniqueLocalRef
Definition ownership.hpp:55
UniqueMonitor MonitorEnter(JNIEnv &env, jobject *obj)
Definition functions.hpp:586
std::enable_if_t<!std::is_void< R >::value, R > CallMethod(JNIEnv &env, jobject *obj, jmethodID &method, Args &&... args)
Definition functions.hpp:268
void DetachCurrentThread(JavaVM &vm, UniqueEnv &&env)
Definition functions.hpp:653
jfieldID & GetStaticFieldID(JNIEnv &env, jclass &clazz, const char *name, const char *sig)
Definition functions.hpp:343
std::unique_ptr< void, PrimitiveArrayCriticalDeleter< E > > UniquePrimitiveArrayCritical
Definition ownership.hpp:179
void ReleaseStringChars(JNIEnv &env, jstring &string, UniqueStringChars &&chars)
Definition functions.hpp:391
std::size_t ArraylikeSize(E(&)[n])
Definition arraylike.hpp:37
auto Wrap(U &&u)
Definition wrapping.hpp:16
jobject & AllocObject(JNIEnv &env, jclass &clazz)
Definition functions.hpp:234
JNIEnv & GetEnv(JavaVM &vm, version version=jni_version_1_1)
Definition functions.hpp:659
jmethodID & GetMethodID(JNIEnv &env, jclass &clazz, const char *name, const char *sig)
Definition functions.hpp:260
std::size_t jsize
Definition types.hpp:28
std::unique_ptr< JNIEnv, LocalFrameDeleter > UniqueLocalFrame
Definition ownership.hpp:20
void ReleaseArrayElements(JNIEnv &env, jarray< E > &array, E *elems)
Definition functions.hpp:488
void GetStringRegion(JNIEnv &env, jstring &string, jsize start, jsize len, char16_t *buf)
Definition functions.hpp:423
std::unique_ptr< T, Deleter<&JNIEnv::DeleteGlobalRef > > UniqueGlobalRef
Definition ownership.hpp:47
jsize GetStringUTFLength(JNIEnv &env, jstring &string)
Definition functions.hpp:403
std::pointer_traits< ::jfieldID >::element_type jfieldID
Definition types.hpp:55
void FatalError(JNIEnv &env, const char *msg)
Definition functions.hpp:110
auto Unwrap(W &&w)
Definition wrapping.hpp:22
jlong GetDirectBufferCapacity(JNIEnv &env, jobject &buf)
Definition functions.hpp:618
UniqueLocalRef< T > NewLocalRef(JNIEnv &env, T *t)
Definition functions.hpp:172
bool IsInstanceOf(JNIEnv &env, jobject *obj, jclass &clazz)
Definition functions.hpp:253
std::tuple< UniqueStringCritical, bool > GetStringCritical(JNIEnv &env, jstring &string)
Definition functions.hpp:449
jfieldID & GetFieldID(JNIEnv &env, jclass &clazz, const char *name, const char *sig)
Definition functions.hpp:299
void UnregisterNatives(JNIEnv &env, jclass &clazz)
Definition functions.hpp:580
T GetStaticField(JNIEnv &env, jclass &clazz, jfieldID &field)
Definition functions.hpp:350
void CheckJavaExceptionThenErrorCode(JNIEnv &env, jint err)
Definition errors.hpp:72
jobject & ToReflectedMethod(JNIEnv &env, jclass &clazz, jmethodID &method, bool isStatic)
Definition functions.hpp:52
jmethodID * FromReflectedMethod(JNIEnv &env, jobject *obj)
Definition functions.hpp:40
void GetArrayRegion(JNIEnv &env, jarray< T > &array, jsize start, jsize len, T *buf)
Definition functions.hpp:525
std::tuple< UniqueStringChars, bool > GetStringChars(JNIEnv &env, jstring &string)
Definition functions.hpp:383
void DeleteLocalRef(JNIEnv &env, UniqueLocalRef< T > &&ref)
Definition functions.hpp:192
jmethodID & GetStaticMethodID(JNIEnv &env, jclass &clazz, const char *name, const char *sig)
Definition functions.hpp:320
std::tuple< UniquePrimitiveArrayCritical< E >, bool > GetPrimitiveArrayCritical(JNIEnv &env, jarray< E > &array)
Definition functions.hpp:502
jstring & NewStringUTF(JNIEnv &env, const char *bytes)
Definition functions.hpp:397
E * ArraylikeData(E(&a)[n])
Definition arraylike.hpp:28
T GetField(JNIEnv &env, jobject *obj, jfieldID &field)
Definition functions.hpp:306
Definition ownership.hpp:10
Definition typed_methods.hpp:7