void Doc_Serialize_IMP(Doc *self, OutStream *outstream) { DocIVARS *const ivars = Doc_IVARS(self); Hash *hash = (Hash*)ivars->fields; Freezer_serialize_hash(hash, outstream); OutStream_Write_C32(outstream, ivars->doc_id); }
void Freezer_serialize(Obj *obj, OutStream *outstream) { if (Obj_is_a(obj, STRING)) { Freezer_serialize_string((String*)obj, outstream); } else if (Obj_is_a(obj, BLOB)) { Freezer_serialize_blob((Blob*)obj, outstream); } else if (Obj_is_a(obj, VECTOR)) { Freezer_serialize_varray((Vector*)obj, outstream); } else if (Obj_is_a(obj, HASH)) { Freezer_serialize_hash((Hash*)obj, outstream); } else if (Obj_is_a(obj, INTEGER)) { int64_t val = Int_Get_Value((Integer*)obj); OutStream_Write_C64(outstream, (uint64_t)val); } else if (Obj_is_a(obj, FLOAT)) { double val = Float_Get_Value((Float*)obj); OutStream_Write_F64(outstream, val); } else if (Obj_is_a(obj, BOOLEAN)) { bool val = Bool_Get_Value((Boolean*)obj); OutStream_Write_U8(outstream, (uint8_t)val); } else if (Obj_is_a(obj, QUERY)) { Query_Serialize((Query*)obj, outstream); } else if (Obj_is_a(obj, DOC)) { Doc_Serialize((Doc*)obj, outstream); } else if (Obj_is_a(obj, DOCVECTOR)) { DocVec_Serialize((DocVector*)obj, outstream); } else if (Obj_is_a(obj, TERMVECTOR)) { TV_Serialize((TermVector*)obj, outstream); } else if (Obj_is_a(obj, SIMILARITY)) { Sim_Serialize((Similarity*)obj, outstream); } else if (Obj_is_a(obj, MATCHDOC)) { MatchDoc_Serialize((MatchDoc*)obj, outstream); } else if (Obj_is_a(obj, TOPDOCS)) { TopDocs_Serialize((TopDocs*)obj, outstream); } else if (Obj_is_a(obj, SORTSPEC)) { SortSpec_Serialize((SortSpec*)obj, outstream); } else if (Obj_is_a(obj, SORTRULE)) { SortRule_Serialize((SortRule*)obj, outstream); } else { THROW(ERR, "Don't know how to serialize a %o", Obj_get_class_name(obj)); } }
void DocVec_Serialize_IMP(DocVector *self, OutStream *outstream) { DocVectorIVARS *const ivars = DocVec_IVARS(self); Freezer_serialize_hash(ivars->field_bufs, outstream); Freezer_serialize_hash(ivars->field_vectors, outstream); }