21 #ifndef ELM_TYPE_INFO_H_
22 #define ELM_TYPE_INFO_H_
25 #include <elm/string/String.h>
37 enum {
_ =
sizeof(test_class<T>(0)) !=
sizeof(
char) };
67 static inline T&
ref(T& v) {
return v; }
68 static inline const T&
get(
const T& v) {
return v; }
69 static inline void put(T& x,
const T& v) { x = v; }
93 static inline T&
ref(T& v) {
return v; }
94 static inline T
get(
const T& v) {
return v; }
95 static inline void put(T& x, T v) { x = v; }
113 static const bool min =
false;
114 static const bool max =
true;
115 static const bool null =
false;
129 static const int size =
sizeof(I) * 8;
133 static const I
null = 0;
142 static const int size =
sizeof(I) * 8;
145 static const I
max = I(-1);
146 static const I
null = 0;
168 static const float null;
174 static const double null;
178 static const long double min;
179 static const long double max;
180 static const long double null;
203 static const string null;
224 enum { is_const = 1 };
226 static const T *
const null;
234 enum { is_const = 0 };
236 static T *
const null;
249 inline operator T&()
const {
return *p; }
258 static inline T&
get(T *v) {
return *v; }
259 static inline void put(T *& x, T& v) { x = &v; }
269 enum { is_const = 1 };
275 enum { is_const = 0 };
Definition: type_info.h:244
static T & get(T *v)
Definition: type_info.h:258
T & ret_t
Definition: type_info.h:263
T * var_t
Definition: type_info.h:255
T & out_t
Definition: type_info.h:262
static void put(T *&x, T &v)
Definition: type_info.h:259
var_t embed_t
Definition: type_info.h:256
T & in_t
Definition: type_info.h:261
static delegate ref(T *&v)
Definition: type_info.h:257
delegate mut_t
Definition: type_info.h:264
Definition: type_info.h:56
const T & ret_t
Definition: type_info.h:73
T & out_t
Definition: type_info.h:72
@ is_scalar
Definition: type_info.h:62
static cstring name(void)
Definition: type_info.h:63
var_t embed_t
Definition: type_info.h:66
static T & ref(T &v)
Definition: type_info.h:67
T var_t
Definition: type_info.h:65
@ is_virtual
Definition: type_info.h:60
static void put(T &x, const T &v)
Definition: type_info.h:69
@ is_class
Definition: type_info.h:58
const T & in_t
Definition: type_info.h:71
@ is_enum
Definition: type_info.h:61
static const T & get(const T &v)
Definition: type_info.h:68
@ is_deep
Definition: type_info.h:59
T & mut_t
Definition: type_info.h:74
typename type_info< T >::var_t var
Definition: type_info.h:282
unsigned long uint64
Definition: arch.h:33
typename type_info< T >::mut_t mut
Definition: type_info.h:286
short int16
Definition: arch.h:28
ret< T > get(const var< T > &v)
Definition: type_info.h:288
unsigned char uint8
Definition: arch.h:27
typename type_info< T >::ret_t ret
Definition: type_info.h:285
long int64
Definition: arch.h:32
typename type_info< T >::out_t out
Definition: type_info.h:284
mut< T > ref(var< T > &x)
Definition: type_info.h:289
signed char int8
Definition: arch.h:26
unsigned int uint32
Definition: arch.h:31
unsigned short uint16
Definition: arch.h:29
typename type_info< T >::in_t in
Definition: type_info.h:283
int int32
Definition: arch.h:30
void put(var< T > &x, in< T > v)
Definition: type_info.h:287
const T & max(const T &x, const T &y)
Definition: compare.h:108
const T & min(const T &x, const T &y)
Definition: compare.h:104
char test_class(int T::*)
struct elm::default_t default_t
Definition: type_info.h:42
@ is_virtual
Definition: type_info.h:50
@ is_class
Definition: type_info.h:46
@ is_defined_enum
Definition: type_info.h:45
@ is_enum
Definition: type_info.h:45
@ is_deep
Definition: type_info.h:49
@ is_scalar
Definition: type_info.h:44
@ is_void
Definition: type_info.h:51
@ is_type
Definition: type_info.h:43
@ is_ref
Definition: type_info.h:48
@ is_ptr
Definition: type_info.h:47
Definition: type_info.h:106
@ is_enum
Definition: type_info.h:107
Definition: type_info.h:36
@ _
Definition: type_info.h:37
Definition: type_info.h:246
delegate(T *&ptr)
Definition: type_info.h:248
delegate & operator=(T &r)
Definition: type_info.h:250
Definition: type_info.h:86
T var_t
Definition: type_info.h:91
@ is_enum
Definition: type_info.h:87
static void put(T &x, T v)
Definition: type_info.h:95
T & out_t
Definition: type_info.h:98
@ is_scalar
Definition: type_info.h:88
@ is_deep
Definition: type_info.h:89
static T & ref(T &v)
Definition: type_info.h:93
T & mut_t
Definition: type_info.h:100
T in_t
Definition: type_info.h:97
var_t embed_t
Definition: type_info.h:92
T ret_t
Definition: type_info.h:99
static T get(const T &v)
Definition: type_info.h:94
Definition: type_info.h:128
static const bool is_signed
Definition: type_info.h:130
static const int shift
Definition: type_info.h:134
static const int size
Definition: type_info.h:129
static const I min
Definition: type_info.h:131
static const I max
Definition: type_info.h:132
Definition: type_info.h:279
static string name(void)
Definition: type_info.h:237
T of
Definition: type_info.h:233
static T *const null
Definition: type_info.h:236
static string name(void)
Definition: type_info.h:276
T of
Definition: type_info.h:274
static CString name(void)
Definition: type_info.h:116
static cstring name(void)
static string name(void)
Definition: type_info.h:227
static const T *const null
Definition: type_info.h:226
T of
Definition: type_info.h:223
static string name(void)
Definition: type_info.h:270
T of
Definition: type_info.h:268
cstring var_t
Definition: type_info.h:190
cstring ret_t
Definition: type_info.h:198
static void put(cstring &x, cstring v)
Definition: type_info.h:194
cstring & out_t
Definition: type_info.h:197
var_t embed_t
Definition: type_info.h:191
static cstring & ref(cstring &v)
Definition: type_info.h:192
cstring & mut_t
Definition: type_info.h:199
cstring in_t
Definition: type_info.h:196
static cstring get(const cstring &v)
Definition: type_info.h:193
static const double min
Definition: type_info.h:172
static const double max
Definition: type_info.h:173
static const float max
Definition: type_info.h:167
static const float min
Definition: type_info.h:166
static const long double min
Definition: type_info.h:178
static const long double max
Definition: type_info.h:179
static ret_t get(const var_t &v)
Definition: type_info.h:216
var_t embed_t
Definition: type_info.h:209
string & mut_t
Definition: type_info.h:213
static void put(var_t &x, in_t v)
Definition: type_info.h:217
static mut_t ref(var_t &v)
Definition: type_info.h:215
string & out_t
Definition: type_info.h:211
string var_t
Definition: type_info.h:208
const string & in_t
Definition: type_info.h:210
const string & ret_t
Definition: type_info.h:212
Definition: type_info.h:79
@ is_deep
Definition: type_info.h:81
@ is_type
Definition: type_info.h:80
Definition: type_info.h:141
static const bool is_signed
Definition: type_info.h:143
static const int shift
Definition: type_info.h:147
static const int size
Definition: type_info.h:142
static const I min
Definition: type_info.h:144
static const I max
Definition: type_info.h:145