C++ needs casts in order to assign a void* to another pointer type. As typeof operator is a gcc extension, we define EINA_TYPEOF(x) as "typeof" on gcc with c++ source and as nothing otherwise. --- src/include/eina_list.h | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/include/eina_list.h b/src/include/eina_list.h index 5088c44..caf237b 100644 --- a/src/include/eina_list.h +++ b/src/include/eina_list.h @@ -19,6 +19,12 @@ #ifndef EINA_LIST_H_ #define EINA_LIST_H_ +#if !defined(_MSC_VER) && defined(__cplusplus) +#define EINA_TYPEOF(x) (__typeof__(x)) +#else +#define EINA_TYPEOF(x) +#endif + #include <stdlib.h> #include "eina_config.h" @@ -156,7 +162,7 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI * For destructive operations such as this, consider * using EINA_LIST_FOREACH_SAFE(). */ -#define EINA_LIST_FOREACH(list, l, data) for (l = list, data = eina_list_data_get(l); l; l = eina_list_next(l), data = eina_list_data_get(l)) +#define EINA_LIST_FOREACH(list, l, data) for (l = list, data = EINA_TYPEOF(data)eina_list_data_get(l); l; l = eina_list_next(l), data = EINA_TYPEOF(data)eina_list_data_get(l)) /** * @def EINA_LIST_REVERSE_FOREACH @@ -199,7 +205,7 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI * For destructive operations such as this, consider * using EINA_LIST_REVERSE_FOREACH_SAFE(). */ -#define EINA_LIST_REVERSE_FOREACH(list, l, data) for (l = eina_list_last(list), data = eina_list_data_get(l); l; l = eina_list_prev(l), data = eina_list_data_get(l)) +#define EINA_LIST_REVERSE_FOREACH(list, l, data) for (l = eina_list_last(list), data = EINA_TYPEOF(data)eina_list_data_get(l); l; l = eina_list_prev(l), data = EINA_TYPEOF(data)eina_list_data_get(l)) /** * @def EINA_LIST_FOREACH_SAFE @@ -236,7 +242,7 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI * } * @endcode */ -#define EINA_LIST_FOREACH_SAFE(list, l, l_next, data) for (l = list, l_next = eina_list_next(l), data = eina_list_data_get(l); l; l = l_next, l_next = eina_list_next(l), data = eina_list_data_get(l)) +#define EINA_LIST_FOREACH_SAFE(list, l, l_next, data) for (l = list, l_next = eina_list_next(l), data = EINA_TYPEOF(data)eina_list_data_get(l); l; l = l_next, l_next = eina_list_next(l), data = EINA_TYPEOF(data)eina_list_data_get(l)) /** * @def EINA_LIST_REVERSE_FOREACH_SAFE @@ -275,7 +281,7 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI * } * @endcode */ -#define EINA_LIST_REVERSE_FOREACH_SAFE(list, l, l_prev, data) for (l = eina_list_last(list), l_prev = eina_list_prev(l), data = eina_list_data_get(l); l; l = l_prev, l_prev = eina_list_prev(l), data = eina_list_data_get(l)) +#define EINA_LIST_REVERSE_FOREACH_SAFE(list, l, l_prev, data) for (l = eina_list_last(list), l_prev = eina_list_prev(l), data = EINA_TYPEOF(data)eina_list_data_get(l); l; l = l_prev, l_prev = eina_list_prev(l), data = EINA_TYPEOF(data)eina_list_data_get(l)) /** * @def EINA_LIST_FREE @@ -302,7 +308,7 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI * * @see eina_list_free() */ -#define EINA_LIST_FREE(list, data) for (data = eina_list_data_get(list); list; list = eina_list_remove_list(list, list), data = eina_list_data_get(list)) +#define EINA_LIST_FREE(list, data) for (data = EINA_TYPEOF(data)eina_list_data_get(list); list; list = eina_list_remove_list(list, list), data = EINA_TYPEOF(data)eina_list_data_get(list)) #include "eina_inline_list.x" -- 1.7.0 ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel