Example #1
0
static bool write_tfidf(FrSymHashEntry *entry, va_list args)
{
   if (entry)
      {
      FrVarArg(FILE*,fp) ;
      const FrSymbol *term = entry->getName() ;
      FrTFIDFrecord *rec = (FrTFIDFrecord*)entry->getUserData() ;
      if (term && rec && rec->termFrequency() > 0 && rec->docFrequency() > 0)
	 {
	 FrVarArg2(bool,int,verbosely) ;
	 char *termname = term->print() ;
	 if (verbosely)
	    {
	    FrVarArg(size_t,total_docs) ;
	    fprintf(fp,"%s %ld %ld %g\n",termname,
		    (unsigned long)rec->termFrequency(),
		    (unsigned long)rec->docFrequency(),
		    rec->TF_IDF(total_docs)) ;
	    }
	 else
	    fprintf(fp,"%s %ld %ld\n",termname,
		    (unsigned long)rec->termFrequency(),
		    (unsigned long)rec->docFrequency()) ;
	 FrFree(termname) ;
	 }
      }
   return true ;			// continue iterating
}
Example #2
0
static bool discard_clean_frame(const FrObject *obj, va_list args)
{
   FrVarArg(uint32_t,thres) ;
   FrVarArg(int *,discarded) ;
   FrFrame *frame = ((FrSymbol*)obj)->symbolFrame() ;
   // throw out the current frame if it is a clean virtual frame last used
   // before the threshold value of the clock
   if (frame && frame->isVFrame() && !frame->isLocked() &&
       !frame->dirtyFrame() && frame->getLRUclock() < thres)
      {
      frame->discard() ;	// discard the frame
      (*discarded)++ ;
      }
   return true ;
}
Example #3
0
static bool prefix_match(const FrSymbol *name, FrObject * /*info*/, va_list args)
{
   //HashEntryVFrame* entry = (HashEntryVFrame*)info ;
   FrVarArg(const char *,prefix) ;
   FrVarArg(size_t,prefixlen) ;
   FrVarArg(FrList**,matches) ;
   if (name)
      {
      if (memcmp(name->symbolName(),prefix,prefixlen) == 0)
	 {
	 pushlist(name,*matches) ;
	 }
      }
   return true ;
}
Example #4
0
static bool discard_dirty_frame(const FrObject *obj, va_list args)
{
   FrVarArg(uint32_t,thres) ;
   FrVarArg(int *,discarded) ;
   FrFrame *frame = ((FrSymbol*)obj)->symbolFrame() ;
   // throw out any and all unlocked virtual frames, even if dirty, that were
   // last used before the threshold value of the clock
   if (frame && frame->isVFrame() && !frame->isLocked() &&
       frame->getLRUclock() < thres)
      {
      if (frame->dirtyFrame())
	 frame->frameName()->commitFrame() ;
      frame->discard() ;	// discard the frame
      (*discarded)++ ;
      }
   return true ;
}
Example #5
0
static bool completion_for(const FrSymbol *name, FrObject * /*info*/, va_list args)
{
   //HashEntryVFrame* entry = (HashEntryVFrame*)info ;
   FrVarArg(const char *,prefix) ;
   FrVarArg(size_t,prefixlen) ;
   FrVarArg(char**,match) ;
   if (name)
      {
      const char *namestr = name->symbolName() ;
      if (prefixlen == 0 || memcmp(prefix,namestr,prefixlen) == 0)
	 {
	 if (*match)
	    {
	    size_t i ;
	    for (i = 0 ; (*match)[i] && (*match)[i] == namestr[i] ; ++i)
	       ;
	    (*match)[i] = '\0' ;
	    }
	 else
	    *match = FrDupString(namestr) ;
	 }
      }
   return true ;
}