static inline GtDiscDistri *read_zero_disc_distri(GtDiscDistri *dist, FILE *fp, GtError *err) { int had_err = 0; GtUword idx, symbol; GtUint64 freq; GtUword num_of_zero_leaves; dist = gt_disc_distri_new(); had_err = gt_io_error_fread_one(num_of_zero_leaves, fp, err); for (idx = 0; !had_err && idx < num_of_zero_leaves; idx++) { had_err = gt_io_error_fread_one(symbol, fp, err); if (!had_err) had_err = gt_io_error_fread_one(freq, fp, err); if (!had_err) gt_disc_distri_add_multi(dist, symbol, freq); } if (had_err) { gt_disc_distri_delete(dist); dist = NULL; } return dist; }
int gt_disc_distri_unit_test(GtError *err) { GtDiscDistri *d; int had_err = 0; gt_error_check(err); d = gt_disc_distri_new(); ensure(had_err, gt_disc_distri_get(d, 0) == 0); ensure(had_err, gt_disc_distri_get(d, 100) == 0); if (!had_err) { gt_disc_distri_add(d, 0); gt_disc_distri_add_multi(d, 100, 256); } ensure(had_err, gt_disc_distri_get(d, 0) == 1); ensure(had_err, gt_disc_distri_get(d, 100) == 256); gt_disc_distri_delete(d); return had_err; }
void gt_disc_distri_add(GtDiscDistri *d, unsigned long key) { gt_disc_distri_add_multi(d, key, 1); }