- assert (dst != NULL);
- assert (dst->this == dst);
- assert (dst->case_data != NULL);
- assert (dst->case_data->ref_cnt > 0);
- assert (dst_idx + value_cnt <= dst->case_data->value_cnt);
-
- assert (src != NULL);
- assert (src->this == src);
- assert (src->case_data != NULL);
- assert (src->case_data->ref_cnt > 0);
- assert (src_idx + value_cnt <= dst->case_data->value_cnt);
-
- if (dst->case_data->ref_cnt > 1)
- case_unshare (dst);
- if (dst->case_data != src->case_data || dst_idx != src_idx)
- memmove (dst->case_data->values + dst_idx,
- src->case_data->values + src_idx,
- sizeof *dst->case_data->values * value_cnt);