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
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 advanced_ownership.hpp:6
Object< FloatTag > Float
Definition boxing.hpp:102
Object< NumberTag > Number
Definition boxing.hpp:97
Object< CharacterTag > Character
Definition boxing.hpp:96
decltype(auto) Box(JNIEnv &env, Unboxed &&unboxed)
Definition boxing.hpp:12
Object< DoubleTag > Double
Definition boxing.hpp:103
Object< LongTag > Long
Definition boxing.hpp:101
Object< BooleanTag > Boolean
Definition boxing.hpp:95
Object< IntegerTag > Integer
Definition boxing.hpp:100
Object< ShortTag > Short
Definition boxing.hpp:99
decltype(auto) Unbox(JNIEnv &env, const T &boxed)
Definition boxing.hpp:18
Unique< T, DefaultRefDeleter<&JNIEnv::DeleteLocalRef > > Local
Definition unique.hpp:110
Object< ByteTag > Byte
Definition boxing.hpp:98
static constexpr auto UnboxMethodName()
Definition boxing.hpp:29
static constexpr auto BoxStaticMethodName()
Definition boxing.hpp:28
static constexpr auto Name()
Definition boxing.hpp:27
ObjectTag SuperTag
Definition boxing.hpp:26
const Object< Tag > & Box(JNIEnv &, const jni::Object< Tag > &o) const
Definition boxing.hpp:151
static constexpr auto BoxStaticMethodName()
Definition boxing.hpp:50
static constexpr auto UnboxMethodName()
Definition boxing.hpp:51
static constexpr auto Name()
Definition boxing.hpp:49
NumberTag SuperTag
Definition boxing.hpp:48
static constexpr auto BoxStaticMethodName()
Definition boxing.hpp:36
static constexpr auto Name()
Definition boxing.hpp:35
static constexpr auto UnboxMethodName()
Definition boxing.hpp:37
ObjectTag SuperTag
Definition boxing.hpp:34
static constexpr auto UnboxMethodName()
Definition boxing.hpp:91
static constexpr auto BoxStaticMethodName()
Definition boxing.hpp:90
static constexpr auto Name()
Definition boxing.hpp:89
NumberTag SuperTag
Definition boxing.hpp:88
static constexpr auto UnboxMethodName()
Definition boxing.hpp:83
static constexpr auto BoxStaticMethodName()
Definition boxing.hpp:82
NumberTag SuperTag
Definition boxing.hpp:80
static constexpr auto Name()
Definition boxing.hpp:81
static constexpr auto BoxStaticMethodName()
Definition boxing.hpp:66
static constexpr auto UnboxMethodName()
Definition boxing.hpp:67
static constexpr auto Name()
Definition boxing.hpp:65
NumberTag SuperTag
Definition boxing.hpp:64
static constexpr auto UnboxMethodName()
Definition boxing.hpp:75
static constexpr auto Name()
Definition boxing.hpp:73
NumberTag SuperTag
Definition boxing.hpp:72
static constexpr auto BoxStaticMethodName()
Definition boxing.hpp:74
static constexpr auto Name()
Definition boxing.hpp:43
ObjectTag SuperTag
Definition boxing.hpp:42
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
NumberTag SuperTag
Definition boxing.hpp:56
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