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 }
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 ; }
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 ; }
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 ; }
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 ; }