bool addFreq(char * lextype,int n,char * bf,bool relaxed,unsigned int offset) { bool added = false; int off = offset - S.Offset; if(!strcmp(lextype,Type) && (!bf || /*S.Offset == offset*/ off >= 0)) { if(relaxed) { assert(bf); char * bfoff = bf + S.Offset; int len = strlen(bfoff); if(!strncmp(BaseForm,bfoff,len) && BaseForm[len] == ',') { S.frequency += n; added = true; //return true; } } else { if(!bf || !strcmp(bf + S.Offset,BaseForm)) { S.frequency += n; added = true; //return true; } } } /*else*/ // Full form may have several (equal or different) base forms // all having the same type! if(next) // TODO Bart 20060829. Shouldn't the next line be // return next->addFreq(lextype,n,bf,relaxed,offset) || added; // ? // Bart 20061114 added || added return next->addFreq(lextype,n,bf,relaxed,offset) || added; else { if(added) { return true; } else { notypematch++; notypematchcnt += n; return false; } } }
bool addFreq(char * lextype,int n,char * bf,bool relaxed,ptrdiff_t offset)/*20120709 unsigned int -> ptrdiff_t*/ { bool added = false; ptrdiff_t off = offset - S.Offset;/*20120709 int -> ptrdiff_t*/ if(!strcmp(lextype,Type) && (!bf || off >= 0)) { if(relaxed) { assert(bf); char * bfoff = bf + S.Offset; size_t len = strlen(bfoff); if(!strncmp(BaseForm,bfoff,len) && BaseForm[len] == ',') { S.frequency += n; added = true; //return true; } } else { if(!bf || !strcmp(bf + S.Offset,BaseForm)) { S.frequency += n; added = true; //return true; } } } /*else*/ // Full form may have several (equal or different) base forms // all having the same type! if(next) return next->addFreq(lextype,n,bf,relaxed,offset) || added; else { if(added) { return true; } else { notypematch++; notypematchcnt += n; return false; } } }