|
Elm
2
ELM is a library providing generic data structures, OS-independent interface, plugins and XML.
|
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; }
257 static inline delegate
ref(T *&v) {
return delegate(v); }
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 };
T & out_t
Definition: type_info.h:72
static const bool is_signed
Definition: type_info.h:143
static T *const null
Definition: type_info.h:236
static T & get(T *v)
Definition: type_info.h:258
T of
Definition: type_info.h:268
typename type_info< T >::out_t out
Definition: type_info.h:284
@ is_enum
Definition: type_info.h:61
Definition: type_info.h:128
static delegate ref(T *&v)
Definition: type_info.h:257
static cstring & ref(cstring &v)
Definition: type_info.h:192
@ is_enum
Definition: type_info.h:87
T & mut_t
Definition: type_info.h:74
static void put(var_t &x, in_t v)
Definition: type_info.h:217
@ is_class
Definition: type_info.h:58
static const float max
Definition: type_info.h:167
Definition: type_info.h:79
static const long double min
Definition: type_info.h:178
string & out_t
Definition: type_info.h:211
static const I max
Definition: type_info.h:132
int int32
Definition: arch.h:30
T & mut_t
Definition: type_info.h:100
Definition: type_info.h:36
mut< T > ref(var< T > &x)
Definition: type_info.h:289
delegate mut_t
Definition: type_info.h:264
unsigned short uint16
Definition: arch.h:29
@ is_type
Definition: type_info.h:43
T in_t
Definition: type_info.h:97
cstring ret_t
Definition: type_info.h:198
T & out_t
Definition: type_info.h:98
typename type_info< T >::var_t var
Definition: type_info.h:282
@ is_class
Definition: type_info.h:46
static const I min
Definition: type_info.h:131
static const T *const null
Definition: type_info.h:226
const T & max(const T &x, const T &y)
Definition: compare.h:108
static cstring get(const cstring &v)
Definition: type_info.h:193
const typedef string & in_t
Definition: type_info.h:210
static const float min
Definition: type_info.h:166
T & out_t
Definition: type_info.h:262
static const double min
Definition: type_info.h:172
T var_t
Definition: type_info.h:91
long int64
Definition: arch.h:32
const typedef T & in_t
Definition: type_info.h:71
delegate & operator=(T &r)
Definition: type_info.h:250
delegate(T *&ptr)
Definition: type_info.h:248
@ _
Definition: type_info.h:37
@ is_deep
Definition: type_info.h:49
var_t embed_t
Definition: type_info.h:209
Definition: type_info.h:56
const typedef T & ret_t
Definition: type_info.h:73
T * var_t
Definition: type_info.h:255
static void put(cstring &x, cstring v)
Definition: type_info.h:194
static T & ref(T &v)
Definition: type_info.h:93
const T & min(const T &x, const T &y)
Definition: compare.h:104
cstring in_t
Definition: type_info.h:196
@ is_type
Definition: type_info.h:80
static CString name(void)
Definition: type_info.h:116
@ is_defined_enum
Definition: type_info.h:45
short int16
Definition: arch.h:28
T & ret_t
Definition: type_info.h:263
typename type_info< T >::in_t in
Definition: type_info.h:283
@ is_void
Definition: type_info.h:51
var_t embed_t
Definition: type_info.h:256
@ is_ptr
Definition: type_info.h:47
static T get(const T &v)
Definition: type_info.h:94
@ is_enum
Definition: type_info.h:107
static const int size
Definition: type_info.h:129
@ is_deep
Definition: type_info.h:89
var_t embed_t
Definition: type_info.h:66
@ is_scalar
Definition: type_info.h:88
cstring var_t
Definition: type_info.h:190
unsigned long uint64
Definition: arch.h:33
T & in_t
Definition: type_info.h:261
Definition: type_info.h:106
static const I min
Definition: type_info.h:144
static const I max
Definition: type_info.h:145
static T & ref(T &v)
Definition: type_info.h:67
static const int shift
Definition: type_info.h:134
@ is_virtual
Definition: type_info.h:50
cstring & mut_t
Definition: type_info.h:199
@ is_enum
Definition: type_info.h:45
unsigned char uint8
Definition: arch.h:27
string & mut_t
Definition: type_info.h:213
void put(var< T > &x, in< T > v)
Definition: type_info.h:287
static void put(T *&x, T &v)
Definition: type_info.h:259
@ is_deep
Definition: type_info.h:59
static const double max
Definition: type_info.h:173
static string name(void)
Definition: type_info.h:237
static cstring name(void)
Definition: type_info.h:63
Definition: type_info.h:244
Definition: type_info.h:86
unsigned int uint32
Definition: arch.h:31
ret< T > get(const var< T > &v)
Definition: type_info.h:288
T of
Definition: type_info.h:274
static string name(void)
Definition: type_info.h:276
static void put(T &x, const T &v)
Definition: type_info.h:69
struct elm::default_t default_t
T of
Definition: type_info.h:233
T var_t
Definition: type_info.h:65
static const bool is_signed
Definition: type_info.h:130
char test_class(int T::*)
static void put(T &x, T v)
Definition: type_info.h:95
Definition: type_info.h:246
typename type_info< T >::ret_t ret
Definition: type_info.h:285
static const long double max
Definition: type_info.h:179
static ret_t get(const var_t &v)
Definition: type_info.h:216
static mut_t ref(var_t &v)
Definition: type_info.h:215
@ is_ref
Definition: type_info.h:48
var_t embed_t
Definition: type_info.h:92
cstring & out_t
Definition: type_info.h:197
Definition: type_info.h:279
static const int size
Definition: type_info.h:142
@ is_deep
Definition: type_info.h:81
T of
Definition: type_info.h:223
static string name(void)
Definition: type_info.h:270
static const T & get(const T &v)
Definition: type_info.h:68
T ret_t
Definition: type_info.h:99
static const int shift
Definition: type_info.h:147
Definition: type_info.h:42
string var_t
Definition: type_info.h:208
@ is_scalar
Definition: type_info.h:62
typename type_info< T >::mut_t mut
Definition: type_info.h:286
const typedef string & ret_t
Definition: type_info.h:212
Definition: type_info.h:141
signed char int8
Definition: arch.h:26
@ is_virtual
Definition: type_info.h:60
static string name(void)
Definition: type_info.h:227
var_t embed_t
Definition: type_info.h:191
@ is_scalar
Definition: type_info.h:44