svghmi/svghmi.c
branchsvghmi
changeset 2767 302347f48193
parent 2766 3f3b1b8ccba4
child 2768 31785529a657
--- 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)
 {