{ \
int varsizemsg_arraysize; \
switch ( varsizemsg_pass ) { \
case 0: \
varsizemsg_arraysize = sizeof(*(varsizemsg_msg->ARRAY)) * \
varsizemsg_array[varsizemsg_arraycount]; \
varsizemsg_totalsize += ALIGN8(varsizemsg_arraysize); \
varsizemsg_arraycount++; \
break; \
case 1: \
varsizemsg_msg->ARRAY =
cast_array(varsizemsg_msg->ARRAY, \
(char *) varsizemsg_msg + varsizemsg_totalsize); \
varsizemsg_arraysize = sizeof(*(varsizemsg_msg->ARRAY)) * \
varsizemsg_array[varsizemsg_arraycount]; \
varsizemsg_totalsize += ALIGN8(varsizemsg_arraysize); \
varsizemsg_arraycount++; \
break; \
case 2: \
varsizemsg_msg->ARRAY =
cast_size(varsizemsg_msg->ARRAY, \
(char *) (varsizemsg_msg->ARRAY) - (char *) &(varsizemsg_msg->ARRAY) ); \
break; \
case 3: \
varsizemsg_msg->ARRAY =
cast_array(varsizemsg_msg->ARRAY, \
(char *) &(varsizemsg_msg->ARRAY) + (size_t) (varsizemsg_msg->ARRAY) ); \
break; \
default: \
break; \
} \
}
T * cast_size(T *, size_t a)
T * cast_array(T *, char *a)