static value_t MulII(value_t v2,value_t v1) { return Int_init(v2.i * v1.i); }
Obj* Freezer_deserialize(Obj *obj, InStream *instream) { if (Obj_is_a(obj, STRING)) { obj = (Obj*)Freezer_deserialize_string((String*)obj, instream); } else if (Obj_is_a(obj, BLOB)) { obj = (Obj*)Freezer_deserialize_blob((Blob*)obj, instream); } else if (Obj_is_a(obj, VECTOR)) { obj = (Obj*)Freezer_deserialize_varray((Vector*)obj, instream); } else if (Obj_is_a(obj, HASH)) { obj = (Obj*)Freezer_deserialize_hash((Hash*)obj, instream); } else if (Obj_is_a(obj, INTEGER)) { int64_t value = (int64_t)InStream_Read_C64(instream); obj = (Obj*)Int_init((Integer*)obj, value); } else if (Obj_is_a(obj, FLOAT)) { double value = InStream_Read_F64(instream); obj = (Obj*)Float_init((Float*)obj, value); } else if (Obj_is_a(obj, BOOLEAN)) { bool value = !!InStream_Read_U8(instream); Obj *result = value ? INCREF(CFISH_TRUE) : INCREF(CFISH_FALSE); // FIXME: This DECREF is essentially a no-op causing a // memory leak. DECREF(obj); obj = result; } else if (Obj_is_a(obj, QUERY)) { obj = (Obj*)Query_Deserialize((Query*)obj, instream); } else if (Obj_is_a(obj, DOC)) { obj = (Obj*)Doc_Deserialize((Doc*)obj, instream); } else if (Obj_is_a(obj, DOCVECTOR)) { obj = (Obj*)DocVec_Deserialize((DocVector*)obj, instream); } else if (Obj_is_a(obj, TERMVECTOR)) { obj = (Obj*)TV_Deserialize((TermVector*)obj, instream); } else if (Obj_is_a(obj, SIMILARITY)) { obj = (Obj*)Sim_Deserialize((Similarity*)obj, instream); } else if (Obj_is_a(obj, MATCHDOC)) { obj = (Obj*)MatchDoc_Deserialize((MatchDoc*)obj, instream); } else if (Obj_is_a(obj, TOPDOCS)) { obj = (Obj*)TopDocs_Deserialize((TopDocs*)obj, instream); } else if (Obj_is_a(obj, SORTSPEC)) { obj = (Obj*)SortSpec_Deserialize((SortSpec*)obj, instream); } else if (Obj_is_a(obj, SORTRULE)) { obj = (Obj*)SortRule_Deserialize((SortRule*)obj, instream); } else { THROW(ERR, "Don't know how to deserialize a %o", Obj_get_class_name(obj)); } return obj; }
static value_t PlusII(value_t v2,value_t v1) { return Int_init(v2.i + v1.i); }
static value_t MinusII(value_t v2,value_t v1) { return Int_init(v2.i - v1.i); }
static value_t DecI(value_t v) { return Int_init(--v.i); }
static value_t IncI(value_t v) { return Int_init(++v.i); }
static value_t ModII(value_t v2,value_t v1) { return Int_init(v2.i % v1.i); }
static value_t DivII(value_t v2,value_t v1) { return Int_init(v2.i / v1.i); }
Integer* Int_new(int64_t value) { Integer *self = (Integer*)Class_Make_Obj(INTEGER); return Int_init(self, value); }