TermVector* TV_Deserialize_IMP(TermVector *self, InStream *instream) { String *field = Freezer_read_string(instream); String *text = Freezer_read_string(instream); size_t num_pos = InStream_Read_C64(instream); // Read positional data. int32_t *posits = (int32_t*)MALLOCATE(num_pos * sizeof(int32_t)); int32_t *starts = (int32_t*)MALLOCATE(num_pos * sizeof(int32_t)); int32_t *ends = (int32_t*)MALLOCATE(num_pos * sizeof(int32_t)); for (size_t i = 0; i < num_pos; i++) { posits[i] = InStream_Read_C32(instream); starts[i] = InStream_Read_C32(instream); ends[i] = InStream_Read_C32(instream); } I32Array *positions = I32Arr_new_steal(posits, num_pos); I32Array *start_offsets = I32Arr_new_steal(starts, num_pos); I32Array *end_offsets = I32Arr_new_steal(ends, num_pos); TV_init(self, field, text, positions, start_offsets, end_offsets); DECREF(positions); DECREF(start_offsets); DECREF(end_offsets); DECREF(text); DECREF(field); return self; }
LeafQuery* LeafQuery_Deserialize_IMP(LeafQuery *self, InStream *instream) { LeafQueryIVARS *const ivars = LeafQuery_IVARS(self); if (InStream_Read_U8(instream)) { ivars->field = Freezer_read_string(instream); } else { ivars->field = NULL; } ivars->text = Freezer_read_string(instream); ivars->boost = InStream_Read_F32(instream); return self; }
PhraseQuery* PhraseQuery_Deserialize_IMP(PhraseQuery *self, InStream *instream) { float boost = InStream_Read_F32(instream); String *field = Freezer_read_string(instream); Vector *terms = Freezer_read_varray(instream); return S_do_init(self, field, terms, boost); }
Obj* Freezer_thaw(InStream *instream) { String *class_name = Freezer_read_string(instream); Class *klass = Class_singleton(class_name, NULL); Obj *blank = Class_Make_Obj(klass); DECREF(class_name); return Freezer_deserialize(blank, instream); }
ProximityQuery* ProximityQuery_Deserialize_IMP(ProximityQuery *self, InStream *instream) { float boost = InStream_Read_F32(instream); String *field = Freezer_read_string(instream); VArray *terms = Freezer_read_varray(instream); uint32_t within = InStream_Read_C32(instream); return S_do_init(self, field, terms, boost, within); }
TermQuery* TermQuery_Deserialize_IMP(TermQuery *self, InStream *instream) { TermQueryIVARS *const ivars = TermQuery_IVARS(self); ivars->field = Freezer_read_string(instream); ivars->term = (Obj*)THAW(instream); ivars->boost = InStream_Read_F32(instream); return self; }
PolyCompiler* PolyCompiler_Deserialize_IMP(PolyCompiler *self, InStream *instream) { PolyCompilerIVARS *const ivars = PolyCompiler_IVARS(self); String *class_name = Freezer_read_string(instream); DECREF(class_name); // TODO Don't serialize class name. ivars->children = Freezer_read_varray(instream); PolyCompiler_Deserialize_t super_deserialize = SUPER_METHOD_PTR(POLYCOMPILER, LUCY_PolyCompiler_Deserialize); return super_deserialize(self, instream); }
RangeQuery* RangeQuery_Deserialize_IMP(RangeQuery *self, InStream *instream) { // Deserialize components. float boost = InStream_Read_F32(instream); String *field = Freezer_read_string(instream); Obj *lower_term = InStream_Read_U8(instream) ? THAW(instream) : NULL; Obj *upper_term = InStream_Read_U8(instream) ? THAW(instream) : NULL; bool include_lower = !!InStream_Read_U8(instream); bool include_upper = !!InStream_Read_U8(instream); // Init object. RangeQuery_init(self, field, lower_term, upper_term, include_lower, include_upper); RangeQuery_Set_Boost(self, boost); DECREF(upper_term); DECREF(lower_term); DECREF(field); return self; }
DocVector* DefHLReader_Fetch_Doc_Vec_IMP(DefaultHighlightReader *self, int32_t doc_id) { DefaultHighlightReaderIVARS *const ivars = DefHLReader_IVARS(self); InStream *const ix_in = ivars->ix_in; InStream *const dat_in = ivars->dat_in; DocVector *doc_vec = DocVec_new(); InStream_Seek(ix_in, doc_id * 8); int64_t file_pos = InStream_Read_I64(ix_in); InStream_Seek(dat_in, file_pos); uint32_t num_fields = InStream_Read_CU32(dat_in); while (num_fields--) { String *field = Freezer_read_string(dat_in); Blob *field_buf = Freezer_read_blob(dat_in); DocVec_Add_Field_Buf(doc_vec, field, field_buf); DECREF(field_buf); DECREF(field); } return doc_vec; }