Mailing List Archive

r3833 - in trunk/c_src/KinoSearch: . Obj Util
Author: creamyg
Date: 2008-09-06 22:41:34 -0700 (Sat, 06 Sep 2008)
New Revision: 3833

Modified:
trunk/c_src/KinoSearch/InvIndexer.c
trunk/c_src/KinoSearch/Obj/VTable.bp
trunk/c_src/KinoSearch/Obj/VTable.c
trunk/c_src/KinoSearch/Util/Freezer.c
Log:
Add VTable_Make_Obj factory method.


Modified: trunk/c_src/KinoSearch/InvIndexer.c
===================================================================
--- trunk/c_src/KinoSearch/InvIndexer.c 2008-09-07 05:40:27 UTC (rev 3832)
+++ trunk/c_src/KinoSearch/InvIndexer.c 2008-09-07 05:41:34 UTC (rev 3833)
@@ -23,6 +23,13 @@
release_write_lock(InvIndexer *self);

InvIndexer*
+InvIndexer_new(InvIndex *invindex, LockFactory *lock_factory)
+{
+ InvIndexer *self = (InvIndexer*)VTable_Make_Obj(&INVINDEXER);
+ return InvIndexer_init(self, invindex, lock_factory);
+}
+
+InvIndexer*
InvIndexer_init(InvIndexer *self, InvIndex *invindex,
LockFactory *lock_factory)
{

Modified: trunk/c_src/KinoSearch/Obj/VTable.bp
===================================================================
--- trunk/c_src/KinoSearch/Obj/VTable.bp 2008-09-07 05:40:27 UTC (rev 3832)
+++ trunk/c_src/KinoSearch/Obj/VTable.bp 2008-09-07 05:41:34 UTC (rev 3833)
@@ -66,6 +66,12 @@
void
Override(VTable *self, kino_method_t method_ptr, size_t offset);

+ /** Create an empty object of the type defined by the VTable. The caller
+ * is responsible for initialization.
+ */
+ Obj*
+ Make_Obj(VTable *self);
+
CharBuf*
Get_Name(VTable *self);


Modified: trunk/c_src/KinoSearch/Obj/VTable.c
===================================================================
--- trunk/c_src/KinoSearch/Obj/VTable.c 2008-09-07 05:40:27 UTC (rev 3832)
+++ trunk/c_src/KinoSearch/Obj/VTable.c 2008-09-07 05:41:34 UTC (rev 3833)
@@ -156,6 +156,13 @@
return singleton;
}

+Obj*
+VTable_make_obj(VTable *self)
+{
+ Obj_create_t create = (Obj_create_t)METHOD_PTR(self, Obj, Create);
+ return create(NULL, NULL, self, self->obj_alloc_size);
+}
+
static void
scrunch_charbuf(CharBuf *source, CharBuf *target)
{

Modified: trunk/c_src/KinoSearch/Util/Freezer.c
===================================================================
--- trunk/c_src/KinoSearch/Util/Freezer.c 2008-09-07 05:40:27 UTC (rev 3832)
+++ trunk/c_src/KinoSearch/Util/Freezer.c 2008-09-07 05:41:34 UTC (rev 3833)
@@ -18,8 +18,7 @@
{
CharBuf *class_name = CB_deserialize(NULL, instream);
VTable *vtable = (VTable*)VTable_singleton(class_name, NULL);
- Obj_create_t create = (Obj_create_t)METHOD_PTR(vtable, Obj, Create);
- Obj *blank = create(NULL, NULL, vtable, vtable->obj_alloc_size);
+ Obj *blank = VTable_Make_Obj(vtable);
REFCOUNT_DEC(class_name);
return Obj_Deserialize(blank, instream);
}


_______________________________________________
kinosearch-commits mailing list
kinosearch-commits@rectangular.com
http://www.rectangular.com/mailman/listinfo/kinosearch-commits