示例#1
0
void ajPatCompDel (AjPPatComp *pthys)
{
    ajuint i;

    AjPPatComp thys;

    if(!pthys)
        return;
    if(!*pthys)
        return;

    thys = *pthys;
    ajStrDel(&thys->pattern);
    ajStrDel(&thys->regex);

    if(thys->buf)
      AJFREE(thys->buf);

    if(thys->sotable)
      AJFREE(thys->sotable);

    if(thys->type==6)
    {
	for(i=0;i<thys->m;++i)
	    AJFREE(thys->skipm[i]);

        AJFREE(thys->skipm);
    }
    
    AJFREE(*pthys);

    return;
}
示例#2
0
文件: ajreg.c 项目: ICO2S/emboss
void ajRegFree(AjPRegexp* pexp)
{
    AjPRegexp exp;

    if(!pexp)
	return;

    if(!*pexp)
	return;

    exp = *pexp;

    /*
       ajDebug("ajRegFree %x size regexp %d\n", exp,
       (ajint) sizeof(exp));
    */

    regFreeCount += 1;
    regFree += sizeof(*exp);

    if(exp->pcre)
	regFree += sizeof(exp->pcre);

    if(exp->extra)
	regFree += sizeof(exp->extra);

    regTotal --;

    AJFREE(exp->pcre);
    AJFREE(exp->extra);
    AJFREE(exp->ovector);
    AJFREE(*pexp);

    return;
}
示例#3
0
static void messTableDelete(AjPTable* table) 
{
    void **keyarray = NULL;
    void **valarray = NULL;
    ajint i;

    if(!table)
	return;
    if(!*table)
	return;

    ajTableToarrayKeysValues(*table, &keyarray, &valarray);

    for(i = 0; keyarray[i]; i++)
    {
	AJFREE(keyarray[i]);
	AJFREE(valarray[i]);
    }

    AJFREE(keyarray);
    AJFREE(valarray);

    ajTableFree(table);
    *table = NULL;

    return;
}
示例#4
0
文件: ajhist.c 项目: WenchaoLin/JAMg
void ajHistDel(AjPHist* phist)
{
    ajuint i;
    AjPHist hist;

    if(!phist) return;

    hist = *phist;

    if (!hist)
	return;

    for(i=0;i<hist->numofsets; i++)
    {
	if(hist->hists[i]->deletedata)
	{
	    ajStrDel(&hist->hists[i]->title);
	    ajStrDel(&hist->hists[i]->xaxis);
	    ajStrDel(&hist->hists[i]->yaxis);
	    AJFREE(hist->hists[i]->data);
	}
	AJFREE((hist->hists[i]));
    }

    AJFREE(hist->hists);

    ajStrDel(&hist->title);
    ajStrDel(&hist->xaxis);
    ajStrDel(&hist->yaxisleft);
    ajStrDel(&hist->yaxisright);

    AJFREE(*phist);
    return;
}
示例#5
0
static void remap_DelTable(AjPTable * table)
{

    void **keyarray = NULL;		/* array for table */
    void **valarray = NULL;		/* array for table */
    ajint i;
    PValue value;

    if(ajTableGetLength(*table))
    {
      ajTableToarrayKeysValues(*table, &keyarray, &valarray);
      for(i = 0; keyarray[i]; i++)
      {
          value = (PValue) valarray[i];
          ajStrDel(&(value->iso));
          AJFREE(valarray[i]);	/* free the ajint* value */
	  ajStrDel((AjPStr*)&keyarray[i]);
      }
      AJFREE(keyarray);
      AJFREE(valarray);
    }
    ajTableFree(table);

    return;
}
示例#6
0
void ajXmlDel(AjPXml *Pxml)
{
    AjPXml xml;

    if(!Pxml) return;
    if(!(*Pxml)) return;

    xml = *Pxml;

    ajStrDel(&xml->Id);
    ajStrDel(&xml->Db);
    ajStrDel(&xml->Setdb);
    ajStrDel(&xml->Full);
    ajStrDel(&xml->Qry);
    ajStrDel(&xml->Formatstr);
    ajStrDel(&xml->Filename);

    ajStrDel(&xml->TextPtr);

    if(xml->Doc)
        ajDomDocumentDestroyNode(xml->Doc, &xml->Doc);

    AJFREE(*Pxml);
    *Pxml = NULL;

    return;
}
示例#7
0
static void dbiblast_dbfree( PBlastDb* pdb)
{
    PBlastDb db;

    if(!pdb)
	return;

    if(!*pdb)
	return;

    db = *pdb;

    dbiblast_memfclosefile(&db->TFile);
    dbiblast_memfclosefile(&db->HFile);
    dbiblast_memfclosefile(&db->SFile);
    dbiblast_memfclosefile(&db->FFile);

    ajStrDel(&db->Name);
    ajStrDel(&db->Date);
    ajStrDel(&db->Title);

    AJFREE(*pdb);

    return;
}
示例#8
0
void ensKaryotypebandDel(EnsPKaryotypeband *Pkb)
{
    EnsPKaryotypeband pthis = NULL;
    
    if(!Pkb)
        return;
    
    if(!*Pkb)
        return;

    pthis = *Pkb;
    
    pthis->Use--;
    
    if(pthis->Use)
    {
	*Pkb = NULL;
	
	return;
    }
    
    ensFeatureDel(&pthis->Feature);
    
    ajStrDel(&pthis->Name);
    
    ajStrDel(&pthis->Stain);
    
    AJFREE(pthis);

    *Pkb = NULL;
    
    return;
}
示例#9
0
static void silent_split_hits(AjPList *hits, AjPList *silents,
			      AjPList *nonsilents, AjBool allmut)
{
    PSilent res;

    while(ajListPop(*hits,(void **)&res))
    {
	if(res->issilent)
	{
           	ajListPushAppend(*silents,(void *)res);
	   	continue;
	}
	if(allmut)
           	ajListPushAppend(*nonsilents,(void *)res);
	else
	{
	    ajStrDel(&res->code);
	    ajStrDel(&res->site);
	    ajStrDel(&res->seqaa);
	    ajStrDel(&res->reaa);
	    AJFREE(res);
	}
    }

    return;
}
示例#10
0
static void prima_PrimerDel(PPrimer *p)
{
    ajStrDel(&((*p)->substr));
    AJFREE(*p);

    return;
}
示例#11
0
文件: ajrefseq.c 项目: ICO2S/emboss
void ajRefseqDel(AjPRefseq *Prefseq)
{
    AjPRefseq refseq;
    AjPSeqRange tmprange;

    if(!Prefseq) return;
    if(!(*Prefseq)) return;

    refseq = *Prefseq;

    ajStrDel(&refseq->Id);
    ajStrDel(&refseq->Db);
    ajStrDel(&refseq->Setdb);
    ajStrDel(&refseq->Full);
    ajStrDel(&refseq->Qry);
    ajStrDel(&refseq->Formatstr);
    ajStrDel(&refseq->Filename);

    ajStrDel(&refseq->TextPtr);

    ajStrDel(&refseq->Desc);
    ajStrDel(&refseq->Seq);

    while(ajListPop(refseq->Seqlist,(void **)&tmprange))
	ajSeqrangeDel(&tmprange);

    ajListFree(&refseq->Seqlist);

    AJFREE(*Prefseq);
    *Prefseq = NULL;

    return;
}
示例#12
0
文件: embprop.c 项目: WenchaoLin/JAMg
void embPropMolwtDel(EmbPPropMolwt **thys)
{
    EmbPPropMolwt *pthis = NULL;
    ajuint i;
    
    pthis = *thys;

    for(i=0; i < EMBPROPSIZE + 2; ++i)
	AJFREE(pthis[i]);

    AJFREE(pthis);

    *thys = NULL;

    return;
}
示例#13
0
文件: embprop.c 项目: WenchaoLin/JAMg
void embPropAminoDel(EmbPPropAmino **thys)
{
    EmbPPropAmino *pthis = NULL;
    ajuint i;
    
    pthis = *thys;

    for(i=0; i < EMBPROPSIZE; ++i)
	AJFREE(pthis[i]);

    AJFREE(pthis);

    *thys = NULL;

    return;
}
示例#14
0
void ensAssemblyexceptionDel(EnsPAssemblyexception* Pae)
{
    EnsPAssemblyexception pthis = NULL;

    if(!Pae)
        return;

    if(!*Pae)
        return;

    pthis = *Pae;

    pthis->Use--;

    if(pthis->Use)
    {
        *Pae = NULL;

        return;
    }

    AJFREE(*Pae);

    return;
}
示例#15
0
文件: ajreg.c 项目: ICO2S/emboss
AjPRegexp ajRegCompC(const char* rexp)
{
    AjPRegexp ret;
    int options = 0;
    int errpos  = 0;
    const char *errptr            = NULL;
    const unsigned char *tableptr = NULL;

    AJNEW0(ret);
    AJCNEW0(ret->ovector, AJREG_OVECSIZE);
    ret->ovecsize = AJREG_OVECSIZE/3;
    ret->pcre = pcre_compile(rexp, options, &errptr, &errpos, tableptr);

    if(!ret->pcre)
    {
	ajErr("Failed to compile regular expression '%s' at position %d: %s",
	      rexp, errpos, errptr);
	AJFREE(ret);
	return NULL;
    }

    regAlloc += sizeof(ret);
    regCount ++;
    regTotal ++;
    /*ajDebug("ajRegCompC %x size %d regexp '%s'\n",
      ret, (int) sizeof(ret), rexp);*/

    return ret;
}
示例#16
0
static void jaspscan_infodel(PJspmat *thys)
{
    PJspmat pthis;

    pthis = *thys;

    ajStrDel(&pthis->id);
    ajStrDel(&pthis->num);
    ajStrDel(&pthis->name);
    ajStrDel(&pthis->klass);
    ajStrDel(&pthis->species);
    ajStrDel(&pthis->sgroup);
    ajStrDel(&pthis->protseq);
    ajStrDel(&pthis->exp);
    ajStrDel(&pthis->pmid);
    ajStrDel(&pthis->models);
    ajStrDel(&pthis->mcs);
    ajStrDel(&pthis->jaspar);
    ajStrDel(&pthis->transfac);
    ajStrDel(&pthis->content);
    ajStrDel(&pthis->desc);
    ajStrDel(&pthis->comment);
    ajStrDel(&pthis->erttss);
    ajStrDel(&pthis->srttss);
    ajStrDel(&pthis->consens);

    AJFREE(*thys);

    *thys = NULL;

    return;
}
示例#17
0
static void assemblyexceptionadaptorClearIdentifierCache(void **key,
                                                         void **value,
                                                         void *cl)
{
    EnsPAssemblyexception ae = NULL;

    if(!key)
        return;

    if(!*key)
        return;

    if(!value)
        return;

    if(!*value)
        return;

    (void) cl;

    AJFREE(*key);

    while(ajListPop(*((AjPList *) value), (void **) &ae))
        ensAssemblyexceptionDel(&ae);

    ajListFree((AjPList *) value);

    return;
}
示例#18
0
void ensStorableDel(EnsPStorable *Pstorable)
{
    EnsPStorable pthis = NULL;

    if(!Pstorable)
        return;

    if(!*Pstorable)
        return;

    pthis = *Pstorable;

    pthis->Use--;

    if(pthis->Use)
    {
        *Pstorable = NULL;

        return;
    }

    AJFREE(pthis);

    *Pstorable = NULL;

    return;
}
示例#19
0
void ensProjectionsegmentDel(EnsPProjectionsegment *Pps)
{
    EnsPProjectionsegment pthis = NULL;
    
    if(!Pps)
        return;
    
    if(!*Pps)
        return;

    pthis = *Pps;
    
    pthis->Use--;
    
    if(pthis->Use)
    {
	*Pps = NULL;
	
	return;
    }
    
    ensSliceDel(&pthis->TrgSlice);
    
    AJFREE(pthis);

    *Pps = NULL;
    
    return;
}
示例#20
0
void embIeppKDel(double *pK)
{

    AJFREE(pK);

    return;
}
示例#21
0
static char* messGetFilename(const char *path)
{
    static char *path_copy = NULL;
    const char *path_delim = SUBDIR_DELIMITER_STR;
    char *result = NULL;
    char *tmp;

    if(path != NULL)
    {
	if(strcmp((path + strlen(path) - 1), path_delim) != 0)
	{				/* Last char = "/" ?? */
	    if(path_copy != NULL)
		AJFREE(path_copy);

	    path_copy = ajSysFuncStrdup(path);

	    tmp = ajSysFuncStrtok(path_copy, path_delim);

	    while(tmp != NULL)
	    {
		result = tmp;	 /* Keep results of previous strtok */

		tmp = ajSysFuncStrtok(NULL, path_delim);
	    }
	}
    }

    return(result);
}
示例#22
0
static char* messFormat(va_list args, const char *format, const char *prefix)
{
    static char *new_buf = NULL;
    char *buf_ptr;
    ajint num_bytes;
    ajint prefix_len;


    if(format == NULL)
	ajMessCrash("invalid call, no format string.");

    if(prefix == NULL)
	prefix_len = 0;
    else
    {
	prefix_len = strlen(prefix);
	if((prefix_len + 1) > PREFIXSIZE)
	    ajMessCrash("prefix string is too long.");
    }


    /* If they supply the internal buffer as an argument, e.g. because they */
    /* used ajFmtString as an arg, then make a copy, otherwise use internal */
    /* buffer.                                                              */

    if(format == messbuf)
    {
	if(new_buf != NULL)
	    AJFREE(new_buf);
	buf_ptr = new_buf = ajSysFuncStrdup(format);
    }
    else
	buf_ptr = messbuf;

    /* Add the prefix if there is one. */
    if(prefix != NULL)
    {
	if(!strcpy(buf_ptr, prefix))
	    ajMessCrash("strcpy failed");
    }


    num_bytes = prefix_len + 1;
    num_bytes += ajFmtVPrintCL((buf_ptr + prefix_len),BUFSIZE, format, args);

    /*
    **  Check the result. This should never happen using the
    **  ajFmtVPrintCL routine instead of the vsprintf routine
    */

    if(num_bytes < 0)
	ajMessCrash("vsprintf failed: %s", ajMessGetSysmessageC());
    else if(num_bytes > BUFSIZE)
	ajMessCrash("messubs internal buffer size (%d) exceeded, "
		    "a total of %d bytes were written",
		    BUFSIZE, num_bytes);

    return(buf_ptr);
}
示例#23
0
static void callCountDel(void** key, void** value, void* cl)
{
    char *p;
    ajuint *cnt;

    (void) cl;

    p = (char*) *key;
    cnt = (ajuint*) *value;

    AJFREE(p);
    AJFREE(cnt);
 
    *key = NULL;

    return;
}
示例#24
0
void ajMessExit(void)
{
    AJFREE(messErrMess);
    messTableDelete(&messErrorTable);
    messTableDelete(&messDebugTestTable);

    return;
}
示例#25
0
__deprecated char* ajMessSysErrorText(void)
{
    char *mess;

    if(errno)
	mess = ajFmtString(SYSERR_FORMAT, errno, strerror(errno));
    else
	mess = ajFmtString(SYSERR_OK, errno, strerror(errno));
      
    /* must make copy - will be used when mess* calls itself */
    AJFREE(messErrMess);
    messErrMess = ajSysFuncStrdup(mess);

    AJFREE(mess);

    return messErrMess;
}
示例#26
0
static void cacheNodeDel(const EnsPCache cache, CachePNode* Pnode)
{
    if(!cache)
        return;

    if(!Pnode)
        return;

    if(!*Pnode)
        return;

    switch(cache->Type)
    {
        case ensECacheTypeNumeric:

            /* Delete AJAX unsigned integer key data. */

            AJFREE((*Pnode)->Key);

            break;

        case ensECacheTypeAlphaNumeric:

            /* Delete AJAX String key data. */

            ajStrDel((AjPStr *) &((*Pnode)->Key));

            break;

        default:

            ajWarn("cacheNodeDel got unexpected Cache type %d.\n",
                   cache->Type);
    }

    /* Delete the value data. */

    if(cache->Delete && (*Pnode)->Value)
        (*cache->Delete)(&((*Pnode)->Value));

    AJFREE(*Pnode);

    *Pnode = NULL;

    return;
}
示例#27
0
static const AjPStr assemSAMGetReadgroupHeaderlines(const AjPAssem assem)
{
    AjPStr* rgids = NULL;
    const AjPAssemReadgroup rg = NULL;
    ajint i =0;

    ajTableToarrayKeys(assem->Readgroups, (void***)&rgids);

    ajStrAssignC(&assemoutSamLinetxt, "");

    while (rgids[i])  /* read groups */
    {
	rg = ajTableFetchS(assem->Readgroups, rgids[i++]);
	ajFmtPrintAppS(&assemoutSamLinetxt, "@RG\tID:%S", rg->ID);

	if(rg->CN)
	    ajFmtPrintAppS(&assemoutSamLinetxt, "\tCN:%S", rg->CN);

	if(rg->Desc)
	    ajFmtPrintAppS(&assemoutSamLinetxt, "\tDS:%S", rg->Desc);

	if(rg->Date)
	    ajFmtPrintAppS(&assemoutSamLinetxt, "\tDT:%S", rg->Date);

	if(rg->FlowOrder)
	    ajFmtPrintAppS(&assemoutSamLinetxt, "\tFO:%S", rg->FlowOrder);

	if(rg->KeySeq)
	    ajFmtPrintAppS(&assemoutSamLinetxt, "\tKS:%S", rg->KeySeq);

	if(rg->Library)
	    ajFmtPrintAppS(&assemoutSamLinetxt, "\tLB:%S", rg->Library);

	if(rg->Programs)
	    ajFmtPrintAppS(&assemoutSamLinetxt, "\tPG:%S", rg->Programs);

	if(rg->Isize)
	    ajFmtPrintAppS(&assemoutSamLinetxt, "\tPI:%d", rg->Isize);

	if(rg->Platform)
	    ajFmtPrintAppS(&assemoutSamLinetxt, "\tPL:%s",
	                   ajAssemreadgroupGetPlatformname(rg));

	if(rg->Unit)
	    ajFmtPrintAppS(&assemoutSamLinetxt, "\tPU:%S", rg->Unit);

	if(rg->Sample)
	    ajFmtPrintAppS(&assemoutSamLinetxt, "\tSM:%S", rg->Sample);

	ajStrAppendC(&assemoutSamLinetxt, "\n");

    }

    AJFREE(rgids);

    return assemoutSamLinetxt;
}
示例#28
0
static void prima_prune_nearby(AjPList pairlist, ajint *npair, ajint range)
{
    PPair pair;

    ajint count;
    ajint fst;
    ajint fst2;
    ajint blim;
    ajint blim2;
    ajint elim;
    ajint elim2;
    ajint i;
    ajint j;
    ajint len;

    for(i=0;i<*npair;++i)
    {
	for(j=0;j<i;++j)	/* Ignore those already processed */
	{
	    ajListPop(pairlist,(void **)&pair);
	    ajListPushAppend(pairlist,(void *)pair);
	}

	ajListPop(pairlist,(void **)&pair);/* Get next high scoring pair */
	len  = pair->f->primerlen;
	fst  = pair->f->start + len -1;
	blim = fst-range;
	elim = fst+range;

	len   = pair->r->primerlen;
	blim2 = pair->r->start - range;
	elim2 = pair->r->start + range;

	ajListPushAppend(pairlist,(void *)pair);
	count = *npair;
	for(j=i+1;j<*npair;++j)
	{
	    ajListPop(pairlist,(void **)&pair);
	    fst2=pair->f->start+pair->f->primerlen-1;
	    if((fst2<blim || fst2>elim) && (pair->r->start<blim2 ||
					    pair->r->start>elim2))
		ajListPushAppend(pairlist,(void *)pair);
	    else
	    {
		prima_PrimerDel(&pair->f);
		prima_PrimerDel(&pair->r);
		AJFREE(pair);
		--count;
	    }
	}

	*npair = count;
    }

    return;
}
示例#29
0
void ajPatternSeqDel (AjPPatternSeq* pthys)
{
    AjPPatternSeq thys = *pthys;
    ajStrDel(&thys->Name);
    ajStrDel(&thys->Pattern);

    ajPatCompDel((AjPPatComp*) &thys->Compiled);
    AJFREE (*pthys);

    return;
}
示例#30
0
/* @funcstatic sigscanlig_LigHitDel *******************************************
**
** Destructor for Lighit object. 
** 
** @param [r] obj [SigPLighit *]  
**
** @return [AjBool] True on success
** @@
******************************************************************************/
void sigscanlig_LigHitDel(SigPLighit *obj)
{
    if((!obj) || (!(*obj)))
	return;

    ajStrDel(&(*obj)->ligid);
    
    AJFREE(*obj);
    *obj = NULL;
    
    return;
}