Exemple #1
0
 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;
             }
         }
     }
Exemple #2
0
 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;
             }
         }
     }