equal
deleted
inserted
replaced
|
1 |
|
2 #define __Unpack_case_t(TYPENAME) \ |
|
3 case TYPENAME##_ENUM :\ |
|
4 *flags = ((__IEC_##TYPENAME##_t *)varp)->flags;\ |
|
5 forced_value_p = *real_value_p = &((__IEC_##TYPENAME##_t *)varp)->value;\ |
|
6 break; |
|
7 |
|
8 #define __Unpack_case_p(TYPENAME)\ |
|
9 case TYPENAME##_O_ENUM :\ |
|
10 *flags = __IEC_OUTPUT_FLAG;\ |
|
11 case TYPENAME##_P_ENUM :\ |
|
12 *flags |= ((__IEC_##TYPENAME##_p *)varp)->flags;\ |
|
13 *real_value_p = ((__IEC_##TYPENAME##_p *)varp)->value;\ |
|
14 forced_value_p = &((__IEC_##TYPENAME##_p *)varp)->fvalue;\ |
|
15 break; |
|
16 |
|
17 static void* UnpackVar(__Unpack_desc_type *dsc, void **real_value_p, char *flags) |
|
18 { |
|
19 void *varp = dsc->ptr; |
|
20 void *forced_value_p = NULL; |
|
21 *flags = 0; |
|
22 /* find data to copy*/ |
|
23 switch(dsc->type){ |
|
24 __ANY(__Unpack_case_t) |
|
25 __ANY(__Unpack_case_p) |
|
26 default: |
|
27 break; |
|
28 } |
|
29 if (*flags & __IEC_FORCE_FLAG) |
|
30 return forced_value_p; |
|
31 return *real_value_p; |
|
32 } |
|
33 |