[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kinosearch-commits
Subject:    [Kinosearch-commits] r2493 - in trunk: c_src/KinoSearch/Index
From:       marvin () rectangular ! com (marvin () rectangular ! com)
Date:       2007-08-08 13:21:55
Message-ID: mailman.3.1186604515.555.kinosearch-commits () rectangular ! com
[Download RAW message or body]

Author: root
Date: 2007-08-08 13:21:53 -0700 (Wed, 08 Aug 2007)
New Revision: 2493

Modified:
   trunk/c_src/KinoSearch/Index/Lexicon.c
   trunk/c_src/KinoSearch/Index/Lexicon.h
   trunk/c_src/KinoSearch/Index/MultiLexicon.c
   trunk/c_src/KinoSearch/Index/MultiLexicon.h
   trunk/c_src/KinoSearch/Index/SegLexicon.c
   trunk/c_src/KinoSearch/Index/SegLexicon.h
   trunk/perl/lib/KinoSearch/Index/Lexicon.pm
   trunk/perl/lib/KinoSearch/Index/SegLexicon.pm
   trunk/perl/t/217-multi_lexicon.t
Log:
Implement Lex_Get_Size across all Lexicon subclasses.  Patch provided by Chris
Nandor.


Modified: trunk/c_src/KinoSearch/Index/Lexicon.c
===================================================================
--- trunk/c_src/KinoSearch/Index/Lexicon.c	2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/c_src/KinoSearch/Index/Lexicon.c	2007-08-08 20:21:53 UTC (rev 2493)
@@ -28,6 +28,13 @@
 }
 
 i32_t 
+Lex_get_size(Lexicon *self) 
+{
+    ABSTRACT_DEATH(self, "Get_Size");
+    UNREACHABLE_RETURN(i32_t);
+}
+
+i32_t 
 Lex_get_term_num(Lexicon *self) 
 {
     ABSTRACT_DEATH(self, "Get_Term_Num");

Modified: trunk/c_src/KinoSearch/Index/Lexicon.h
===================================================================
--- trunk/c_src/KinoSearch/Index/Lexicon.h	2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/c_src/KinoSearch/Index/Lexicon.h	2007-08-08 20:21:53 UTC (rev 2493)
@@ -39,6 +39,10 @@
 kino_Lex_reset(kino_Lexicon* self);
 KINO_METHOD("Kino_Lex_Reset");
 
+chy_i32_t
+kino_Lex_get_size(kino_Lexicon *self);
+KINO_METHOD("Kino_Lex_Get_Size");
+
 /* Pretend that the iterator is an array, and return the index of the current
  * element.  May return invalid results if the iterator is not in a valid
  * state.

Modified: trunk/c_src/KinoSearch/Index/MultiLexicon.c
===================================================================
--- trunk/c_src/KinoSearch/Index/MultiLexicon.c	2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/c_src/KinoSearch/Index/MultiLexicon.c	2007-08-08 20:21:53 UTC (rev 2493)
@@ -172,6 +172,7 @@
             ints[ PList_Get_Doc_Num(plist) ] = self->term_num;
         }
     }
+    self->size = self->term_num;
 
     term_texts = REALLOCATE(term_texts, num_index_terms, ByteBuf*);
     REFCOUNT_DEC(self->lex_cache);
@@ -229,6 +230,14 @@
     } while (MultiLex_Next(self));
 }
 
+i32_t
+MultiLex_get_size(MultiLexicon *self)
+{
+    if (self->lex_cache == NULL)
+        CONFESS("Can't call MultiLex_Size unless cache filled");
+    return self->size;
+}
+
 i32_t 
 MultiLex_get_term_num(MultiLexicon *self)
 {

Modified: trunk/c_src/KinoSearch/Index/MultiLexicon.h
===================================================================
--- trunk/c_src/KinoSearch/Index/MultiLexicon.h	2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/c_src/KinoSearch/Index/MultiLexicon.h	2007-08-08 20:21:53 UTC (rev 2493)
@@ -23,6 +23,7 @@
     struct kino_PriorityQueue  *lex_q;
     struct kino_VArray         *seg_lexicons;
     struct kino_LexCache       *lex_cache;
+    chy_i32_t                   size;
     chy_i32_t                   term_num;
 };
 
@@ -48,6 +49,10 @@
 KINO_METHOD("Kino_MultiLex_Reset");
 
 chy_i32_t 
+kino_MultiLex_get_size(kino_MultiLexicon *self);
+KINO_METHOD("Kino_MultiLex_Get_Size");
+
+chy_i32_t 
 kino_MultiLex_get_term_num(kino_MultiLexicon *self);
 KINO_METHOD("Kino_MultiLex_Get_Term_Num");
 

Modified: trunk/c_src/KinoSearch/Index/SegLexicon.c
===================================================================
--- trunk/c_src/KinoSearch/Index/SegLexicon.c	2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/c_src/KinoSearch/Index/SegLexicon.c	2007-08-08 20:21:53 UTC (rev 2493)
@@ -160,6 +160,12 @@
 }
 
 i32_t
+SegLex_get_size(SegLexicon *self)
+{
+    return self->size;
+}
+
+i32_t
 SegLex_get_term_num(SegLexicon *self)
 {
     return self->term_num;

Modified: trunk/c_src/KinoSearch/Index/SegLexicon.h
===================================================================
--- trunk/c_src/KinoSearch/Index/SegLexicon.h	2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/c_src/KinoSearch/Index/SegLexicon.h	2007-08-08 20:21:53 UTC (rev 2493)
@@ -73,6 +73,10 @@
 KINO_METHOD("Kino_SegLex_Get_Field_Num");
 
 chy_i32_t
+kino_SegLex_get_size(kino_SegLexicon *self);
+KINO_METHOD("Kino_SegLex_Get_Size");
+
+chy_i32_t
 kino_SegLex_get_term_num(kino_SegLexicon *self);
 KINO_METHOD("Kino_SegLex_Get_Term_Num");
 

Modified: trunk/perl/lib/KinoSearch/Index/Lexicon.pm
===================================================================
--- trunk/perl/lib/KinoSearch/Index/Lexicon.pm	2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/perl/lib/KinoSearch/Index/Lexicon.pm	2007-08-08 20:21:53 UTC (rev 2493)
@@ -47,6 +47,13 @@
     Kino_Lex_Reset(self);
 
 chy_i32_t
+get_size(self);
+    kino_Lexicon *self;
+CODE:
+    RETVAL = Kino_Lex_Get_Size(self);
+OUTPUT: RETVAL
+
+chy_i32_t
 get_term_num(self);
     kino_Lexicon *self;
 CODE:

Modified: trunk/perl/lib/KinoSearch/Index/SegLexicon.pm
===================================================================
--- trunk/perl/lib/KinoSearch/Index/SegLexicon.pm	2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/perl/lib/KinoSearch/Index/SegLexicon.pm	2007-08-08 20:21:53 UTC (rev 2493)
@@ -68,16 +68,12 @@
 _set_or_get(self, ...)
     kino_SegLexicon *self;
 ALIAS:
-    get_size                 = 2  
     get_term_info            = 4
     is_index                 = 10
 PPCODE:
 {
     START_SET_OR_GET_SWITCH
 
-    case 2:  retval = newSViv(self->size); 
-             break;
-
     case 4:  retval = kobj_to_pobj(Kino_SegLex_Get_Term_Info(self));
              break;
 

Modified: trunk/perl/t/217-multi_lexicon.t
===================================================================
--- trunk/perl/t/217-multi_lexicon.t	2007-08-08 20:06:51 UTC (rev 2492)
+++ trunk/perl/t/217-multi_lexicon.t	2007-08-08 20:21:53 UTC (rev 2493)
@@ -18,7 +18,7 @@
 sub analyzer { KinoSearch::Analysis::Tokenizer->new }
 
 package main;
-use Test::More tests => 49;
+use Test::More tests => 56;
 use File::Spec::Functions qw( catfile );
 
 use KinoSearch::Index::MultiLexicon;
@@ -100,6 +100,8 @@
     );
     isa_ok( $intmap, 'KinoSearch::Util::IntMap' );
 
+    ok($lexicon->get_size, 'MultiLexicon->get_size');
+
     my $term = KinoSearch::Index::Term->new( content => 'j' );
     $lexicon->seek($term);
     is( $lexicon->get_term->get_text,


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic