Class: BkTree

Inherits:
Object
  • Object
show all
Defined in:
ext/bktree.c

Instance Method Summary collapse

Instance Method Details

#add(word) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'ext/bktree.c', line 13

static VALUE rb_bktree_add(VALUE self, VALUE word) {
    StringValue(word);

    BKTree * bktree;
    Data_Get_Struct(self, BKTree, bktree);

    bktree_add(bktree, RSTRING(word)->ptr, RSTRING(word)->len);

    return Qnil;
}

#query(word, max) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'ext/bktree.c', line 24

static VALUE rb_bktree_query(VALUE self, VALUE word, VALUE max) {
    StringValue(word);

    BKTree * bktree;
    Data_Get_Struct(self, BKTree, bktree);

    VALUE result_out = rb_ary_new();
    BKResult * result = bktree_query(bktree, RSTRING(word)->ptr, RSTRING(word)->len, FIX2INT(max));
    while(result) {
        VALUE result_node = rb_ary_new();

        rb_ary_push(result_node, rb_str_new(BKTREE_GET_STRING(bktree, result->string_offset), BKTREE_GET_STRING_LEN(bktree, result->string_offset)));
        rb_ary_push(result_node, INT2FIX(result->distance));

        rb_ary_push(result_out, result_node);
        result = result->next;
    }

    return result_out;
}