static Obj* S_new_testobj() { ZombieCharBuf *klass = ZCB_WRAP_STR("TestObj", 7); Obj *obj; VTable *vtable = VTable_fetch_vtable((CharBuf*)klass); if (!vtable) { vtable = VTable_singleton((CharBuf*)klass, OBJ); } obj = VTable_Make_Obj(vtable); return Obj_init(obj); }
static Obj* S_new_testobj() { StackString *class_name = SSTR_WRAP_UTF8("TestObj", 7); Obj *obj; Class *klass = Class_fetch_class((String*)class_name); if (!klass) { klass = Class_singleton((String*)class_name, OBJ); } obj = Class_Make_Obj(klass); return Obj_init(obj); }
Obj* Obj_deserialize(Obj *self, InStream *instream) { CharBuf *class_name = CB_deserialize(NULL, instream); if (!self) { VTable *vtable = VTable_singleton(class_name, (VTable*)&OBJ); self = VTable_Make_Obj(vtable); } else { CharBuf *my_class = VTable_Get_Name(self->vtable); if (!CB_Equals(class_name, (Obj*)my_class)) THROW("Class mismatch: %o %o", class_name, my_class); } DECREF(class_name); return Obj_init(self); }
static void S_attempt_init(void *context) { Obj_init((Obj*)context); }