8 template <
class >
struct Boxer;
9 template <
class >
struct Unboxer;
11 template <
class Unboxed >
12 decltype(
auto)
Box(JNIEnv& env, Unboxed&& unboxed)
18 decltype(
auto)
Unbox(JNIEnv& env,
const T& boxed)
27 static constexpr auto Name() {
return "java/lang/Boolean"; }
35 static constexpr auto Name() {
return "java/lang/Character"; }
43 static constexpr auto Name() {
return "java/lang/Number"; }
49 static constexpr auto Name() {
return "java/lang/Byte"; }
57 static constexpr auto Name() {
return "java/lang/Short"; }
65 static constexpr auto Name() {
return "java/lang/Integer"; }
73 static constexpr auto Name() {
return "java/lang/Long"; }
81 static constexpr auto Name() {
return "java/lang/Float"; }
89 static constexpr auto Name() {
return "java/lang/Double"; }
106 template <
class Tag,
class Unboxed >
112 static auto box = klass.template GetStaticMethod<Object<Tag> (Unboxed)>(env, Tag::BoxStaticMethodName());
113 return klass.Call(env, box, unboxed);
127 template <
class Tag,
class Unboxed >
133 static auto unbox = klass.template GetMethod<Unboxed ()>(env, Tag::UnboxMethodName());
134 return boxed.
Call(env, unbox);
148 template <
class Tag >
154 template <
class Tag >
static const Class & Singleton(JNIEnv &env)
Definition: class.hpp:101
Definition: object.hpp:45
auto Call(JNIEnv &env, const Method< TagType, R(ExpectedArgs...)> &method, const ActualArgs &... args) const -> std::enable_if_t< IsPrimitive< R >::value &&Conjunction< std::is_convertible< const ActualArgs &, const ExpectedArgs & >... >::value, R >
Definition: object.hpp:96
Definition: unique.hpp:39
Definition: advanced_ownership.hpp:6
decltype(auto) Box(JNIEnv &env, Unboxed &&unboxed)
Definition: boxing.hpp:12
decltype(auto) Unbox(JNIEnv &env, const T &boxed)
Definition: boxing.hpp:18
Definition: boxing.hpp:25
static constexpr auto UnboxMethodName()
Definition: boxing.hpp:29
static constexpr auto BoxStaticMethodName()
Definition: boxing.hpp:28
static constexpr auto Name()
Definition: boxing.hpp:27
const Object< Tag > & Box(JNIEnv &, const jni::Object< Tag > &o) const
Definition: boxing.hpp:151
Definition: boxing.hpp:47
static constexpr auto BoxStaticMethodName()
Definition: boxing.hpp:50
static constexpr auto UnboxMethodName()
Definition: boxing.hpp:51
static constexpr auto Name()
Definition: boxing.hpp:49
Definition: boxing.hpp:33
static constexpr auto BoxStaticMethodName()
Definition: boxing.hpp:36
static constexpr auto Name()
Definition: boxing.hpp:35
static constexpr auto UnboxMethodName()
Definition: boxing.hpp:37
Definition: boxing.hpp:87
static constexpr auto UnboxMethodName()
Definition: boxing.hpp:91
static constexpr auto BoxStaticMethodName()
Definition: boxing.hpp:90
static constexpr auto Name()
Definition: boxing.hpp:89
Definition: boxing.hpp:79
static constexpr auto UnboxMethodName()
Definition: boxing.hpp:83
static constexpr auto BoxStaticMethodName()
Definition: boxing.hpp:82
static constexpr auto Name()
Definition: boxing.hpp:81
Definition: boxing.hpp:63
static constexpr auto BoxStaticMethodName()
Definition: boxing.hpp:66
static constexpr auto UnboxMethodName()
Definition: boxing.hpp:67
static constexpr auto Name()
Definition: boxing.hpp:65
Definition: boxing.hpp:71
static constexpr auto UnboxMethodName()
Definition: boxing.hpp:75
static constexpr auto Name()
Definition: boxing.hpp:73
static constexpr auto BoxStaticMethodName()
Definition: boxing.hpp:74
Definition: boxing.hpp:41
static constexpr auto Name()
Definition: boxing.hpp:43
Definition: tagging.hpp:17
Definition: boxing.hpp:108
Local< Object< Tag > > Box(JNIEnv &env, Unboxed unboxed) const
Definition: boxing.hpp:109
Definition: boxing.hpp:129
Unboxed Unbox(JNIEnv &env, const Object< Tag > &boxed) const
Definition: boxing.hpp:130
Definition: boxing.hpp:55
static constexpr auto BoxStaticMethodName()
Definition: boxing.hpp:58
static constexpr auto UnboxMethodName()
Definition: boxing.hpp:59
static constexpr auto Name()
Definition: boxing.hpp:57
Definition: boxing.hpp:156
const Object< Tag > & Unbox(JNIEnv &, const jni::Object< Tag > &o) const
Definition: boxing.hpp:157