Mailing List Archive

r3832 - in trunk: c_src/KinoSearch perl/xs/KinoSearch
Author: creamyg
Date: 2008-09-06 22:40:27 -0700 (Sat, 06 Sep 2008)
New Revision: 3832

Modified:
trunk/c_src/KinoSearch/Doc.bp
trunk/perl/xs/KinoSearch/Doc.c
Log:
Add Doc_Store, useful from C though not important from Perl.


Modified: trunk/c_src/KinoSearch/Doc.bp
===================================================================
--- trunk/c_src/KinoSearch/Doc.bp 2008-09-07 03:05:36 UTC (rev 3831)
+++ trunk/c_src/KinoSearch/Doc.bp 2008-09-07 05:40:27 UTC (rev 3832)
@@ -44,6 +44,11 @@
i32_t
Get_Doc_Num(Doc *self);

+ /** Store a field value in the Doc.
+ */
+ void
+ Store(Doc *self, const CharBuf *field, Obj *value);
+
/** Set the doc's field's attribute.
*/
void

Modified: trunk/perl/xs/KinoSearch/Doc.c
===================================================================
--- trunk/perl/xs/KinoSearch/Doc.c 2008-09-07 03:05:36 UTC (rev 3831)
+++ trunk/perl/xs/KinoSearch/Doc.c 2008-09-07 05:40:27 UTC (rev 3832)
@@ -29,6 +29,18 @@
}

void
+kino_Doc_store(kino_Doc *self, const kino_CharBuf *field, kino_Obj *value)
+{
+ char *key = (char*)Kino_CB_Get_Ptr8(field);
+ size_t key_size = Kino_CB_Get_Size(field);
+ SV *val_sv =
+ value == NULL ? newSV(0)
+ : KINO_OBJ_IS_A(value, KINO_CHARBUF) ? cb_to_sv((kino_CharBuf*)value)
+ : Kino_Obj_To_Native(value);
+ hv_store((HV*)self->fields, key, key_size, val_sv, 0);
+}
+
+void
kino_Doc_serialize(kino_Doc *self, kino_OutStream *outstream)
{
Kino_OutStream_Write_C32(outstream, self->doc_num);


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