15 template <
class M,
class Enable =
void >
18 template <
class R,
class...
Args >
25 template <
class R,
class...
Args >
29 template <
class T,
class R,
class...
Args >
33 template <
class T,
class R,
class...
Args >
46 std::enable_if_t< std::is_class<M>::value >* =
nullptr)
57 return method(env,
args...);
72 template <
class M, M method >
82 return method(env,
args...);
97 template <
class T, T*... >
100 template <
class T,
class R,
class Subject,
class...
Args >
171 template <
class M, M method >
181 template <
class L,
class >
184 template <
class L,
class R,
class P,
class...
Args >
201 return lambda(env, *
reinterpret_cast<P*
>(
obj.Get(env, field)),
args...);
210 std::enable_if_t< std::is_class<L>::value >* =
nullptr)
218 template <
class M, M* >
237 return method(env, *
reinterpret_cast<P*
>(
obj.Get(env, field)),
args...);
244 template <
class M, M method >
246 std::enable_if_t< !std::is_member_function_pointer<M>::value >* =
nullptr)
255 template <
class M, M >
274 return (
reinterpret_cast<P*
>(
obj.Get(env, field))->*method)(env,
args...);
281 template <
class M, M method >
283 std::enable_if_t< std::is_member_function_pointer<M>::value >* =
nullptr)
310 template <
class Peer,
class TagType,
class...
Methods >
317 template <
class Peer,
class TagType,
class >
320 template <
class Peer,
class TagType,
class...
Args >
352 template <
class Peer,
class TagType,
class Initializer,
class...
Methods >
354 Initializer initialize,
372 template <
class Peer,
class...
Args >
375 return std::make_unique<Peer>(env,
args...);
NativePeerFunctionPointerMethod(const char *n)
Definition native_method.hpp:228
auto operator()(const Field< TagType, jlong > &field)
Definition native_method.hpp:233
High-level peer, function pointer.
Definition native_method.hpp:219
auto operator()(const Field< TagType, jlong > &field)
Definition native_method.hpp:197
NativePeerLambdaMethod(const char *n, const L &l)
Definition native_method.hpp:192
High-level peer, lambda.
Definition native_method.hpp:182
auto operator()(const Field< TagType, jlong > &field)
Definition native_method.hpp:270
NativePeerMemberFunctionMethod(const char *n)
Definition native_method.hpp:265
High-level peer, member function pointer.
Definition native_method.hpp:256
Definition advanced_ownership.hpp:6
auto Tag(JNIEnv &, T primitive) -> std::enable_if_t< IsPrimitive< T >::value, T >
Definition tagging.hpp:94
void ThrowJavaError(JNIEnv &env, std::exception_ptr e)
Definition errors.hpp:101
decltype(Untag(std::declval< T >())) UntaggedType
Definition tagging.hpp:130
typename RemoveUnique< T >::Type RemoveUniqueType
Definition unique.hpp:139
void RegisterNativePeer(JNIEnv &env, const Class< TagType > &clazz, const char *fieldName, Methods &&... methods)
Definition native_method.hpp:311
T & AsLvalue(T &&x)
Definition traits.hpp:33
auto MakeNativePeerMethod(const char *name, const L &lambda, std::enable_if_t< std::is_class< L >::value > *=nullptr)
Definition native_method.hpp:209
jarray< E > & NewArray(JNIEnv &env, jsize length)
Definition functions.hpp:472
void RegisterNatives(JNIEnv &env, jclass &clazz, const Methods &... methods)
Definition functions.hpp:573
auto ReleaseUnique(T primitive)
Definition unique.hpp:143
auto MakeNativeMethod(const char *name, const char *sig, const M &m, std::enable_if_t< std::is_class< M >::value > *=nullptr)
Low-level, lambda.
Definition native_method.hpp:45
std::unique_ptr< Peer > MakePeer(jni::JNIEnv &env, Args... args)
Definition native_method.hpp:373
auto operator()(const char *name)
Definition native_method.hpp:146
auto operator()(const char *name, const M &m)
Definition native_method.hpp:104
auto operator()(const char *name)
Definition native_method.hpp:160
auto operator()(const char *name, const M &m)
Definition native_method.hpp:121
High-level, lambda.
Definition native_method.hpp:98
R ResultType
Definition native_method.hpp:22
R(Args...) Type
Definition native_method.hpp:21
Definition native_method.hpp:16
auto MakeInitializer(const Field< TagType, jlong > &field, const char *name, Initializer *initializer) const
Definition native_method.hpp:326
UniquePeer(JNIEnv &, Args...) Initializer
Definition native_method.hpp:324
std::unique_ptr< Peer > UniquePeer
Definition native_method.hpp:323
auto MakeFinalizer(const Field< TagType, jlong > &field, const char *name) const
Definition native_method.hpp:339
Definition native_method.hpp:318
Definition tagging.hpp:13