Mailing List Archive

r3715 - in trunk: c_src/KinoSearch c_src/KinoSearch/Doc perl/lib/KinoSearch perl/lib/KinoSearch/Doc
Author: creamyg
Date: 2008-08-04 15:37:01 -0700 (Mon, 04 Aug 2008)
New Revision: 3715

Modified:
trunk/c_src/KinoSearch/Doc.bp
trunk/c_src/KinoSearch/Doc/HitDoc.bp
trunk/perl/lib/KinoSearch/Doc.pm
trunk/perl/lib/KinoSearch/Doc/HitDoc.pm
Log:
Replace hand-rolled XS in Doc and HitDoc with some auto-bindings.


Modified: trunk/c_src/KinoSearch/Doc/HitDoc.bp
===================================================================
--- trunk/c_src/KinoSearch/Doc/HitDoc.bp 2008-08-04 22:35:59 UTC (rev 3714)
+++ trunk/c_src/KinoSearch/Doc/HitDoc.bp 2008-08-04 22:37:01 UTC (rev 3715)
@@ -14,7 +14,7 @@
float score;

static incremented HitDoc*
- new(void *fields, u32_t doc_num, float score = 0.0);
+ new(void *fields = NULL, u32_t doc_num = 0, float score = 0.0);

/** Constructor.
*
@@ -23,7 +23,8 @@
* @param score Number indicating how well the doc scored against a query.
*/
static HitDoc*
- init(HitDoc *self, void *fields, u32_t doc_num, float score = 0.0);
+ init(HitDoc *self, void *fields = NULL, u32_t doc_num = 0,
+ float score = 0.0);

/** Throw an error (boost is invalid).
*/

Modified: trunk/c_src/KinoSearch/Doc.bp
===================================================================
--- trunk/c_src/KinoSearch/Doc.bp 2008-08-04 22:35:59 UTC (rev 3714)
+++ trunk/c_src/KinoSearch/Doc.bp 2008-08-04 22:37:01 UTC (rev 3715)
@@ -13,7 +13,7 @@
float boost;

static incremented Doc*
- new(void *fields, u32_t doc_num = 0, float boost = 1.0 );
+ new(void *fields = NULL, u32_t doc_num = 0, float boost = 1.0 );

/* Unimplemented constructor. */
/**
@@ -22,7 +22,7 @@
* @param doc_num Internal KinoSearch document number. Default of 0.
*/
static Doc*
- init(Doc *self, void *fields, u32_t doc_num = 0, float boost = 1.0 );
+ init(Doc *self, void *fields = NULL, u32_t doc_num = 0, float boost = 1.0 );

/** Set boost attribute.
* Setting boost to something other than 1.0 causes a document to score

Modified: trunk/perl/lib/KinoSearch/Doc/HitDoc.pm
===================================================================
--- trunk/perl/lib/KinoSearch/Doc/HitDoc.pm 2008-08-04 22:35:59 UTC (rev 3714)
+++ trunk/perl/lib/KinoSearch/Doc/HitDoc.pm 2008-08-04 22:37:01 UTC (rev 3715)
@@ -4,32 +4,6 @@

__END__

-__XS__
-
-MODULE = KinoSearch PACKAGE = KinoSearch::Doc::HitDoc
-
-SV*
-new(class_name, ...)
- kino_ClassNameBuf class_name;
-CODE:
-{
- kino_HitDoc *self;
- HV *args_hash = build_args_hash( &(ST(0)), 1, items,
- "KinoSearch::Doc::HitDoc::new_PARAMS");
- HV *fields = maybe_extract_hv(args_hash, SNL("fields"));
- SV *doc_num_sv = maybe_extract_sv(args_hash, SNL("doc_num"));
- SV *score_sv = maybe_extract_sv(args_hash, SNL("score"));
- chy_u32_t doc_num = doc_num_sv ? SvUV(doc_num_sv) : 0;
- float score = score_sv ? (float)SvNV(score_sv) : 0.0f;
- if (NULL != maybe_extract_sv(args_hash, SNL("boost"))) {
- CONFESS("boost is meaningless for a HitDoc");
- }
- self = (kino_HitDoc*)KINO_CREATE((kino_CharBuf*)&class_name, KINO_HITDOC);
- self = kino_HitDoc_init(self, fields, doc_num, score);
- KOBJ_TO_SV_NOINC(self, RETVAL);
-}
-OUTPUT: RETVAL
-
__AUTO_XS__

my $synopsis = <<'END_SYNOPSIS';
@@ -41,12 +15,12 @@
END_SYNOPSIS

{ "KinoSearch::Doc::HitDoc" => {
- bind_methods => [qw( set_score get_score )],
- make_pod => {
- methods => [qw( set_score get_score set_boost get_boost )],
- synopsis => $synopsis,
- }
-
+ make_constructors => ['new'],
+ bind_methods => [qw( set_score get_score )],
+ make_pod => {
+ methods => [qw( set_score get_score set_boost get_boost )],
+ synopsis => $synopsis,
+ },
},
}


Modified: trunk/perl/lib/KinoSearch/Doc.pm
===================================================================
--- trunk/perl/lib/KinoSearch/Doc.pm 2008-08-04 22:35:59 UTC (rev 3714)
+++ trunk/perl/lib/KinoSearch/Doc.pm 2008-08-04 22:37:01 UTC (rev 3715)
@@ -9,43 +9,6 @@
MODULE = KinoSearch PACKAGE = KinoSearch::Doc

SV*
-new(class_name, ...)
- kino_ClassNameBuf class_name;
-CODE:
-{
- kino_Doc *self = NULL;
- HV *fields = NULL;
- SV *fields_sv = NULL;
- SV *boost_sv = NULL;
- SV *doc_num_sv = NULL;
- chy_u32_t doc_num = 0;
- float boost = 1.0f;
-
- allot_params( &(ST(0)), 1, items, "KinoSearch::Doc::new_PARAMS",
- &fields_sv, "fields", 6,
- &boost_sv, "boost", 5,
- &doc_num_sv, "doc_num", 7,
- NULL
- );
-
- /* Extract fields hash. */
- if (fields_sv && SvOK(fields_sv) && SvROK(fields_sv)) {
- fields = (HV*)SvRV(fields_sv);
- if (!fields || SvTYPE((SV*)fields) != SVt_PVHV) {
- CONFESS("Value for 'fields' isn't a valid hashref");
- }
- }
-
- if (boost_sv) boost = SvNV(boost_sv);
- if (doc_num_sv) doc_num = SvUV(doc_num_sv);
-
- self = (kino_Doc*)KINO_CREATE((kino_CharBuf*)&class_name, KINO_DOC);
- self = kino_Doc_init(self, fields, doc_num, boost);
- KOBJ_TO_SV_NOINC(self, RETVAL);
-}
-OUTPUT: RETVAL
-
-SV*
get_fields(self, ...)
kino_Doc *self;
CODE:
@@ -53,14 +16,6 @@
RETVAL = newRV_inc( (SV*)Kino_Doc_Get_Fields(self) );
OUTPUT: RETVAL

-void
-set_fields(self, fields)
- kino_Doc *self;
- HV *fields;
-PPCODE:
- SvREFCNT_dec((SV*)self->fields);
- self->fields = (HV*)SvREFCNT_inc((SV*)fields);
-
__AUTO_XS__

my $synopsis = <<'END_SYNOPSIS';
@@ -80,11 +35,13 @@
END_CONSTRUCTOR

{ "KinoSearch::Doc" => {
+ make_constructors => ['new'],
bind_methods => [.
qw( set_doc_num
get_doc_num
set_boost
- get_boost )
+ get_boost
+ set_fields )
],
make_pod => {
methods => [qw( set_boost get_boost get_fields )],


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