21 #ifndef ELM_UTIL_VARIANT_H_
22 #define ELM_UTIL_VARIANT_H_
24 #include <elm/types.h>
50 static const T&
get(
const data_t& d) {
return *
static_cast<const T *
>(d.
cp); }
57 static T&
get(
const data_t& d) {
return *
static_cast<T *
>(d.
p); }
71 template <>
struct access_t<double> {
typedef double rt;
static double get(
const data_t& d) {
return d.
d; }
static void set(
data_t& d,
double x) { d.
d = x; } };
80 static T *
get(
const data_t& d) {
return static_cast<T *
>(d.
p); }
83 template <
class T>
struct access_t<const T *> {
85 static const T *
get(
const data_t& d) {
return static_cast<const T *
>(d.
cp); }
const char * chars(void) const
Definition: CString.h:27
CString toCString(void) const
Definition: String.h:90
Variant(const T &x)
Definition: Variant.h:95
Variant()
Definition: Variant.h:94
void * asPointer(void) const
Definition: Variant.h:96
variant::access_t< T >::rt as() const
Definition: Variant.h:97
unsigned long uint64
Definition: arch.h:33
short int16
Definition: arch.h:28
unsigned char uint8
Definition: arch.h:27
long int64
Definition: arch.h:32
signed char int8
Definition: arch.h:26
unsigned int uint32
Definition: arch.h:31
unsigned short uint16
Definition: arch.h:29
int int32
Definition: arch.h:30
static T * get(const data_t &d)
Definition: Variant.h:80
T * rt
Definition: Variant.h:79
static void set(data_t &d, T *x)
Definition: Variant.h:81
static T & get(const data_t &d)
Definition: Variant.h:57
static void set(data_t &d, T &x)
Definition: Variant.h:58
T & rt
Definition: Variant.h:56
static bool get(const data_t &d)
Definition: Variant.h:61
const T * rt
Definition: Variant.h:84
static void set(data_t &d, const T *x)
Definition: Variant.h:86
static const T * get(const data_t &d)
Definition: Variant.h:85
static cstring get(const data_t &d)
Definition: Variant.h:75
static string get(const data_t &d)
Definition: Variant.h:76
static cstring get(const data_t &d)
Definition: Variant.h:73
static double get(const data_t &d)
Definition: Variant.h:71
static float get(const data_t &d)
Definition: Variant.h:70
static string get(const data_t &d)
Definition: Variant.h:74
static t::int16 get(const data_t &d)
Definition: Variant.h:63
static t::int32 get(const data_t &d)
Definition: Variant.h:64
static t::int64 get(const data_t &d)
Definition: Variant.h:65
static t::int8 get(const data_t &d)
Definition: Variant.h:62
static t::uint16 get(const data_t &d)
Definition: Variant.h:67
static t::uint32 get(const data_t &d)
Definition: Variant.h:68
static t::uint64 get(const data_t &d)
Definition: Variant.h:69
static t::uint8 get(const data_t &d)
Definition: Variant.h:66
static const T & get(const data_t &d)
Definition: Variant.h:50
const T & rt
Definition: Variant.h:49
static void set(data_t &d, const T &x)
Definition: Variant.h:51
bool b
Definition: Variant.h:31
void * p
Definition: Variant.h:43
t::int16 i16
Definition: Variant.h:33
t::uint8 u8
Definition: Variant.h:36
double d
Definition: Variant.h:41
t::uint16 u16
Definition: Variant.h:37
t::int64 i64
Definition: Variant.h:35
const void * cp
Definition: Variant.h:44
t::int8 i8
Definition: Variant.h:32
t::uint64 u64
Definition: Variant.h:39
const char * s
Definition: Variant.h:42
t::int32 i32
Definition: Variant.h:34
t::uint32 u32
Definition: Variant.h:38
float f
Definition: Variant.h:40