void MatchTInfoStepper_write_key_frame(MatchTermInfoStepper *self, OutStream *outstream, Obj *value) { TermInfo *tinfo = (TermInfo*)CERTIFY(value, TERMINFO); int32_t doc_freq = TInfo_Get_Doc_Freq(tinfo); // Write doc_freq. OutStream_Write_C32(outstream, doc_freq); // Write postings file pointer. OutStream_Write_C64(outstream, tinfo->post_filepos); // Write skip file pointer (maybe). if (doc_freq >= self->skip_interval) { OutStream_Write_C64(outstream, tinfo->skip_filepos); } TInfo_Mimic((TermInfo*)self->value, (Obj*)tinfo); }
void MatchTInfoStepper_Write_Key_Frame_IMP(MatchTermInfoStepper *self, OutStream *outstream, Obj *value) { MatchTermInfoStepperIVARS *const ivars = MatchTInfoStepper_IVARS(self); TermInfo *tinfo = (TermInfo*)CERTIFY(value, TERMINFO); int32_t doc_freq = TInfo_Get_Doc_Freq(tinfo); TermInfoIVARS *const tinfo_ivars = TInfo_IVARS((TermInfo*)value); // Write doc_freq. OutStream_Write_C32(outstream, doc_freq); // Write postings file pointer. OutStream_Write_C64(outstream, tinfo_ivars->post_filepos); // Write skip file pointer (maybe). if (doc_freq >= ivars->skip_interval) { OutStream_Write_C64(outstream, tinfo_ivars->skip_filepos); } TInfo_Mimic((TermInfo*)ivars->value, (Obj*)tinfo); }
void MatchTInfoStepper_Write_Delta_IMP(MatchTermInfoStepper *self, OutStream *outstream, Obj *value) { MatchTermInfoStepperIVARS *const ivars = MatchTInfoStepper_IVARS(self); TermInfo *tinfo = (TermInfo*)CERTIFY(value, TERMINFO); TermInfo *last_tinfo = (TermInfo*)ivars->value; int32_t doc_freq = TInfo_Get_Doc_Freq(tinfo); int64_t post_delta = TInfo_IVARS(tinfo)->post_filepos - TInfo_IVARS(last_tinfo)->post_filepos; // Write doc_freq. OutStream_Write_C32(outstream, doc_freq); // Write postings file pointer delta. OutStream_Write_C64(outstream, post_delta); // Write skip file pointer (maybe). if (doc_freq >= ivars->skip_interval) { OutStream_Write_C64(outstream, TInfo_IVARS(tinfo)->skip_filepos); } TInfo_Mimic((TermInfo*)ivars->value, (Obj*)tinfo); }