void embPatlistRegexSearch (AjPFeattable ftable, const AjPSeq seq, AjPPatlistRegex plist, AjBool reverse) { AjPPatternRegex patreg = NULL; AjPRegexp compPat; AjPStr tmp = NULL; ajStrAssignS(&tmp,ajSeqGetNameS(seq)); ajDebug ("embPatlistSearchSequence: Searching '%S' for patterns\n",tmp); while (ajPatlistRegexGetNext(plist,&patreg)) { compPat = ajPatternRegexGetCompiled(patreg); if (!compPat) { ajPatlistRegexRemoveCurrent(plist); continue; } embPatternRegexSearch(ftable,seq,patreg,reverse); ajDebug("end loop\n"); } /* ajDebug ("embPatlistSearchListRegex: Done search '%S'\n",tmp); */ ajPatlistRegexRewind(plist); ajStrDel(&tmp); return; }
/* @func ajPatlistRegexGetNext ************************************************ ** ** Gets next available pattern from list. ** ** @param [u] thys [AjPPatlistRegex] Pattern list object ** @param [w] pattern [AjPPatternRegex*] Pattern object reference ** @return [AjBool] ajTrue if there was next object ** @@ ******************************************************************************/ AjBool ajPatlistRegexGetNext (AjPPatlistRegex thys, AjPPatternRegex* pattern) { if (!thys->Iter) thys->Iter = ajListIterNew(thys->Patlist); if (!ajListIterDone(thys->Iter)) *pattern = ajListIterGet(thys->Iter); else { ajPatlistRegexRewind(thys); return ajFalse; } return ajTrue; }