disp_t * disp_table_copy (const disp_t *src) { disp_t *res = disp_base_copy (src); data_table_ref (res->disp.table.table_ref); return res; }
disp_t * disp_sample_table_copy (const disp_t *src) { disp_t *res = disp_base_copy (src); struct disp_sample_table *dt = &res->disp.sample_table; if (dt->nb > 0) data_table_ref (dt->table_ref); return res; }
void data_view_copy (struct data_view *dest, const struct data_view *src) { dest->rows = src->rows; dest->columns = src->columns; dest->idx_start = src->idx_start; dest->idx_end = src->idx_end; if (src->map) { dest->map = emalloc (src->rows * sizeof(int)); memcpy (dest->map, src->map, src->rows * sizeof(int)); } else { dest->map = NULL; } dest->table = src->table; data_table_ref (src->table); }