lime
Lime is a C++ library implementing Open Whisper System Signal protocol
Loading...
Searching...
No Matches
traits.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <jni/types.hpp>
4
5#include <type_traits>
6
7namespace jni
8 {
9 template < class T > struct IsPrimitive : std::false_type {};
10 template <> struct IsPrimitive< jboolean > : std::true_type {};
11 template <> struct IsPrimitive< jbyte > : std::true_type {};
12 template <> struct IsPrimitive< jchar > : std::true_type {};
13 template <> struct IsPrimitive< jshort > : std::true_type {};
14 template <> struct IsPrimitive< jint > : std::true_type {};
15 template <> struct IsPrimitive< jlong > : std::true_type {};
16 template <> struct IsPrimitive< jfloat > : std::true_type {};
17 template <> struct IsPrimitive< jdouble > : std::true_type {};
18
19 template < class T > struct IsReference : std::false_type {};
20 template <> struct IsReference< jobject > : std::true_type {};
21 template <> struct IsReference< jclass > : std::true_type {};
22 template <> struct IsReference< jstring > : std::true_type {};
23 template <> struct IsReference< jthrowable > : std::true_type {};
24
25 template < class T > struct IsArray : std::false_type {};
26 template < class E > struct IsArray< jarray<E> > : std::true_type {};
27
28 template < class... > struct Conjunction : std::true_type {};
29 template < class B1 > struct Conjunction<B1> : B1 {};
30 template < class B1, class... Bn > struct Conjunction<B1, Bn...>
31 : std::conditional_t<bool(B1::value), Conjunction<Bn...>, B1> {};
32
33 template < class T > T& AsLvalue(T&& x) { return x; }
34 }
Definition advanced_ownership.hpp:6
T & AsLvalue(T &&x)
Definition traits.hpp:33
jarray< E > & NewArray(JNIEnv &env, jsize length)
Definition functions.hpp:472
Definition traits.hpp:28
Definition traits.hpp:25
Definition traits.hpp:9
Definition traits.hpp:19
Definition types.hpp:43
Definition types.hpp:38
Definition types.hpp:31
Definition types.hpp:39
Definition types.hpp:40