cedric pushed a commit to branch master.
commit dd4a641bab28a8a98da272ee88e9ec24a953f591
Author: Cedric Bail <[email protected]>
Date: Tue Jul 16 16:20:50 2013 +0900
eet: quick fix for windows.
---
src/lib/eet/eet_data.c | 110 +++++++++++++++++++++++++++++++------------------
1 file changed, 69 insertions(+), 41 deletions(-)
diff --git a/src/lib/eet/eet_data.c b/src/lib/eet/eet_data.c
index b8172ea..9a31b3d 100644
--- a/src/lib/eet/eet_data.c
+++ b/src/lib/eet/eet_data.c
@@ -1244,35 +1244,70 @@ eet_data_put_f8p24(Eet_Dictionary *ed,
return eet_data_put_f32p32(ed, &tmp, size_ret);
}
-static struct {
- const Eina_Value_Type **eina_type;
- int eet_type;
-} eina_value_to_eet_type[] = {
- { &EINA_VALUE_TYPE_UCHAR, EET_T_UCHAR },
- { &EINA_VALUE_TYPE_USHORT, EET_T_USHORT },
- { &EINA_VALUE_TYPE_UINT, EET_T_UINT },
+static const Eina_Value_Type *
+_eet_type_to_eina_value_get(int eet_type)
+{
+ switch (eet_type)
+ {
+ case EET_T_UCHAR: return EINA_VALUE_TYPE_UCHAR;
+ case EET_T_USHORT: return EINA_VALUE_TYPE_USHORT;
+ case EET_T_UINT: return EINA_VALUE_TYPE_UINT;
#if SIZEOF_LONG == SIZEOF_INT
- { &EINA_VALUE_TYPE_ULONG, EET_T_UINT },
- { &EINA_VALUE_TYPE_TIMESTAMP, EET_T_UINT },
+ /* case EET_T_UINT: return EINA_VALUE_TYPE_ULONG; */
+ /* case EET_T_UINT: return EINA_VALUE_TYPE_TIMESTAMP; */
#else
- { &EINA_VALUE_TYPE_ULONG, EET_T_ULONG_LONG },
- { &EINA_VALUE_TYPE_TIMESTAMP, EET_T_ULONG_LONG },
+ /* case EET_T_ULONG_LONG: return EINA_VALUE_TYPE_ULONG; */
+ /* case EET_T_ULONG_LONG: return EINA_VALUE_TYPE_TIMESTAMP; */
#endif
- { &EINA_VALUE_TYPE_UINT64, EET_T_ULONG_LONG },
- { &EINA_VALUE_TYPE_CHAR, EET_T_CHAR },
- { &EINA_VALUE_TYPE_SHORT, EET_T_SHORT },
- { &EINA_VALUE_TYPE_INT, EET_T_INT },
+ case EET_T_ULONG_LONG: return EINA_VALUE_TYPE_UINT64;
+ case EET_T_CHAR: return EINA_VALUE_TYPE_CHAR;
+ case EET_T_SHORT: return EINA_VALUE_TYPE_SHORT;
+ case EET_T_INT: return EINA_VALUE_TYPE_INT;
#if SIZEOF_LONG == SIZEOF_INT
- { &EINA_VALUE_TYPE_LONG, EET_T_INT },
+ /* case EET_T_INT: return EINA_VALUE_TYPE_LONG; */
#else
- { &EINA_VALUE_TYPE_LONG, EET_T_LONG_LONG },
+ /* case EET_T_LONG_LONG: return EINA_VALUE_TYPE_LONG; */
#endif
- { &EINA_VALUE_TYPE_INT64, EET_T_LONG_LONG },
- { &EINA_VALUE_TYPE_FLOAT, EET_T_FLOAT },
- { &EINA_VALUE_TYPE_DOUBLE, EET_T_DOUBLE },
- { &EINA_VALUE_TYPE_STRING, EET_T_STRING },
- { &EINA_VALUE_TYPE_STRINGSHARE, EET_T_STRING },
-};
+ case EET_T_LONG_LONG: return EINA_VALUE_TYPE_INT64;
+ case EET_T_FLOAT: return EINA_VALUE_TYPE_FLOAT;
+ case EET_T_DOUBLE: return EINA_VALUE_TYPE_DOUBLE;
+ case EET_T_STRING: return EINA_VALUE_TYPE_STRING;
+ /* case EET_T_STRING: return EINA_VALUE_TYPE_STRINGSHARE; */
+ }
+
+ return NULL;
+}
+
+static int
+_eina_value_to_eet_type_get(const Eina_Value_Type *eina_type)
+{
+ if (eina_type == EINA_VALUE_TYPE_UCHAR) return EET_T_UCHAR;
+ else if (eina_type == EINA_VALUE_TYPE_USHORT) return EET_T_USHORT;
+ else if (eina_type == EINA_VALUE_TYPE_UINT) return EET_T_UINT;
+#if SIZEOF_LONG == SIZEOF_INT
+ else if (eina_type == EINA_VALUE_TYPE_ULONG) return EET_T_UINT;
+ else if (eina_type == EINA_VALUE_TYPE_TIMESTAMP) return EET_T_UINT;
+#else
+ else if (eina_type == EINA_VALUE_TYPE_ULONG) return EET_T_ULONG_LONG;
+ else if (eina_type == EINA_VALUE_TYPE_TIMESTAMP) return EET_T_ULONG_LONG;
+#endif
+ else if (eina_type == EINA_VALUE_TYPE_UINT64) return EET_T_ULONG_LONG;
+ else if (eina_type == EINA_VALUE_TYPE_CHAR) return EET_T_CHAR;
+ else if (eina_type == EINA_VALUE_TYPE_SHORT) return EET_T_SHORT;
+ else if (eina_type == EINA_VALUE_TYPE_INT) return EET_T_INT;
+#if SIZEOF_LONG == SIZEOF_INT
+ else if (eina_type == EINA_VALUE_TYPE_LONG) return EET_T_INT;
+#else
+ else if (eina_type == EINA_VALUE_TYPE_LONG) return EET_T_LONG_LONG;
+#endif
+ else if (eina_type == EINA_VALUE_TYPE_INT64) return EET_T_LONG_LONG;
+ else if (eina_type == EINA_VALUE_TYPE_FLOAT) return EET_T_FLOAT;
+ else if (eina_type == EINA_VALUE_TYPE_DOUBLE) return EET_T_DOUBLE;
+ else if (eina_type == EINA_VALUE_TYPE_STRING) return EET_T_STRING;
+ else if (eina_type == EINA_VALUE_TYPE_STRINGSHARE) return EET_T_STRING;
+ // always fallback to try a conversion to string if possible
+ return EET_T_STRING;
+}
static int
eet_data_get_value(const Eet_Dictionary *ed,
@@ -1280,10 +1315,10 @@ eet_data_get_value(const Eet_Dictionary *ed,
const void *src_end,
void *dst)
{
+ const Eina_Value_Type *eina_type;
void *tmp;
int eet_type;
int eet_size, type_size;
- unsigned int i;
eet_size = eet_data_get_int(ed, src, src_end, &eet_type);
if (eet_size < 0 ||
@@ -1303,16 +1338,16 @@ eet_data_get_value(const Eet_Dictionary *ed,
return eet_size + type_size;
}
- for (i = 0; i < sizeof (eina_value_to_eet_type) / sizeof
(eina_value_to_eet_type[0]); ++i)
- if (eet_type == eina_value_to_eet_type[i].eet_type)
- {
- Eina_Value **value = dst;
+ eina_type = _eet_type_to_eina_value_get(eet_type);
+ if (eina_type)
+ {
+ Eina_Value **value = dst;
- *value = eina_value_new(*eina_value_to_eet_type[i].eina_type);
- eina_value_pset(*value, tmp);
+ *value = eina_value_new(eina_type);
+ eina_value_pset(*value, tmp);
- return eet_size + type_size;
- }
+ return eet_size + type_size;
+ }
return -1;
}
@@ -1327,9 +1362,8 @@ eet_data_put_value(Eet_Dictionary *ed,
void *int_data;
void *type_data;
int int_size, type_size;
- int eet_type = EET_T_STRING; // always fallback to try a conversion to
string if possible
+ int eet_type;
void *tmp;
- unsigned int i;
Eina_Bool v2s = EINA_FALSE;
// map empty Eina_Value to EET_T_NULL;
@@ -1340,13 +1374,7 @@ eet_data_put_value(Eet_Dictionary *ed,
}
value_type = eina_value_type_get(value);
-
- for (i = 0; i < sizeof (eina_value_to_eet_type) / sizeof
(eina_value_to_eet_type[0]); ++i)
- if (value_type == *eina_value_to_eet_type[i].eina_type)
- {
- eet_type = eina_value_to_eet_type[i].eet_type;
- break;
- }
+ eet_type = _eina_value_to_eet_type_get(value_type);
lookup_done:
tmp = alloca(eet_basic_codec[eet_type - 1].size);
--
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk