static bool evalfrontforward(const GtSeqabstract *useq, const GtSeqabstract *vseq, GtFrontResource *ftres, const GtFrontspec *prevfspec, const GtFrontspec *fspec, GtWord r) { GtWord k; bool defined = false; GtFrontvalue *fval; for (fval = ftres->frontspace + fspec->offset, k = fspec->left; k < fspec->left + fspec->width; k++, fval++) { if (r <= 0 || k <= -r || k >= r) { evalentryforward(useq,vseq,ftres,fval,prevfspec,k); if (GT_FRONT_ROWVALUE(fval) >= 0) { defined = true; } #ifdef SKDEBUG printf("store front[k="GT_WD"]="GT_WD" ",k,GT_FRONT_ROWVALUE(fval)); printf("at index "GT_WD"\n",(GtWord) (fval-ftres->frontspace)); #endif } else { #ifdef SKDEBUG printf("store front[k="GT_WD"]=GT_FRONT_MINUSINFINITY ",k); printf("at index "GT_WD"\n",(GtWord) (fval-ftres->frontspace)); #endif GT_FRONT_STORE(ftres,GT_FRONT_ROWVALUE(fval), GT_FRONT_MINUSINFINITY(ftres)); } } #ifdef SKDEBUG printf("frontvalues[r="GT_WD"]=",r); showfront(ftres,fspec,r); #endif return defined; }
static bool evalfrontforward(FrontResource *gl, const Frontspec *prevfspec, const Frontspec *fspec, long r) { long k; bool defined = false; Frontvalue *fval; for (fval = gl->frontspace + fspec->offset, k = fspec->left; k < fspec->left + fspec->width; k++, fval++) { if (r <= 0 || k <= -r || k >= r) { evalentryforward(gl,fval,prevfspec,k); if (ROWVALUE(fval) >= 0) { defined = true; } #ifdef SKDEBUG printf("store front[k=%ld]=%ld ",k,ROWVALUE(fval)); printf("at index %ld\n",(long) (fval-gl->frontspace)); #endif } else { #ifdef SKDEBUG printf("store front[k=%ld]=MINUSINFINITYFRONT ",k); printf("at index %ld\n",(long) (fval-gl->frontspace)); #endif STOREFRONT(gl,ROWVALUE(fval),MINUSINFINITYFRONT(gl)); } } #ifdef SKDEBUG printf("frontvalues[r=%ld]=",r); showfront(gl,fspec,r); #endif return defined; }