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;
}
|