69 if(dsc->type != UNKNOWN_ENUM) |
69 if(dsc->type != UNKNOWN_ENUM) |
70 (*fp)(dsc); |
70 (*fp)(dsc); |
71 } |
71 } |
72 } |
72 } |
73 |
73 |
74 #define __Unpack_case_t(TYPENAME) \ |
74 #define __Unpack_desc_type dbgvardsc_t |
75 case TYPENAME##_ENUM :\ |
75 |
76 *flags = ((__IEC_##TYPENAME##_t *)varp)->flags;\ |
76 %(var_access_code)s |
77 forced_value_p = *real_value_p = &((__IEC_##TYPENAME##_t *)varp)->value;\ |
|
78 break; |
|
79 |
|
80 #define __Unpack_case_p(TYPENAME)\ |
|
81 case TYPENAME##_O_ENUM :\ |
|
82 *flags = __IEC_OUTPUT_FLAG;\ |
|
83 case TYPENAME##_P_ENUM :\ |
|
84 *flags |= ((__IEC_##TYPENAME##_p *)varp)->flags;\ |
|
85 *real_value_p = ((__IEC_##TYPENAME##_p *)varp)->value;\ |
|
86 forced_value_p = &((__IEC_##TYPENAME##_p *)varp)->fvalue;\ |
|
87 break; |
|
88 |
|
89 void* UnpackVar(dbgvardsc_t *dsc, void **real_value_p, char *flags) |
|
90 { |
|
91 void *varp = dsc->ptr; |
|
92 void *forced_value_p = NULL; |
|
93 *flags = 0; |
|
94 /* find data to copy*/ |
|
95 switch(dsc->type){ |
|
96 __ANY(__Unpack_case_t) |
|
97 __ANY(__Unpack_case_p) |
|
98 default: |
|
99 break; |
|
100 } |
|
101 if (*flags & __IEC_FORCE_FLAG) |
|
102 return forced_value_p; |
|
103 return *real_value_p; |
|
104 } |
|
105 |
77 |
106 void Remind(unsigned int offset, unsigned int count, void * p); |
78 void Remind(unsigned int offset, unsigned int count, void * p); |
107 |
79 |
108 void RemindIterator(dbgvardsc_t *dsc) |
80 void RemindIterator(dbgvardsc_t *dsc) |
109 { |
81 { |