From a794517dd1765ba3784114e863525022e694324b Mon Sep 17 00:00:00 2001 From: Kouhei Sutou Date: Thu, 16 Feb 2017 17:01:11 +0900 Subject: [PATCH] mrb: add Table#id? --- lib/mrb/mrb_table.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/lib/mrb/mrb_table.c b/lib/mrb/mrb_table.c index 05eb6ec9b1..5b17b3de6c 100644 --- a/lib/mrb/mrb_table.c +++ b/lib/mrb/mrb_table.c @@ -1,6 +1,6 @@ /* -*- c-basic-offset: 2 -*- */ /* - Copyright(C) 2014-2015 Brazil + Copyright(C) 2014-2017 Brazil This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -66,6 +66,27 @@ mrb_grn_table_array_reference(mrb_state *mrb, mrb_value self) } } +static mrb_value +mrb_grn_table_is_id(mrb_state *mrb, mrb_value self) +{ + grn_ctx *ctx = (grn_ctx *)mrb->ud; + grn_obj *table; + mrb_int mrb_record_id; + grn_id record_id; + grn_id real_record_id; + + mrb_get_args(mrb, "i", &mrb_record_id); + + table = DATA_PTR(self); + record_id = (grn_id)mrb_record_id; + real_record_id = grn_table_at(ctx, table, record_id); + if (real_record_id == record_id) { + return mrb_true_value(); + } else { + return mrb_false_value(); + } +} + static mrb_value mrb_grn_table_find_column(mrb_state *mrb, mrb_value self) { @@ -342,6 +363,8 @@ grn_mrb_table_init(grn_ctx *ctx) mrb_define_method(mrb, klass, "[]", mrb_grn_table_array_reference, MRB_ARGS_REQ(1)); + mrb_define_method(mrb, klass, "id?", + mrb_grn_table_is_id, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "find_column", mrb_grn_table_find_column, MRB_ARGS_REQ(1));