summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-string-ext/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2019-09-11 12:58:55 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2019-09-11 18:47:39 +0900
commitec3aeede20a8287e656866a2d4545bcd23baebf8 (patch)
treef1b2622a26cc6438c87cf35757580b84116ada19 /mrbgems/mruby-string-ext/src
parent08d4e7c0c4ce4cc5713763d9ac12ea5a92c09329 (diff)
downloadmruby-ec3aeede20a8287e656866a2d4545bcd23baebf8.tar.gz
mruby-ec3aeede20a8287e656866a2d4545bcd23baebf8.zip
Move `String#{getbyte,setbyte,byteslice}` to the core; #4696
Unlike CRuby, there's no way to process strings byte-wise by core methods because there's no per string encoding in mruby, so that we moved 3 byte-wise operation methods from `mruby-string-ext` gem.
Diffstat (limited to 'mrbgems/mruby-string-ext/src')
-rw-r--r--mrbgems/mruby-string-ext/src/string.c67
1 files changed, 0 insertions, 67 deletions
diff --git a/mrbgems/mruby-string-ext/src/string.c b/mrbgems/mruby-string-ext/src/string.c
index e3b8d9960..aa6270786 100644
--- a/mrbgems/mruby-string-ext/src/string.c
+++ b/mrbgems/mruby-string-ext/src/string.c
@@ -90,70 +90,6 @@ int_chr_utf8(mrb_state *mrb, mrb_value num)
}
#endif
-static mrb_value
-mrb_str_getbyte(mrb_state *mrb, mrb_value str)
-{
- mrb_int pos;
- mrb_get_args(mrb, "i", &pos);
-
- if (pos < 0)
- pos += RSTRING_LEN(str);
- if (pos < 0 || RSTRING_LEN(str) <= pos)
- return mrb_nil_value();
-
- return mrb_fixnum_value((unsigned char)RSTRING_PTR(str)[pos]);
-}
-
-static mrb_value
-mrb_str_setbyte(mrb_state *mrb, mrb_value str)
-{
- mrb_int pos, byte;
- mrb_int len;
-
- mrb_get_args(mrb, "ii", &pos, &byte);
-
- len = RSTRING_LEN(str);
- if (pos < -len || len <= pos)
- mrb_raisef(mrb, E_INDEX_ERROR, "index %i out of string", pos);
- if (pos < 0)
- pos += len;
-
- mrb_str_modify(mrb, mrb_str_ptr(str));
- byte &= 0xff;
- RSTRING_PTR(str)[pos] = (unsigned char)byte;
- return mrb_fixnum_value((unsigned char)byte);
-}
-
-static mrb_value
-mrb_str_byteslice(mrb_state *mrb, mrb_value str)
-{
- mrb_value a1, a2;
- mrb_int str_len = RSTRING_LEN(str), beg, len;
- mrb_bool empty = TRUE;
-
- if (mrb_get_args(mrb, "o|o", &a1, &a2) == 2) {
- beg = mrb_fixnum(mrb_to_int(mrb, a1));
- len = mrb_fixnum(mrb_to_int(mrb, a2));
- }
- else if (mrb_type(a1) == MRB_TT_RANGE) {
- if (mrb_range_beg_len(mrb, a1, &beg, &len, str_len, TRUE) != MRB_RANGE_OK) {
- return mrb_nil_value();
- }
- }
- else {
- beg = mrb_fixnum(mrb_to_int(mrb, a1));
- len = 1;
- empty = FALSE;
- }
-
- if (mrb_str_beg_len(str_len, &beg, &len) && (empty || len != 0)) {
- return mrb_str_byte_subseq(mrb, str, beg, len);
- }
- else {
- return mrb_nil_value();
- }
-}
-
/*
* call-seq:
* str.swapcase! -> str or nil
@@ -1266,9 +1202,6 @@ mrb_mruby_string_ext_gem_init(mrb_state* mrb)
struct RClass * s = mrb->string_class;
mrb_define_method(mrb, s, "dump", mrb_str_dump, MRB_ARGS_NONE());
- mrb_define_method(mrb, s, "getbyte", mrb_str_getbyte, MRB_ARGS_REQ(1));
- mrb_define_method(mrb, s, "setbyte", mrb_str_setbyte, MRB_ARGS_REQ(2));
- mrb_define_method(mrb, s, "byteslice", mrb_str_byteslice, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
mrb_define_method(mrb, s, "swapcase!", mrb_str_swapcase_bang, MRB_ARGS_NONE());
mrb_define_method(mrb, s, "swapcase", mrb_str_swapcase, MRB_ARGS_NONE());
mrb_define_method(mrb, s, "concat", mrb_str_concat_m, MRB_ARGS_REQ(1));