GT_INLINE void gt_dna_read_delete(gt_dna_read* read) { GT_DNA_READ_CHECK(read); gt_string_delete(read->tag); gt_string_delete(read->read); gt_string_delete(read->qualities); gt_attributes_delete(read->attributes); }
GT_INLINE void gt_sam_header_clear(gt_sam_headers* const sam_headers) { GT_SAM_HEADERS_CHECK(sam_headers); // Header gt_string_clear(sam_headers->header); // Read group GT_VECTOR_ITERATE(sam_headers->read_group,record_h,nh,gt_string*) { gt_string_delete(*record_h); } gt_vector_clear(sam_headers->read_group); // Program GT_VECTOR_ITERATE(sam_headers->program,record_p,np,gt_string*) { gt_string_delete(*record_p); } gt_vector_clear(sam_headers->program); // Comments GT_VECTOR_ITERATE(sam_headers->comments,comment,nc,gt_string*) { gt_string_delete(*comment); } gt_vector_clear(sam_headers->comments); // Seq Archive sam_headers->sequence_archive=NULL; }
GT_INLINE void gt_sam_attribute_func_params_delete(gt_sam_attribute_func_params* const func_params) { GT_NULL_CHECK(func_params); /* String (gt_string) buffer */ if (func_params->return_s!=NULL) gt_string_delete(func_params->return_s); /* Attributes */ gt_attributes_delete(func_params->attributes); gt_free(func_params); }
GT_INLINE void gt_segmented_sequence_delete(gt_segmented_sequence* const sequence) { GT_SEGMENTED_SEQ_CHECK(sequence); GT_VECTOR_ITERATE(sequence->blocks,block,block_num,gt_compact_dna_string*) { if (*block) gt_cdna_string_delete(*block); } gt_vector_delete(sequence->blocks); gt_string_delete(sequence->seq_name); gt_free(sequence); }
GT_INLINE void gt_sam_header_delete(gt_sam_headers* const sam_headers) { GT_SAM_HEADERS_CHECK(sam_headers); // Clear gt_sam_header_clear(sam_headers); // Delete gt_string_delete(sam_headers->header); gt_vector_delete(sam_headers->read_group); gt_vector_delete(sam_headers->program); gt_vector_delete(sam_headers->comments); }
GT_INLINE void gt_segmented_sequence_clear(gt_segmented_sequence* const sequence) { GT_SEGMENTED_SEQ_CHECK(sequence); GT_VECTOR_ITERATE(sequence->blocks,block,block_num,uint64_t*) { if (*block) gt_free(*block); } gt_vector_clear(sequence->blocks); gt_string_clear(sequence->seq_name); if(sequence->extra) { gt_string_delete(sequence->extra); sequence->extra = NULL; } }
GT_INLINE void gt_sam_header_clear(gt_sam_headers* const sam_headers) { GT_SAM_HEADERS_CHECK(sam_headers); // Header if(sam_headers->header) { gt_sam_header_record_delete(sam_headers->header); sam_headers->header = NULL; } // Read group GT_VECTOR_ITERATE(sam_headers->read_group,record_h,nh,gt_sam_header_record*) { gt_sam_header_record_delete(*record_h); } gt_vector_clear(sam_headers->read_group); if(sam_headers->read_group_id_hash) gt_shash_clear(sam_headers->read_group_id_hash,true); // Program GT_VECTOR_ITERATE(sam_headers->program,record_p,np,gt_sam_header_record*) { gt_sam_header_record_delete(*record_p); } gt_vector_clear(sam_headers->program); if(sam_headers->program_id_hash) gt_shash_clear(sam_headers->program_id_hash,true); // Seq Dictionary GT_VECTOR_ITERATE(sam_headers->sequence_dictionary,record_s,ns,gt_sam_header_record*) { gt_sam_header_record_delete(*record_s); } gt_vector_clear(sam_headers->sequence_dictionary); if(sam_headers->sequence_dictionary_sn_hash) gt_shash_clear(sam_headers->sequence_dictionary_sn_hash,true); // Comments GT_VECTOR_ITERATE(sam_headers->comments,comment,nc,gt_string*) { gt_string_delete(*comment); } gt_vector_clear(sam_headers->comments); }