ferret 0.3.2 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +9 -0
 - data/Rakefile +51 -25
 - data/ext/analysis.c +553 -0
 - data/ext/analysis.h +76 -0
 - data/ext/array.c +83 -0
 - data/ext/array.h +19 -0
 - data/ext/bitvector.c +164 -0
 - data/ext/bitvector.h +29 -0
 - data/ext/compound_io.c +335 -0
 - data/ext/document.c +336 -0
 - data/ext/document.h +87 -0
 - data/ext/ferret.c +88 -47
 - data/ext/ferret.h +43 -109
 - data/ext/field.c +395 -0
 - data/ext/filter.c +103 -0
 - data/ext/fs_store.c +352 -0
 - data/ext/global.c +219 -0
 - data/ext/global.h +73 -0
 - data/ext/hash.c +446 -0
 - data/ext/hash.h +80 -0
 - data/ext/hashset.c +141 -0
 - data/ext/hashset.h +37 -0
 - data/ext/helper.c +11 -0
 - data/ext/helper.h +5 -0
 - data/ext/inc/lang.h +41 -0
 - data/ext/ind.c +389 -0
 - data/ext/index.h +884 -0
 - data/ext/index_io.c +269 -415
 - data/ext/index_rw.c +2543 -0
 - data/ext/lang.c +31 -0
 - data/ext/lang.h +41 -0
 - data/ext/priorityqueue.c +228 -0
 - data/ext/priorityqueue.h +44 -0
 - data/ext/q_boolean.c +1331 -0
 - data/ext/q_const_score.c +154 -0
 - data/ext/q_fuzzy.c +287 -0
 - data/ext/q_match_all.c +142 -0
 - data/ext/q_multi_phrase.c +343 -0
 - data/ext/q_parser.c +2180 -0
 - data/ext/q_phrase.c +657 -0
 - data/ext/q_prefix.c +75 -0
 - data/ext/q_range.c +247 -0
 - data/ext/q_span.c +1566 -0
 - data/ext/q_term.c +308 -0
 - data/ext/q_wildcard.c +146 -0
 - data/ext/r_analysis.c +255 -0
 - data/ext/r_doc.c +578 -0
 - data/ext/r_index_io.c +996 -0
 - data/ext/r_qparser.c +158 -0
 - data/ext/r_search.c +2321 -0
 - data/ext/r_store.c +263 -0
 - data/ext/r_term.c +219 -0
 - data/ext/ram_store.c +447 -0
 - data/ext/search.c +524 -0
 - data/ext/search.h +1065 -0
 - data/ext/similarity.c +143 -39
 - data/ext/sort.c +661 -0
 - data/ext/store.c +35 -0
 - data/ext/store.h +152 -0
 - data/ext/term.c +704 -143
 - data/ext/termdocs.c +599 -0
 - data/ext/vector.c +594 -0
 - data/lib/ferret.rb +9 -10
 - data/lib/ferret/analysis/analyzers.rb +2 -2
 - data/lib/ferret/analysis/standard_tokenizer.rb +1 -1
 - data/lib/ferret/analysis/token.rb +14 -14
 - data/lib/ferret/analysis/token_filters.rb +3 -3
 - data/lib/ferret/document/field.rb +16 -17
 - data/lib/ferret/index/document_writer.rb +4 -4
 - data/lib/ferret/index/index.rb +39 -23
 - data/lib/ferret/index/index_writer.rb +2 -2
 - data/lib/ferret/index/multiple_term_doc_pos_enum.rb +1 -8
 - data/lib/ferret/index/segment_term_vector.rb +4 -4
 - data/lib/ferret/index/term.rb +5 -1
 - data/lib/ferret/index/term_vector_offset_info.rb +6 -6
 - data/lib/ferret/index/term_vectors_io.rb +5 -5
 - data/lib/ferret/query_parser/query_parser.tab.rb +81 -77
 - data/lib/ferret/search.rb +1 -1
 - data/lib/ferret/search/boolean_query.rb +2 -1
 - data/lib/ferret/search/field_sorted_hit_queue.rb +3 -3
 - data/lib/ferret/search/fuzzy_query.rb +2 -1
 - data/lib/ferret/search/index_searcher.rb +3 -0
 - data/lib/ferret/search/{match_all_docs_query.rb → match_all_query.rb} +7 -7
 - data/lib/ferret/search/multi_phrase_query.rb +6 -5
 - data/lib/ferret/search/phrase_query.rb +3 -6
 - data/lib/ferret/search/prefix_query.rb +4 -4
 - data/lib/ferret/search/sort.rb +3 -1
 - data/lib/ferret/search/sort_field.rb +9 -9
 - data/lib/ferret/search/spans/near_spans_enum.rb +1 -1
 - data/lib/ferret/search/spans/span_near_query.rb +1 -1
 - data/lib/ferret/search/spans/span_weight.rb +1 -1
 - data/lib/ferret/search/spans/spans_enum.rb +7 -7
 - data/lib/ferret/store/fs_store.rb +10 -6
 - data/lib/ferret/store/ram_store.rb +3 -3
 - data/lib/rferret.rb +36 -0
 - data/test/functional/thread_safety_index_test.rb +2 -2
 - data/test/test_helper.rb +16 -2
 - data/test/unit/analysis/c_token.rb +25 -0
 - data/test/unit/analysis/tc_per_field_analyzer_wrapper.rb +1 -1
 - data/test/unit/analysis/tc_standard_analyzer.rb +1 -1
 - data/test/unit/document/{tc_document.rb → c_document.rb} +0 -0
 - data/test/unit/document/c_field.rb +98 -0
 - data/test/unit/document/tc_field.rb +0 -66
 - data/test/unit/index/{tc_index.rb → c_index.rb} +62 -6
 - data/test/unit/index/{tc_index_reader.rb → c_index_reader.rb} +51 -10
 - data/test/unit/index/{tc_index_writer.rb → c_index_writer.rb} +0 -4
 - data/test/unit/index/{tc_term.rb → c_term.rb} +1 -3
 - data/test/unit/index/{tc_term_vector_offset_info.rb → c_term_voi.rb} +5 -5
 - data/test/unit/index/tc_segment_term_vector.rb +2 -2
 - data/test/unit/index/tc_term_vectors_io.rb +4 -4
 - data/test/unit/query_parser/c_query_parser.rb +138 -0
 - data/test/unit/search/{tc_filter.rb → c_filter.rb} +24 -24
 - data/test/unit/search/{tc_fuzzy_query.rb → c_fuzzy_query.rb} +0 -0
 - data/test/unit/search/{tc_index_searcher.rb → c_index_searcher.rb} +9 -26
 - data/test/unit/search/{tc_search_and_sort.rb → c_search_and_sort.rb} +15 -15
 - data/test/unit/search/{tc_sort.rb → c_sort.rb} +2 -1
 - data/test/unit/search/c_sort_field.rb +27 -0
 - data/test/unit/search/{tc_spans.rb → c_spans.rb} +0 -0
 - data/test/unit/search/tc_sort_field.rb +7 -20
 - data/test/unit/store/c_fs_store.rb +76 -0
 - data/test/unit/store/c_ram_store.rb +35 -0
 - data/test/unit/store/m_store.rb +34 -0
 - data/test/unit/store/m_store_lock.rb +68 -0
 - data/test/unit/store/tc_fs_store.rb +0 -53
 - data/test/unit/store/tc_ram_store.rb +0 -20
 - data/test/unit/store/tm_store.rb +0 -30
 - data/test/unit/store/tm_store_lock.rb +0 -66
 - metadata +84 -31
 - data/ext/Makefile +0 -140
 - data/ext/ferret_ext.so +0 -0
 - data/ext/priority_queue.c +0 -232
 - data/ext/ram_directory.c +0 -321
 - data/ext/segment_merge_queue.c +0 -37
 - data/ext/segment_term_enum.c +0 -326
 - data/ext/string_helper.c +0 -42
 - data/ext/tags +0 -344
 - data/ext/term_buffer.c +0 -230
 - data/ext/term_infos_reader.c +0 -54
 - data/ext/terminfo.c +0 -160
 - data/ext/token.c +0 -93
 - data/ext/util.c +0 -12
 
    
        data/ext/ferret_ext.so
    DELETED
    
    | 
         Binary file 
     | 
    
        data/ext/priority_queue.c
    DELETED
    
    | 
         @@ -1,232 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #include "ferret.h"
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            ID less_than, put_heap;
         
     | 
| 
       4 
     | 
    
         
            -
            /****************************************************************************
         
     | 
| 
       5 
     | 
    
         
            -
             *
         
     | 
| 
       6 
     | 
    
         
            -
             * PriorityQueue Methods
         
     | 
| 
       7 
     | 
    
         
            -
             *
         
     | 
| 
       8 
     | 
    
         
            -
             ****************************************************************************/
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            void
         
     | 
| 
       11 
     | 
    
         
            -
            frt_priq_free(void *p)
         
     | 
| 
       12 
     | 
    
         
            -
            {
         
     | 
| 
       13 
     | 
    
         
            -
              free(p);
         
     | 
| 
       14 
     | 
    
         
            -
            }
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       17 
     | 
    
         
            -
            frt_priq_alloc(VALUE klass)
         
     | 
| 
       18 
     | 
    
         
            -
            {
         
     | 
| 
       19 
     | 
    
         
            -
              PriorityQueue *priq;
         
     | 
| 
       20 
     | 
    
         
            -
              VALUE rpriq;
         
     | 
| 
       21 
     | 
    
         
            -
              priq = (PriorityQueue *)ALLOC(PriorityQueue);
         
     | 
| 
       22 
     | 
    
         
            -
              priq->len = 0;
         
     | 
| 
       23 
     | 
    
         
            -
              priq->size = 0;
         
     | 
| 
       24 
     | 
    
         
            -
              rpriq = Data_Wrap_Struct(klass, NULL, frt_priq_free, priq);
         
     | 
| 
       25 
     | 
    
         
            -
              return rpriq;
         
     | 
| 
       26 
     | 
    
         
            -
            }
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       29 
     | 
    
         
            -
            frt_priq_init(VALUE self, VALUE rsize)
         
     | 
| 
       30 
     | 
    
         
            -
            {
         
     | 
| 
       31 
     | 
    
         
            -
              VALUE heap;
         
     | 
| 
       32 
     | 
    
         
            -
              PriorityQueue *priq;
         
     | 
| 
       33 
     | 
    
         
            -
              
         
     | 
| 
       34 
     | 
    
         
            -
              int size = FIX2INT(rsize);
         
     | 
| 
       35 
     | 
    
         
            -
              heap = rb_ary_new2(size+1);
         
     | 
| 
       36 
     | 
    
         
            -
              Data_Get_Struct(self, PriorityQueue, priq);
         
     | 
| 
       37 
     | 
    
         
            -
              
         
     | 
| 
       38 
     | 
    
         
            -
              priq->heap = RARRAY(heap)->ptr;
         
     | 
| 
       39 
     | 
    
         
            -
              priq->size = size;
         
     | 
| 
       40 
     | 
    
         
            -
              rb_iv_set(self, "@heap", heap);
         
     | 
| 
       41 
     | 
    
         
            -
              return self;
         
     | 
| 
       42 
     | 
    
         
            -
            }
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
            void
         
     | 
| 
       45 
     | 
    
         
            -
            priq_up(PriorityQueue *priq, VALUE self, VALUE rary)
         
     | 
| 
       46 
     | 
    
         
            -
            {
         
     | 
| 
       47 
     | 
    
         
            -
              int i,j;
         
     | 
| 
       48 
     | 
    
         
            -
              VALUE *heap, node;
         
     | 
| 
       49 
     | 
    
         
            -
              
         
     | 
| 
       50 
     | 
    
         
            -
              i = priq->len;
         
     | 
| 
       51 
     | 
    
         
            -
              heap = priq->heap;
         
     | 
| 
       52 
     | 
    
         
            -
              node = heap[i];
         
     | 
| 
       53 
     | 
    
         
            -
              j = i >> 1;
         
     | 
| 
       54 
     | 
    
         
            -
              while((j > 0) && rb_funcall(self, less_than, 2, node, heap[j])){
         
     | 
| 
       55 
     | 
    
         
            -
                heap[i] = heap[j];
         
     | 
| 
       56 
     | 
    
         
            -
                i = j;
         
     | 
| 
       57 
     | 
    
         
            -
                j = j >> 1;
         
     | 
| 
       58 
     | 
    
         
            -
              }
         
     | 
| 
       59 
     | 
    
         
            -
              rb_ary_store(rary, i, node);
         
     | 
| 
       60 
     | 
    
         
            -
            }
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
            void
         
     | 
| 
       63 
     | 
    
         
            -
            priq_down(PriorityQueue *priq, VALUE self, VALUE rary)
         
     | 
| 
       64 
     | 
    
         
            -
            {
         
     | 
| 
       65 
     | 
    
         
            -
              int i, j, k, len;
         
     | 
| 
       66 
     | 
    
         
            -
              VALUE *heap, node;
         
     | 
| 
       67 
     | 
    
         
            -
              
         
     | 
| 
       68 
     | 
    
         
            -
              i = 1;
         
     | 
| 
       69 
     | 
    
         
            -
              heap = priq->heap;
         
     | 
| 
       70 
     | 
    
         
            -
              len = priq->len;
         
     | 
| 
       71 
     | 
    
         
            -
              node = heap[i];
         
     | 
| 
       72 
     | 
    
         
            -
              j = i << 1;
         
     | 
| 
       73 
     | 
    
         
            -
              k = j + 1;
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
              if ((k <= len) && rb_funcall(self, less_than, 2, heap[k], heap[j]))
         
     | 
| 
       76 
     | 
    
         
            -
                j = k;
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
              while((j <= len) && rb_funcall(self, less_than, 2, heap[j], node)){
         
     | 
| 
       79 
     | 
    
         
            -
                heap[i] = heap[j];
         
     | 
| 
       80 
     | 
    
         
            -
                i = j;
         
     | 
| 
       81 
     | 
    
         
            -
                j = i << 1;
         
     | 
| 
       82 
     | 
    
         
            -
                k = j + 1;
         
     | 
| 
       83 
     | 
    
         
            -
                if((k <= len) && rb_funcall(self, less_than, 2, heap[k], heap[j]))
         
     | 
| 
       84 
     | 
    
         
            -
                  j = k;
         
     | 
| 
       85 
     | 
    
         
            -
              }
         
     | 
| 
       86 
     | 
    
         
            -
              rb_ary_store(rary,i, node);
         
     | 
| 
       87 
     | 
    
         
            -
            }
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       90 
     | 
    
         
            -
            frt_priq_push(VALUE self, VALUE e)
         
     | 
| 
       91 
     | 
    
         
            -
            {
         
     | 
| 
       92 
     | 
    
         
            -
              PriorityQueue *priq;
         
     | 
| 
       93 
     | 
    
         
            -
              int len;
         
     | 
| 
       94 
     | 
    
         
            -
              VALUE rary;
         
     | 
| 
       95 
     | 
    
         
            -
              Data_Get_Struct(self, PriorityQueue, priq);
         
     | 
| 
       96 
     | 
    
         
            -
              len = priq->len;
         
     | 
| 
       97 
     | 
    
         
            -
              rary = rb_iv_get(self, "@heap");
         
     | 
| 
       98 
     | 
    
         
            -
              
         
     | 
| 
       99 
     | 
    
         
            -
              len++;
         
     | 
| 
       100 
     | 
    
         
            -
              rb_ary_store(rary, len, e);
         
     | 
| 
       101 
     | 
    
         
            -
              priq->len = len;
         
     | 
| 
       102 
     | 
    
         
            -
              priq_up(priq, self, rary);
         
     | 
| 
       103 
     | 
    
         
            -
              
         
     | 
| 
       104 
     | 
    
         
            -
              return Qnil;
         
     | 
| 
       105 
     | 
    
         
            -
            }
         
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       108 
     | 
    
         
            -
            frt_priq_insert(VALUE self, VALUE e)
         
     | 
| 
       109 
     | 
    
         
            -
            {
         
     | 
| 
       110 
     | 
    
         
            -
              PriorityQueue *priq;
         
     | 
| 
       111 
     | 
    
         
            -
              VALUE *heap, rary;
         
     | 
| 
       112 
     | 
    
         
            -
              int len, size;
         
     | 
| 
       113 
     | 
    
         
            -
              rary = rb_iv_get(self, "@heap");
         
     | 
| 
       114 
     | 
    
         
            -
              
         
     | 
| 
       115 
     | 
    
         
            -
              Data_Get_Struct(self, PriorityQueue, priq);
         
     | 
| 
       116 
     | 
    
         
            -
              len = priq->len;
         
     | 
| 
       117 
     | 
    
         
            -
              size = priq->size;
         
     | 
| 
       118 
     | 
    
         
            -
              heap = priq->heap;
         
     | 
| 
       119 
     | 
    
         
            -
              
         
     | 
| 
       120 
     | 
    
         
            -
              if(len < size){
         
     | 
| 
       121 
     | 
    
         
            -
                frt_priq_push(self, e);
         
     | 
| 
       122 
     | 
    
         
            -
                return 1;
         
     | 
| 
       123 
     | 
    
         
            -
              } else if ((len > 0) && !rb_funcall(self, less_than, 2, e, heap[1])) {
         
     | 
| 
       124 
     | 
    
         
            -
                heap[1] = e;
         
     | 
| 
       125 
     | 
    
         
            -
                priq_down(priq, self, rary);
         
     | 
| 
       126 
     | 
    
         
            -
                return 1;
         
     | 
| 
       127 
     | 
    
         
            -
              } else {
         
     | 
| 
       128 
     | 
    
         
            -
                return 0;
         
     | 
| 
       129 
     | 
    
         
            -
              }
         
     | 
| 
       130 
     | 
    
         
            -
            }
         
     | 
| 
       131 
     | 
    
         
            -
             
     | 
| 
       132 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       133 
     | 
    
         
            -
            frt_priq_top(VALUE self)
         
     | 
| 
       134 
     | 
    
         
            -
            {
         
     | 
| 
       135 
     | 
    
         
            -
              PriorityQueue *priq;
         
     | 
| 
       136 
     | 
    
         
            -
              VALUE *heap;
         
     | 
| 
       137 
     | 
    
         
            -
              int len;
         
     | 
| 
       138 
     | 
    
         
            -
              
         
     | 
| 
       139 
     | 
    
         
            -
              Data_Get_Struct(self, PriorityQueue, priq);
         
     | 
| 
       140 
     | 
    
         
            -
              len = priq->len;
         
     | 
| 
       141 
     | 
    
         
            -
              heap = priq->heap;
         
     | 
| 
       142 
     | 
    
         
            -
             
     | 
| 
       143 
     | 
    
         
            -
              if(len > 0)
         
     | 
| 
       144 
     | 
    
         
            -
                return heap[1];
         
     | 
| 
       145 
     | 
    
         
            -
              else
         
     | 
| 
       146 
     | 
    
         
            -
                return Qnil;
         
     | 
| 
       147 
     | 
    
         
            -
            }
         
     | 
| 
       148 
     | 
    
         
            -
             
     | 
| 
       149 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       150 
     | 
    
         
            -
            frt_priq_pop(VALUE self)
         
     | 
| 
       151 
     | 
    
         
            -
            {
         
     | 
| 
       152 
     | 
    
         
            -
              PriorityQueue *priq;
         
     | 
| 
       153 
     | 
    
         
            -
              VALUE *heap, rary;
         
     | 
| 
       154 
     | 
    
         
            -
              int len;
         
     | 
| 
       155 
     | 
    
         
            -
              
         
     | 
| 
       156 
     | 
    
         
            -
              Data_Get_Struct(self, PriorityQueue, priq);
         
     | 
| 
       157 
     | 
    
         
            -
              rary = rb_iv_get(self, "@heap");
         
     | 
| 
       158 
     | 
    
         
            -
              len = priq->len;
         
     | 
| 
       159 
     | 
    
         
            -
              heap = priq->heap;
         
     | 
| 
       160 
     | 
    
         
            -
             
     | 
| 
       161 
     | 
    
         
            -
              if(len > 0){
         
     | 
| 
       162 
     | 
    
         
            -
                VALUE res = heap[1];
         
     | 
| 
       163 
     | 
    
         
            -
                heap[1] = heap[len];
         
     | 
| 
       164 
     | 
    
         
            -
                heap[len] = Qnil;
         
     | 
| 
       165 
     | 
    
         
            -
                len--;
         
     | 
| 
       166 
     | 
    
         
            -
                priq->len = len;
         
     | 
| 
       167 
     | 
    
         
            -
                priq_down(priq, self, rary);
         
     | 
| 
       168 
     | 
    
         
            -
                return res;
         
     | 
| 
       169 
     | 
    
         
            -
              } else
         
     | 
| 
       170 
     | 
    
         
            -
                return Qnil;
         
     | 
| 
       171 
     | 
    
         
            -
            }
         
     | 
| 
       172 
     | 
    
         
            -
             
     | 
| 
       173 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       174 
     | 
    
         
            -
            frt_priq_clear(VALUE self)
         
     | 
| 
       175 
     | 
    
         
            -
            {
         
     | 
| 
       176 
     | 
    
         
            -
              PriorityQueue *priq;
         
     | 
| 
       177 
     | 
    
         
            -
              VALUE heap;
         
     | 
| 
       178 
     | 
    
         
            -
              Data_Get_Struct(self, PriorityQueue, priq);
         
     | 
| 
       179 
     | 
    
         
            -
              heap = rb_ary_new2(priq->size+1);
         
     | 
| 
       180 
     | 
    
         
            -
              rb_iv_set(self, "@heap", heap);
         
     | 
| 
       181 
     | 
    
         
            -
              priq->heap = RARRAY(heap)->ptr;
         
     | 
| 
       182 
     | 
    
         
            -
              priq->len = 0;
         
     | 
| 
       183 
     | 
    
         
            -
              return Qnil;
         
     | 
| 
       184 
     | 
    
         
            -
              
         
     | 
| 
       185 
     | 
    
         
            -
            }
         
     | 
| 
       186 
     | 
    
         
            -
             
     | 
| 
       187 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       188 
     | 
    
         
            -
            frt_priq_size(VALUE self)
         
     | 
| 
       189 
     | 
    
         
            -
            {
         
     | 
| 
       190 
     | 
    
         
            -
              PriorityQueue *priq;
         
     | 
| 
       191 
     | 
    
         
            -
              Data_Get_Struct(self, PriorityQueue, priq);
         
     | 
| 
       192 
     | 
    
         
            -
              return INT2FIX(priq->len);
         
     | 
| 
       193 
     | 
    
         
            -
            }
         
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       196 
     | 
    
         
            -
            frt_priq_adjust_top(VALUE self)
         
     | 
| 
       197 
     | 
    
         
            -
            {
         
     | 
| 
       198 
     | 
    
         
            -
              PriorityQueue *priq;
         
     | 
| 
       199 
     | 
    
         
            -
              VALUE rary;
         
     | 
| 
       200 
     | 
    
         
            -
              Data_Get_Struct(self, PriorityQueue, priq);
         
     | 
| 
       201 
     | 
    
         
            -
              rary = rb_iv_get(self, "@heap");
         
     | 
| 
       202 
     | 
    
         
            -
              
         
     | 
| 
       203 
     | 
    
         
            -
              priq_down(priq, self, rary);
         
     | 
| 
       204 
     | 
    
         
            -
              
         
     | 
| 
       205 
     | 
    
         
            -
              return Qnil;
         
     | 
| 
       206 
     | 
    
         
            -
            }
         
     | 
| 
       207 
     | 
    
         
            -
             
     | 
| 
       208 
     | 
    
         
            -
             
     | 
| 
       209 
     | 
    
         
            -
            /****************************************************************************
         
     | 
| 
       210 
     | 
    
         
            -
             *
         
     | 
| 
       211 
     | 
    
         
            -
             * Init Function
         
     | 
| 
       212 
     | 
    
         
            -
             *
         
     | 
| 
       213 
     | 
    
         
            -
             ****************************************************************************/
         
     | 
| 
       214 
     | 
    
         
            -
             
     | 
| 
       215 
     | 
    
         
            -
            void
         
     | 
| 
       216 
     | 
    
         
            -
            Init_priority_queue(void)
         
     | 
| 
       217 
     | 
    
         
            -
            {
         
     | 
| 
       218 
     | 
    
         
            -
              less_than = rb_intern("less_than");
         
     | 
| 
       219 
     | 
    
         
            -
              put_heap = rb_intern("put_heap");
         
     | 
| 
       220 
     | 
    
         
            -
              
         
     | 
| 
       221 
     | 
    
         
            -
              cPriorityQueue = rb_define_class_under(mUtils, "PriorityQueue", rb_cObject);
         
     | 
| 
       222 
     | 
    
         
            -
              rb_define_alloc_func(cPriorityQueue, frt_priq_alloc);
         
     | 
| 
       223 
     | 
    
         
            -
             
     | 
| 
       224 
     | 
    
         
            -
              rb_define_method(cPriorityQueue, "initialize", frt_priq_init, 1);
         
     | 
| 
       225 
     | 
    
         
            -
              rb_define_method(cPriorityQueue, "pop", frt_priq_pop, 0);
         
     | 
| 
       226 
     | 
    
         
            -
              rb_define_method(cPriorityQueue, "top", frt_priq_top, 0);
         
     | 
| 
       227 
     | 
    
         
            -
              rb_define_method(cPriorityQueue, "clear", frt_priq_clear, 0);
         
     | 
| 
       228 
     | 
    
         
            -
              rb_define_method(cPriorityQueue, "insert", frt_priq_insert, 1);
         
     | 
| 
       229 
     | 
    
         
            -
              rb_define_method(cPriorityQueue, "push", frt_priq_push, 1);
         
     | 
| 
       230 
     | 
    
         
            -
              rb_define_method(cPriorityQueue, "size", frt_priq_size, 0);
         
     | 
| 
       231 
     | 
    
         
            -
              rb_define_method(cPriorityQueue, "adjust_top", frt_priq_adjust_top, 0);
         
     | 
| 
       232 
     | 
    
         
            -
            }
         
     | 
    
        data/ext/ram_directory.c
    DELETED
    
    | 
         @@ -1,321 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #include "ferret.h"
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            ID flush, seek, id_file, id_pointer;
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            /****************************************************************************
         
     | 
| 
       6 
     | 
    
         
            -
             *
         
     | 
| 
       7 
     | 
    
         
            -
             * RAMFile Methods
         
     | 
| 
       8 
     | 
    
         
            -
             *
         
     | 
| 
       9 
     | 
    
         
            -
             ****************************************************************************/
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            void
         
     | 
| 
       12 
     | 
    
         
            -
            frt_rf_free(void *p)
         
     | 
| 
       13 
     | 
    
         
            -
            {
         
     | 
| 
       14 
     | 
    
         
            -
              int i;
         
     | 
| 
       15 
     | 
    
         
            -
              RAMFile *rf = (RAMFile *)p;
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
              for (i = 0; i < rf->bufcnt; i++) {
         
     | 
| 
       18 
     | 
    
         
            -
                free(rf->buffers[i]);
         
     | 
| 
       19 
     | 
    
         
            -
              }
         
     | 
| 
       20 
     | 
    
         
            -
              free(rf->buffers);
         
     | 
| 
       21 
     | 
    
         
            -
              free(rf);
         
     | 
| 
       22 
     | 
    
         
            -
            }
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
            void
         
     | 
| 
       25 
     | 
    
         
            -
            frt_rf_mark(void *p)
         
     | 
| 
       26 
     | 
    
         
            -
            {
         
     | 
| 
       27 
     | 
    
         
            -
              RAMFile *rf = (RAMFile *)p;
         
     | 
| 
       28 
     | 
    
         
            -
              rb_gc_mark(rf->mtime);
         
     | 
| 
       29 
     | 
    
         
            -
            }
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       32 
     | 
    
         
            -
            frt_rf_alloc(VALUE klass)
         
     | 
| 
       33 
     | 
    
         
            -
            {
         
     | 
| 
       34 
     | 
    
         
            -
              RAMFile *rf;
         
     | 
| 
       35 
     | 
    
         
            -
              byte_t *buf;
         
     | 
| 
       36 
     | 
    
         
            -
              VALUE rrf;
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
              rf = ALLOC(RAMFile);
         
     | 
| 
       39 
     | 
    
         
            -
              buf = ALLOC_N(byte_t, BUFFER_SIZE);
         
     | 
| 
       40 
     | 
    
         
            -
              rf->buffers = ALLOC_N(void *, 1);
         
     | 
| 
       41 
     | 
    
         
            -
              rf->buffers[0] = buf;
         
     | 
| 
       42 
     | 
    
         
            -
              rf->bufcnt = 1;
         
     | 
| 
       43 
     | 
    
         
            -
              rf->length = 0;
         
     | 
| 
       44 
     | 
    
         
            -
              rf->mtime = rb_funcall(rb_cTime, id_new, 0);
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
              rrf = Data_Wrap_Struct(klass, frt_rf_mark, frt_rf_free, rf);
         
     | 
| 
       47 
     | 
    
         
            -
              return rrf;
         
     | 
| 
       48 
     | 
    
         
            -
            }
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
            void
         
     | 
| 
       51 
     | 
    
         
            -
            frt_rf_extend(RAMFile *rf)
         
     | 
| 
       52 
     | 
    
         
            -
            {
         
     | 
| 
       53 
     | 
    
         
            -
              byte_t *buf = ALLOC_N(byte_t, BUFFER_SIZE);
         
     | 
| 
       54 
     | 
    
         
            -
              rf->bufcnt++;
         
     | 
| 
       55 
     | 
    
         
            -
              REALLOC_N(rf->buffers, void *, rf->bufcnt);
         
     | 
| 
       56 
     | 
    
         
            -
              rf->buffers[rf->bufcnt - 1] = buf;
         
     | 
| 
       57 
     | 
    
         
            -
            }
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       60 
     | 
    
         
            -
            frt_rf_length(VALUE self)
         
     | 
| 
       61 
     | 
    
         
            -
            {
         
     | 
| 
       62 
     | 
    
         
            -
              RAMFile *rf;
         
     | 
| 
       63 
     | 
    
         
            -
              Data_Get_Struct(self, RAMFile, rf);
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
              return INT2FIX(rf->length);
         
     | 
| 
       66 
     | 
    
         
            -
            }
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
            /****************************************************************************
         
     | 
| 
       69 
     | 
    
         
            -
             *
         
     | 
| 
       70 
     | 
    
         
            -
             * RAMIndexOutput Methods
         
     | 
| 
       71 
     | 
    
         
            -
             *
         
     | 
| 
       72 
     | 
    
         
            -
             ****************************************************************************/
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       75 
     | 
    
         
            -
            frt_rio_init(VALUE self, VALUE ramfile)
         
     | 
| 
       76 
     | 
    
         
            -
            {
         
     | 
| 
       77 
     | 
    
         
            -
              rb_ivar_set(self, id_file, ramfile); 
         
     | 
| 
       78 
     | 
    
         
            -
              rb_ivar_set(self, id_pointer, INT2FIX(0)); 
         
     | 
| 
       79 
     | 
    
         
            -
              return self;
         
     | 
| 
       80 
     | 
    
         
            -
            }
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       83 
     | 
    
         
            -
            frt_rio_length(VALUE self)
         
     | 
| 
       84 
     | 
    
         
            -
            {
         
     | 
| 
       85 
     | 
    
         
            -
              VALUE file = rb_ivar_get(self, id_file);
         
     | 
| 
       86 
     | 
    
         
            -
              RAMFile *rf;
         
     | 
| 
       87 
     | 
    
         
            -
              Data_Get_Struct(file, RAMFile, rf);
         
     | 
| 
       88 
     | 
    
         
            -
              return INT2FIX(rf->length);
         
     | 
| 
       89 
     | 
    
         
            -
            }
         
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
            void
         
     | 
| 
       92 
     | 
    
         
            -
            frt_extend_buffer_if_necessary(RAMFile *rf, int bufnum)
         
     | 
| 
       93 
     | 
    
         
            -
            {
         
     | 
| 
       94 
     | 
    
         
            -
              while (bufnum >= rf->bufcnt) {
         
     | 
| 
       95 
     | 
    
         
            -
                frt_rf_extend(rf);
         
     | 
| 
       96 
     | 
    
         
            -
              }
         
     | 
| 
       97 
     | 
    
         
            -
            }
         
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       100 
     | 
    
         
            -
            frt_rio_flush_buffer(VALUE self, VALUE rsrc, VALUE rlen)
         
     | 
| 
       101 
     | 
    
         
            -
            {
         
     | 
| 
       102 
     | 
    
         
            -
              int buffer_number, buffer_offset, bytes_in_buffer, bytes_to_copy;
         
     | 
| 
       103 
     | 
    
         
            -
              int src_offset;
         
     | 
| 
       104 
     | 
    
         
            -
              int len = FIX2INT(rlen);
         
     | 
| 
       105 
     | 
    
         
            -
              /* char *src = StringValuePtr(rsrc); */
         
     | 
| 
       106 
     | 
    
         
            -
              int pointer = FIX2INT(rb_ivar_get(self, id_pointer));
         
     | 
| 
       107 
     | 
    
         
            -
              byte_t *buffer;
         
     | 
| 
       108 
     | 
    
         
            -
             
         
     | 
| 
       109 
     | 
    
         
            -
              VALUE file = rb_ivar_get(self, id_file);
         
     | 
| 
       110 
     | 
    
         
            -
              RAMFile *rf;
         
     | 
| 
       111 
     | 
    
         
            -
              Data_Get_Struct(file, RAMFile, rf);
         
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
              buffer_number = (int)(pointer / BUFFER_SIZE);
         
     | 
| 
       114 
     | 
    
         
            -
              buffer_offset = pointer % BUFFER_SIZE;
         
     | 
| 
       115 
     | 
    
         
            -
              bytes_in_buffer = BUFFER_SIZE - buffer_offset;
         
     | 
| 
       116 
     | 
    
         
            -
              bytes_to_copy = bytes_in_buffer < len ? bytes_in_buffer : len;
         
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
       118 
     | 
    
         
            -
              frt_extend_buffer_if_necessary(rf, buffer_number);
         
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
              buffer = rf->buffers[buffer_number];
         
     | 
| 
       121 
     | 
    
         
            -
              MEMCPY(buffer + buffer_offset, RSTRING(rsrc)->ptr, byte_t, bytes_to_copy);
         
     | 
| 
       122 
     | 
    
         
            -
              
         
     | 
| 
       123 
     | 
    
         
            -
              if (bytes_to_copy < len) {
         
     | 
| 
       124 
     | 
    
         
            -
                src_offset = bytes_to_copy;
         
     | 
| 
       125 
     | 
    
         
            -
                bytes_to_copy = len - bytes_to_copy;
         
     | 
| 
       126 
     | 
    
         
            -
                buffer_number += 1;
         
     | 
| 
       127 
     | 
    
         
            -
                frt_extend_buffer_if_necessary(rf, buffer_number);
         
     | 
| 
       128 
     | 
    
         
            -
                buffer = rf->buffers[buffer_number];
         
     | 
| 
       129 
     | 
    
         
            -
             
     | 
| 
       130 
     | 
    
         
            -
                MEMCPY(buffer, RSTRING(rsrc)->ptr + src_offset, byte_t, bytes_to_copy);
         
     | 
| 
       131 
     | 
    
         
            -
              }
         
     | 
| 
       132 
     | 
    
         
            -
              pointer += len;
         
     | 
| 
       133 
     | 
    
         
            -
              rb_ivar_set(self, id_pointer, INT2FIX(pointer));
         
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
     | 
    
         
            -
              if (pointer > rf->length)
         
     | 
| 
       136 
     | 
    
         
            -
                rf->length = pointer;
         
     | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
       138 
     | 
    
         
            -
              rf->mtime = rb_class_new_instance(0, NULL, rb_cTime);
         
     | 
| 
       139 
     | 
    
         
            -
              return Qnil;
         
     | 
| 
       140 
     | 
    
         
            -
            }
         
     | 
| 
       141 
     | 
    
         
            -
             
     | 
| 
       142 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       143 
     | 
    
         
            -
            frt_rio_seek(VALUE self, VALUE rpos)
         
     | 
| 
       144 
     | 
    
         
            -
            {
         
     | 
| 
       145 
     | 
    
         
            -
              rb_call_super(1, &rpos);
         
     | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
       147 
     | 
    
         
            -
              rb_ivar_set(self, id_pointer, rpos);
         
     | 
| 
       148 
     | 
    
         
            -
             
     | 
| 
       149 
     | 
    
         
            -
              return rpos;
         
     | 
| 
       150 
     | 
    
         
            -
            }
         
     | 
| 
       151 
     | 
    
         
            -
             
     | 
| 
       152 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       153 
     | 
    
         
            -
            frt_rio_reset(VALUE self)
         
     | 
| 
       154 
     | 
    
         
            -
            {
         
     | 
| 
       155 
     | 
    
         
            -
              VALUE file = rb_ivar_get(self, id_file);
         
     | 
| 
       156 
     | 
    
         
            -
              RAMFile *rf;
         
     | 
| 
       157 
     | 
    
         
            -
              Data_Get_Struct(file, RAMFile, rf);
         
     | 
| 
       158 
     | 
    
         
            -
             
     | 
| 
       159 
     | 
    
         
            -
              rb_funcall(self, seek, 1, INT2FIX(0));
         
     | 
| 
       160 
     | 
    
         
            -
             
     | 
| 
       161 
     | 
    
         
            -
              rf->length = 0;
         
     | 
| 
       162 
     | 
    
         
            -
              return Qnil;
         
     | 
| 
       163 
     | 
    
         
            -
            }
         
     | 
| 
       164 
     | 
    
         
            -
             
     | 
| 
       165 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       166 
     | 
    
         
            -
            frt_rio_close(VALUE self)
         
     | 
| 
       167 
     | 
    
         
            -
            {
         
     | 
| 
       168 
     | 
    
         
            -
              VALUE file = rb_ivar_get(self, id_file);
         
     | 
| 
       169 
     | 
    
         
            -
              RAMFile *rf;
         
     | 
| 
       170 
     | 
    
         
            -
              Data_Get_Struct(file, RAMFile, rf);
         
     | 
| 
       171 
     | 
    
         
            -
              rf->mtime = rb_funcall(rb_cTime, id_new, 0);
         
     | 
| 
       172 
     | 
    
         
            -
              rb_call_super(0, NULL);
         
     | 
| 
       173 
     | 
    
         
            -
              return Qnil;
         
     | 
| 
       174 
     | 
    
         
            -
            }
         
     | 
| 
       175 
     | 
    
         
            -
             
     | 
| 
       176 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       177 
     | 
    
         
            -
            frt_rio_write_to(VALUE self, VALUE routput)
         
     | 
| 
       178 
     | 
    
         
            -
            {
         
     | 
| 
       179 
     | 
    
         
            -
              int i, len;
         
     | 
| 
       180 
     | 
    
         
            -
              int last_buffer_number, last_buffer_offset; 
         
     | 
| 
       181 
     | 
    
         
            -
              VALUE file = rb_ivar_get(self, id_file);
         
     | 
| 
       182 
     | 
    
         
            -
              RAMFile *rf;
         
     | 
| 
       183 
     | 
    
         
            -
              Data_Get_Struct(file, RAMFile, rf);
         
     | 
| 
       184 
     | 
    
         
            -
             
     | 
| 
       185 
     | 
    
         
            -
              rb_funcall(self, flush, 0);
         
     | 
| 
       186 
     | 
    
         
            -
             
     | 
| 
       187 
     | 
    
         
            -
              last_buffer_number = (int)(rf->length / BUFFER_SIZE);
         
     | 
| 
       188 
     | 
    
         
            -
              last_buffer_offset = rf->length % BUFFER_SIZE;
         
     | 
| 
       189 
     | 
    
         
            -
             
     | 
| 
       190 
     | 
    
         
            -
              for (i = 0; i < rf->bufcnt; i++) {
         
     | 
| 
       191 
     | 
    
         
            -
                len = ((i == last_buffer_number) ? last_buffer_offset : BUFFER_SIZE);
         
     | 
| 
       192 
     | 
    
         
            -
                frt_write_bytes(routput, rf->buffers[i], len);
         
     | 
| 
       193 
     | 
    
         
            -
              }
         
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
     | 
    
         
            -
              return Qnil;
         
     | 
| 
       196 
     | 
    
         
            -
            }
         
     | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
       198 
     | 
    
         
            -
            /****************************************************************************
         
     | 
| 
       199 
     | 
    
         
            -
             *
         
     | 
| 
       200 
     | 
    
         
            -
             * RAMIndexInput Methods
         
     | 
| 
       201 
     | 
    
         
            -
             *
         
     | 
| 
       202 
     | 
    
         
            -
             ****************************************************************************/
         
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       205 
     | 
    
         
            -
            frt_rii_init(VALUE self, VALUE ramfile)
         
     | 
| 
       206 
     | 
    
         
            -
            {
         
     | 
| 
       207 
     | 
    
         
            -
              rb_ivar_set(self, id_file, ramfile); 
         
     | 
| 
       208 
     | 
    
         
            -
              rb_ivar_set(self, id_pointer, INT2FIX(0)); 
         
     | 
| 
       209 
     | 
    
         
            -
              return self;
         
     | 
| 
       210 
     | 
    
         
            -
            }
         
     | 
| 
       211 
     | 
    
         
            -
             
     | 
| 
       212 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       213 
     | 
    
         
            -
            frt_rii_length(VALUE self)
         
     | 
| 
       214 
     | 
    
         
            -
            {
         
     | 
| 
       215 
     | 
    
         
            -
              VALUE file = rb_ivar_get(self, id_file);
         
     | 
| 
       216 
     | 
    
         
            -
              RAMFile *rf;
         
     | 
| 
       217 
     | 
    
         
            -
              Data_Get_Struct(file, RAMFile, rf);
         
     | 
| 
       218 
     | 
    
         
            -
              return INT2FIX(rf->length);
         
     | 
| 
       219 
     | 
    
         
            -
            }
         
     | 
| 
       220 
     | 
    
         
            -
             
     | 
| 
       221 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       222 
     | 
    
         
            -
            frt_rii_read_internal(VALUE self, VALUE rb, VALUE roffset, VALUE rlen)
         
     | 
| 
       223 
     | 
    
         
            -
            {
         
     | 
| 
       224 
     | 
    
         
            -
              int buffer_number, buffer_offset, bytes_in_buffer, bytes_to_copy;
         
     | 
| 
       225 
     | 
    
         
            -
              int offset = FIX2INT(roffset);
         
     | 
| 
       226 
     | 
    
         
            -
              int len = FIX2INT(rlen);
         
     | 
| 
       227 
     | 
    
         
            -
              int remainder = len;
         
     | 
| 
       228 
     | 
    
         
            -
              int pointer = FIX2INT(rb_ivar_get(self, id_pointer));
         
     | 
| 
       229 
     | 
    
         
            -
              int start = pointer;
         
     | 
| 
       230 
     | 
    
         
            -
              byte_t *buffer;
         
     | 
| 
       231 
     | 
    
         
            -
              byte_t *b = (byte_t *)StringValuePtr(rb);
         
     | 
| 
       232 
     | 
    
         
            -
              
         
     | 
| 
       233 
     | 
    
         
            -
              VALUE file = rb_ivar_get(self, id_file);
         
     | 
| 
       234 
     | 
    
         
            -
              RAMFile *rf;
         
     | 
| 
       235 
     | 
    
         
            -
              Data_Get_Struct(file, RAMFile, rf);
         
     | 
| 
       236 
     | 
    
         
            -
             
     | 
| 
       237 
     | 
    
         
            -
              while (remainder > 0) {
         
     | 
| 
       238 
     | 
    
         
            -
                buffer_number = (int)(start / BUFFER_SIZE);
         
     | 
| 
       239 
     | 
    
         
            -
                buffer_offset = start % BUFFER_SIZE;
         
     | 
| 
       240 
     | 
    
         
            -
                bytes_in_buffer = BUFFER_SIZE - buffer_offset;
         
     | 
| 
       241 
     | 
    
         
            -
                
         
     | 
| 
       242 
     | 
    
         
            -
                if (bytes_in_buffer >= remainder) {
         
     | 
| 
       243 
     | 
    
         
            -
                  bytes_to_copy = remainder;
         
     | 
| 
       244 
     | 
    
         
            -
                } else {
         
     | 
| 
       245 
     | 
    
         
            -
                  bytes_to_copy = bytes_in_buffer;
         
     | 
| 
       246 
     | 
    
         
            -
                }
         
     | 
| 
       247 
     | 
    
         
            -
                buffer = rf->buffers[buffer_number];
         
     | 
| 
       248 
     | 
    
         
            -
                MEMCPY(b + offset, buffer + buffer_offset, byte_t, bytes_to_copy);
         
     | 
| 
       249 
     | 
    
         
            -
                offset += bytes_to_copy;
         
     | 
| 
       250 
     | 
    
         
            -
                start += bytes_to_copy;
         
     | 
| 
       251 
     | 
    
         
            -
                remainder -= bytes_to_copy;
         
     | 
| 
       252 
     | 
    
         
            -
              }
         
     | 
| 
       253 
     | 
    
         
            -
              
         
     | 
| 
       254 
     | 
    
         
            -
              rb_ivar_set(self, id_pointer, INT2FIX(pointer + len));
         
     | 
| 
       255 
     | 
    
         
            -
              return Qnil;
         
     | 
| 
       256 
     | 
    
         
            -
            }
         
     | 
| 
       257 
     | 
    
         
            -
             
     | 
| 
       258 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       259 
     | 
    
         
            -
            frt_rii_seek_internal(VALUE self, VALUE rpos)
         
     | 
| 
       260 
     | 
    
         
            -
            {
         
     | 
| 
       261 
     | 
    
         
            -
              rb_ivar_set(self, id_pointer, rpos);
         
     | 
| 
       262 
     | 
    
         
            -
              return Qnil;
         
     | 
| 
       263 
     | 
    
         
            -
            }
         
     | 
| 
       264 
     | 
    
         
            -
             
     | 
| 
       265 
     | 
    
         
            -
            static VALUE
         
     | 
| 
       266 
     | 
    
         
            -
            frt_rii_close(VALUE self)
         
     | 
| 
       267 
     | 
    
         
            -
            {
         
     | 
| 
       268 
     | 
    
         
            -
              return Qnil;
         
     | 
| 
       269 
     | 
    
         
            -
            }
         
     | 
| 
       270 
     | 
    
         
            -
             
     | 
| 
       271 
     | 
    
         
            -
            /****************************************************************************
         
     | 
| 
       272 
     | 
    
         
            -
             *
         
     | 
| 
       273 
     | 
    
         
            -
             * Init Function
         
     | 
| 
       274 
     | 
    
         
            -
             *
         
     | 
| 
       275 
     | 
    
         
            -
             ****************************************************************************/
         
     | 
| 
       276 
     | 
    
         
            -
             
     | 
| 
       277 
     | 
    
         
            -
            void
         
     | 
| 
       278 
     | 
    
         
            -
            Init_ram_directory(void)
         
     | 
| 
       279 
     | 
    
         
            -
            {
         
     | 
| 
       280 
     | 
    
         
            -
              VALUE cDirectory, cRAMFile;
         
     | 
| 
       281 
     | 
    
         
            -
              /* IDs */
         
     | 
| 
       282 
     | 
    
         
            -
              flush = rb_intern("flush");
         
     | 
| 
       283 
     | 
    
         
            -
              seek = rb_intern("seek");
         
     | 
| 
       284 
     | 
    
         
            -
              id_file = rb_intern("@file");
         
     | 
| 
       285 
     | 
    
         
            -
              id_pointer = rb_intern("@pointer");
         
     | 
| 
       286 
     | 
    
         
            -
             
     | 
| 
       287 
     | 
    
         
            -
              /* RAMDirectory */
         
     | 
| 
       288 
     | 
    
         
            -
              cDirectory = rb_define_class_under(mStore, "Directory", rb_cObject);
         
     | 
| 
       289 
     | 
    
         
            -
              cRAMDirectory = rb_define_class_under(mStore, "RAMDirectory", cDirectory);
         
     | 
| 
       290 
     | 
    
         
            -
             
     | 
| 
       291 
     | 
    
         
            -
              /* RAMFile */
         
     | 
| 
       292 
     | 
    
         
            -
              cRAMFile = rb_define_class_under(cRAMDirectory, "RAMFile", rb_cObject);
         
     | 
| 
       293 
     | 
    
         
            -
              rb_define_alloc_func(cRAMFile, frt_rf_alloc);
         
     | 
| 
       294 
     | 
    
         
            -
             
     | 
| 
       295 
     | 
    
         
            -
              /* Methods */
         
     | 
| 
       296 
     | 
    
         
            -
              rb_define_method(cRAMFile, "length", frt_rf_length, 0);
         
     | 
| 
       297 
     | 
    
         
            -
             
     | 
| 
       298 
     | 
    
         
            -
              /* RAMIndexOutput */
         
     | 
| 
       299 
     | 
    
         
            -
              cRAMIndexOut = rb_define_class_under(cRAMDirectory, "RAMIndexOutput", cBufferedIndexOut);
         
     | 
| 
       300 
     | 
    
         
            -
              /*rb_define_alloc_func(cRAMIndexOut, frt_ramio_alloc); */
         
     | 
| 
       301 
     | 
    
         
            -
             
     | 
| 
       302 
     | 
    
         
            -
              /* Methods */
         
     | 
| 
       303 
     | 
    
         
            -
              rb_define_method(cRAMIndexOut, "initialize", frt_rio_init, 1);
         
     | 
| 
       304 
     | 
    
         
            -
              rb_define_method(cRAMIndexOut, "length", frt_rio_length, 0);
         
     | 
| 
       305 
     | 
    
         
            -
              rb_define_method(cRAMIndexOut, "flush_buffer", frt_rio_flush_buffer, 2);
         
     | 
| 
       306 
     | 
    
         
            -
              rb_define_method(cRAMIndexOut, "reset", frt_rio_reset, 0);
         
     | 
| 
       307 
     | 
    
         
            -
              rb_define_method(cRAMIndexOut, "seek", frt_rio_seek, 1);
         
     | 
| 
       308 
     | 
    
         
            -
              rb_define_method(cRAMIndexOut, "close", frt_rio_close, 0);
         
     | 
| 
       309 
     | 
    
         
            -
              rb_define_method(cRAMIndexOut, "write_to", frt_rio_write_to, 1);
         
     | 
| 
       310 
     | 
    
         
            -
             
     | 
| 
       311 
     | 
    
         
            -
              /* RAMIndexInput */
         
     | 
| 
       312 
     | 
    
         
            -
              cRAMIndexIn = rb_define_class_under(cRAMDirectory, "RAMIndexInput", cBufferedIndexIn);
         
     | 
| 
       313 
     | 
    
         
            -
              /*rb_define_alloc_func(cRAMIndexIn, frt_ramio_alloc); */
         
     | 
| 
       314 
     | 
    
         
            -
             
     | 
| 
       315 
     | 
    
         
            -
              /* Methods */
         
     | 
| 
       316 
     | 
    
         
            -
              rb_define_method(cRAMIndexIn, "initialize", frt_rii_init, 1);
         
     | 
| 
       317 
     | 
    
         
            -
              rb_define_method(cRAMIndexIn, "length", frt_rii_length, 0);
         
     | 
| 
       318 
     | 
    
         
            -
              rb_define_method(cRAMIndexIn, "read_internal", frt_rii_read_internal, 3);
         
     | 
| 
       319 
     | 
    
         
            -
              rb_define_method(cRAMIndexIn, "seek_internal", frt_rii_seek_internal, 1);
         
     | 
| 
       320 
     | 
    
         
            -
              rb_define_method(cRAMIndexIn, "close", frt_rii_close, 0);
         
     | 
| 
       321 
     | 
    
         
            -
            }
         
     |