#define ROT_CIP_STRUCTURE_NAME t_rot_channel_init_params
#define ROT_CIP_PROTOCLASS_NAME channel_manager::RotChannelInitParams
#define XFIELDS_ROTCIP \
X(unsigned char, rot_idx, "%d", ROT_CIP_STRUCTURE_NAME, ROT_CIP_PROTOCLASS_NAME) \
X(unsigned short, av_num, "%d", ROT_CIP_STRUCTURE_NAME, ROT_CIP_PROTOCLASS_NAME) \
X(unsigned long, pw_min_us, "%d", ROT_CIP_STRUCTURE_NAME, ROT_CIP_PROTOCLASS_NAME) \
X(unsigned long, period_min_us, "%d", ROT_CIP_STRUCTURE_NAME, ROT_CIP_PROTOCLASS_NAME) \
X(unsigned long, period_max_us, "%d", ROT_CIP_STRUCTURE_NAME, ROT_CIP_PROTOCLASS_NAME)
typedef struct {
#define X(type, name, format, stype, pclass) type name;
XFIELDS_ROTCIP
#undef X
} ROT_CIP_STRUCTURE_NAME;int extractStructureFromClass(void* dst_structure, void* src_class, t_reflected_structures entity_type) {
if ((dst_structure == NULL) || (src_class == NULL)) return -EINVAL;
int ret = 0;
#define X(type, name, format, stype, pclass) \
if (static_cast<pclass*>(src_class)->has_##name()) static_cast<stype*>(dst_structure)->name = static_cast<pclass*>(src_class)->name(); \
else return -ENOENT;
switch (entity_type) {
case TRS_CHANNEL_MANAGER_INIT_PARAMS: {
XFIELDS_ROTCIP
break; }
default: {
ret = -ERANGE;
break; }
}
#undef X
return ret;
}Y(ADC_CIP_SUBSTRUCT_NAME, ADC_CIP_SUBVARIABLE_NAME, ADC_CIP_SUBCLASS_NAME, unsigned short, control1, "%d", ADC_CIP_STRUCTURE_NAME, ADC_CIP_PROTOCLASS_NAME)