diff -r 3f3b1b8ccba4 -r 302347f48193 svghmi/svghmi.c --- a/svghmi/svghmi.c Fri Aug 23 14:01:31 2019 +0200 +++ b/svghmi/svghmi.c Mon Aug 26 08:54:02 2019 +0200 @@ -39,39 +39,9 @@ } } -/* TODO : deduplicate that code with plc_debug.c */ +#define __Unpack_desc_type hmi_tree_item_t -#define __Unpack_case_t(TYPENAME) \ - case TYPENAME##_ENUM :\ - *flags = ((__IEC_##TYPENAME##_t *)varp)->flags;\ - forced_value_p = *real_value_p = &((__IEC_##TYPENAME##_t *)varp)->value;\ - break; - -#define __Unpack_case_p(TYPENAME)\ - case TYPENAME##_O_ENUM :\ - *flags = __IEC_OUTPUT_FLAG;\ - case TYPENAME##_P_ENUM :\ - *flags |= ((__IEC_##TYPENAME##_p *)varp)->flags;\ - *real_value_p = ((__IEC_##TYPENAME##_p *)varp)->value;\ - forced_value_p = &((__IEC_##TYPENAME##_p *)varp)->fvalue;\ - break; - -static void* UnpackVar(hmi_tree_item_t *dsc, void **real_value_p, char *flags) -{ - void *varp = dsc->ptr; - void *forced_value_p = NULL; - *flags = 0; - /* find data to copy*/ - switch(dsc->type){ - __ANY(__Unpack_case_t) - __ANY(__Unpack_case_p) - default: - break; - } - if (*flags & __IEC_FORCE_FLAG) - return forced_value_p; - return *real_value_p; -} +%(var_access_code)s void write_iterator(hmi_tree_item_t *dsc) {