summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-string-utf8/src/string.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-01-07 16:24:09 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-01-07 16:24:09 +0900
commit78ab979ef9f86cfcc91bf08db31eab716ee19933 (patch)
tree0d33b5f6ee64fbf361b75e213507d8ffdb0de952 /mrbgems/mruby-string-utf8/src/string.c
parentdc25f85babd1b679669767b2dce09605b69e60ef (diff)
downloadmruby-78ab979ef9f86cfcc91bf08db31eab716ee19933.tar.gz
mruby-78ab979ef9f86cfcc91bf08db31eab716ee19933.zip
mruby-string-utf8: redefine String#size for UTF-8 string; #1646
Diffstat (limited to 'mrbgems/mruby-string-utf8/src/string.c')
-rw-r--r--mrbgems/mruby-string-utf8/src/string.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/mrbgems/mruby-string-utf8/src/string.c b/mrbgems/mruby-string-utf8/src/string.c
index fd1296d3f..5379dd3aa 100644
--- a/mrbgems/mruby-string-utf8/src/string.c
+++ b/mrbgems/mruby-string-utf8/src/string.c
@@ -47,6 +47,14 @@ mrb_utf8_strlen(mrb_value str)
return total;
}
+static mrb_value
+mrb_str_size(mrb_state *mrb, mrb_value str)
+{
+ size_t size = mrb_utf8_strlen(str);
+
+ return mrb_fixnum_value(size);
+}
+
#define RSTRING_LEN_UTF8(s) mrb_utf8_strlen(s)
static mrb_value
@@ -244,6 +252,7 @@ mrb_mruby_string_utf8_gem_init(mrb_state* mrb)
{
struct RClass * s = mrb->string_class;
+ mrb_define_method(mrb, s, "size", mrb_str_size, MRB_ARGS_NONE());
mrb_define_method(mrb, s, "[]", mrb_str_aref_m, MRB_ARGS_ANY());
mrb_define_method(mrb, s, "slice", mrb_str_aref_m, MRB_ARGS_ANY());
}