mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
cstr.c: split bug_str_cstr_unterm
* ext/-test-/string/cstr.c (bug_str_cstr_unterm): split unterminating from bug_str_cstr_term. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8d7d4e3322
commit
41cbb7f050
2 changed files with 34 additions and 2 deletions
|
@ -9,9 +9,7 @@ bug_str_cstr_term(VALUE str)
|
|||
int c;
|
||||
rb_encoding *enc;
|
||||
|
||||
rb_str_modify(str);
|
||||
len = RSTRING_LEN(str);
|
||||
RSTRING_PTR(str)[len] = 'x';
|
||||
s = StringValueCStr(str);
|
||||
rb_gc();
|
||||
enc = rb_enc_get(str);
|
||||
|
@ -19,6 +17,17 @@ bug_str_cstr_term(VALUE str)
|
|||
return INT2NUM(c);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
bug_str_cstr_unterm(VALUE str, VALUE c)
|
||||
{
|
||||
long len;
|
||||
|
||||
rb_str_modify(str);
|
||||
len = RSTRING_LEN(str);
|
||||
RSTRING_PTR(str)[len] = NUM2CHR(c);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
bug_str_cstr_term_char(VALUE str)
|
||||
{
|
||||
|
@ -41,6 +50,20 @@ bug_str_cstr_term_char(VALUE str)
|
|||
return rb_enc_uint_chr((unsigned int)c, enc);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
bug_str_s_cstr_term(VALUE self, VALUE str)
|
||||
{
|
||||
Check_Type(str, T_STRING);
|
||||
return bug_str_cstr_term(str);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
bug_str_s_cstr_unterm(VALUE self, VALUE str, VALUE c)
|
||||
{
|
||||
Check_Type(str, T_STRING);
|
||||
return bug_str_cstr_unterm(str, c);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
bug_str_s_cstr_term_char(VALUE self, VALUE str)
|
||||
{
|
||||
|
@ -52,6 +75,9 @@ void
|
|||
Init_cstr(VALUE klass)
|
||||
{
|
||||
rb_define_method(klass, "cstr_term", bug_str_cstr_term, 0);
|
||||
rb_define_method(klass, "cstr_unterm", bug_str_cstr_unterm, 1);
|
||||
rb_define_method(klass, "cstr_term_char", bug_str_cstr_term_char, 0);
|
||||
rb_define_singleton_method(klass, "cstr_term", bug_str_s_cstr_term, 1);
|
||||
rb_define_singleton_method(klass, "cstr_unterm", bug_str_s_cstr_unterm, 2);
|
||||
rb_define_singleton_method(klass, "cstr_term_char", bug_str_s_cstr_term_char, 1);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue