#include #include "scanned-sequence.h" #include "utils.h" /* * Create a scanned sequence structure. * The seq_id is copied. */ SCANNED_SEQ_T* sseq_create(const char *seq_id, long length, double pvalue, long site_count) { SCANNED_SEQ_T *sseq; sseq = mm_malloc(sizeof(SCANNED_SEQ_T)); memset(sseq, 0, sizeof(SCANNED_SEQ_T)); sseq->seq_id = strdup(seq_id); sseq->length = length; sseq->pvalue = pvalue; sseq->site_count = site_count; sseq->sites = (SCANNED_SITE_T*)mm_malloc(sizeof(SCANNED_SITE_T) * site_count); memset(sseq->sites, 0, sizeof(SCANNED_SITE_T) * site_count); return sseq; } /* * Destroy the scanned sequence structure and all included scanned * site structures. */ void sseq_destroy(void *p) { SCANNED_SEQ_T *sseq; sseq = (SCANNED_SEQ_T *)p; memset(sseq->sites, 0, sizeof(SCANNED_SITE_T) * sseq->site_count); free(sseq->sites); free(sseq->seq_id); memset(sseq, 0, sizeof(SCANNED_SEQ_T)); free(sseq); } /* * Set the scanned site at a offset. */ void sseq_set(SCANNED_SEQ_T *sseq, int index, int m_num, char strand, long position, double pvalue) { SCANNED_SITE_T *ssite; ssite = sseq->sites+index; ssite->m_num = m_num; ssite->strand = strand; ssite->position = position; ssite->pvalue = pvalue; }