lime
Lime is a C++ library implementing Open Whisper System Signal protocol
traits.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <jni/types.hpp>
4 
5 #include <type_traits>
6 
7 namespace 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: traits.hpp:25
Definition: types.hpp:43
Definition: advanced_ownership.hpp:5
Definition: traits.hpp:19
Definition: traits.hpp:9
T & AsLvalue(T &&x)
Definition: traits.hpp:33
Definition: types.hpp:38
Definition: types.hpp:39
Definition: types.hpp:40
Definition: traits.hpp:28
Definition: types.hpp:30