void gt_hcr_encoder_delete(GtHcrEncoder *hcr_enc) { if (!hcr_enc) return; gt_huffman_delete(hcr_enc->seq_encoder->huffman); gt_sampling_delete(hcr_enc->seq_encoder->sampling); gt_free(hcr_enc->seq_encoder->fileinfos); gt_free(hcr_enc->seq_encoder); gt_encdesc_encoder_delete(hcr_enc->encdesc_encoder); gt_free(hcr_enc); }
static void hcr_seq_decoder_delete(GtHcrSeqDecoder *seq_dec) { if (seq_dec != NULL) { gt_free(seq_dec->fileinfos); gt_huffman_decoder_delete(seq_dec->huff_dec); gt_huffman_delete(seq_dec->huffman); gt_sampling_delete(seq_dec->sampling); gt_rbtree_delete(seq_dec->file_info_rbt); gt_str_delete(seq_dec->filename); data_iterator_delete(seq_dec->data_iter); gt_array_delete(seq_dec->symbols); gt_free(seq_dec); } }
static int seq_decoder_init_huffman(GtHcrSeqDecoder *seq_dec, GtWord end_of_encoding, GtBaseQualDistr *bqd, GtError *err) { int had_err = 0; seq_dec->data_iter = decoder_init_data_iterator(seq_dec->start_of_encoding, end_of_encoding, seq_dec->filename); gt_assert(seq_dec->data_iter); seq_dec->huffman = gt_huffman_new(bqd, hcr_base_qual_distr_func, (GtUword) bqd->ncols * bqd->nrows); seq_dec->huff_dec = gt_huffman_decoder_new_from_memory(seq_dec->huffman, get_next_file_chunk_for_huffman, seq_dec->data_iter, err); if (seq_dec->huff_dec == NULL) { had_err = -1; gt_huffman_delete(seq_dec->huffman); } return had_err; }