aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/eina/src/examples/eina_value_03.c
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/eina/src/examples/eina_value_03.c')
-rw-r--r--libraries/eina/src/examples/eina_value_03.c178
1 files changed, 0 insertions, 178 deletions
diff --git a/libraries/eina/src/examples/eina_value_03.c b/libraries/eina/src/examples/eina_value_03.c
deleted file mode 100644
index 85f42b3..0000000
--- a/libraries/eina/src/examples/eina_value_03.c
+++ /dev/null
@@ -1,178 +0,0 @@
1//Compile with:
2//gcc eina_value_03.c -o eina_value_03 `pkg-config --cflags --libs eina`
3
4#include <Eina.h>
5#include <sys/time.h>
6
7static Eina_Bool
8_tz_setup(const Eina_Value_Type *type, void *mem)
9{
10 memset(mem, 0, type->value_size);
11 return EINA_TRUE;
12}
13
14static Eina_Bool
15_tz_flush(const Eina_Value_Type *type, void *mem)
16{
17 return EINA_TRUE;
18}
19
20static Eina_Bool
21_tz_copy(const Eina_Value_Type *type, const void *src, void * dst)
22{
23 struct timezone *tzsrc = src;
24 struct timezone *tzdst = dst;
25 *tzdst = *tzsrc;
26 return EINA_TRUE;
27}
28
29static Eina_Bool
30_tz_compare(const Eina_Value_Type *type, const void *a, const void *b)
31{
32 struct timezone tza = *(struct timezone*)a;
33 struct timezone tzb = *(struct timezone*)b;
34
35 if (tza.tz_minuteswest < tzb.tz_minuteswest)
36 return -1;
37 else if (tza.tz_minuteswest > tzb.tz_minuteswest)
38 return 1;
39 return 0;
40}
41
42static Eina_Bool
43_tz_pset(const Eina_Value_Type *type, void *mem, const void *ptr)
44{
45 *(struct timezone*)mem = *(struct timezone*)ptr;
46 return EINA_TRUE;
47}
48
49static Eina_Bool
50_tz_vset(const Eina_Value_Type *type, void *mem, va_list args)
51{
52 const struct timezone tz = va_arg(args, struct timezone);
53 return _tz_pset(type, mem, &tz);
54}
55
56static Eina_Bool
57_tz_pget(const Eina_Value_Type *type, const void *mem, void *ptr)
58{
59 memcpy(ptr, mem, type->value_size);
60 return EINA_TRUE;
61}
62
63static Eina_Bool
64_tz_convert_to(const Eina_Value_Type *type, const Eina_Value_Type *convert, const void *type_mem, void *convert_mem)
65{
66 struct timezone v = *(struct timezone*)type_mem;
67
68 eina_error_set(0);
69
70 if (convert == EINA_VALUE_TYPE_UCHAR)
71 {
72 unsigned char other_mem = v.tz_minuteswest;
73 return eina_value_type_pset(convert, convert_mem, &other_mem);
74 }
75 else if (convert == EINA_VALUE_TYPE_USHORT)
76 {
77 unsigned short other_mem = v.tz_minuteswest;
78 return eina_value_type_pset(convert, convert_mem, &other_mem);
79 }
80 else if (convert == EINA_VALUE_TYPE_UINT)
81 {
82 unsigned int other_mem = v.tz_minuteswest;
83 return eina_value_type_pset(convert, convert_mem, &other_mem);
84 }
85 else if ((convert == EINA_VALUE_TYPE_ULONG) || (convert == EINA_VALUE_TYPE_TIMESTAMP))
86 {
87 unsigned long other_mem = v.tz_minuteswest;
88 return eina_value_type_pset(convert, convert_mem, &other_mem);
89 }
90 else if (convert == EINA_VALUE_TYPE_UINT64)
91 {
92 uint64_t other_mem = v.tz_minuteswest;
93 return eina_value_type_pset(convert, convert_mem, &other_mem);
94 }
95 else if (convert == EINA_VALUE_TYPE_CHAR)
96 {
97 char other_mem = v.tz_minuteswest;
98 return eina_value_type_pset(convert, convert_mem, &other_mem);
99 }
100 else if (convert == EINA_VALUE_TYPE_SHORT)
101 {
102 short other_mem = v.tz_minuteswest;
103 return eina_value_type_pset(convert, convert_mem, &other_mem);
104 }
105 else if (convert == EINA_VALUE_TYPE_INT)
106 {
107 int other_mem = v.tz_minuteswest;
108 return eina_value_type_pset(convert, convert_mem, &other_mem);
109 }
110 else if (convert == EINA_VALUE_TYPE_LONG)
111 {
112 long other_mem = v.tz_minuteswest;
113 return eina_value_type_pset(convert, convert_mem, &other_mem);
114 }
115 else if (convert == EINA_VALUE_TYPE_INT64)
116 {
117 int64_t other_mem = v.tz_minuteswest;
118 return eina_value_type_pset(convert, convert_mem, &other_mem);
119 }
120 else if (convert == EINA_VALUE_TYPE_FLOAT)
121 return eina_value_type_pset(convert, convert_mem, &v.tz_minuteswest);
122 else if (convert == EINA_VALUE_TYPE_DOUBLE)
123 return eina_value_type_pset(convert, convert_mem, &v.tz_minuteswest);
124 else if (convert == EINA_VALUE_TYPE_STRINGSHARE ||
125 convert == EINA_VALUE_TYPE_STRING)
126 {
127 const char *other_mem;
128 char buf[64];
129 snprintf(buf, sizeof(buf), "%d", v.tz_minuteswest);
130 other_mem = buf; /* required due &buf == buf */
131 return eina_value_type_pset(convert, convert_mem, &other_mem);
132 }
133
134 eina_error_set(EINA_ERROR_VALUE_FAILED);
135 return EINA_FALSE;
136}
137
138static Eina_Value_Type TZ_TYPE = {
139 EINA_VALUE_TYPE_VERSION,
140 sizeof(struct timezone),
141 "struct timezone",
142 _tz_setup,
143 _tz_flush,
144 _tz_copy,
145 _tz_compare,
146 _tz_convert_to,
147 NULL, //No convert from
148 _tz_vset,
149 _tz_pset,
150 _tz_pget
151};
152
153int main(int argc, char **argv)
154{
155 Eina_Value vtv, vtz;
156 struct timeval tv;
157 struct timezone tz;
158 char *s;
159
160 eina_init();
161
162 eina_value_setup(&vtv, EINA_VALUE_TYPE_TIMEVAL);
163 eina_value_setup(&vtz, &TZ_TYPE);
164
165 gettimeofday(&tv, &tz);
166 eina_value_set(&vtv, tv);
167 eina_value_set(&vtz, tz);
168
169 s = eina_value_to_string(&vtv);
170 printf("time: %s\n", s);
171 free(s);
172 s = eina_value_to_string(&vtz);
173 printf("timezone: %s\n", s);
174 free(s);
175
176 eina_value_flush(&vtz);
177 eina_value_flush(&vtv);
178}