1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

tkutil.c: rb_ary_cat

* ext/tk/tkutil/tkutil.c (rb_ary_cat): fallback definition.
  rb_ary_cat() is available since 2.0.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2015-11-04 07:50:34 +00:00
parent 8df1863dcb
commit 0047ab96cd
2 changed files with 21 additions and 8 deletions

View file

@ -6,6 +6,7 @@ begin
have_func("rb_obj_taint", "ruby.h") have_func("rb_obj_taint", "ruby.h")
have_func("rb_sym2str", "ruby.h") have_func("rb_sym2str", "ruby.h")
have_func("rb_id2str", "ruby.h") have_func("rb_id2str", "ruby.h")
have_func("rb_ary_cat", "ruby.h")
have_func("strndup", "string.h") have_func("strndup", "string.h")
create_makefile('tkutil') create_makefile('tkutil')

View file

@ -106,6 +106,22 @@ strndup(ptr, len)
} }
#endif #endif
#ifndef HAVE_RB_ARY_CAT
static VALUE rb_ary_cat _((VALUE, const VALUE *, long));
static VALUE
rb_ary_cat(ary, argv, len)
VALUE ary;
const VALUE *argv;
long len;
{
long i;
for (i = 0; i < len; i++) {
rb_ary_push(ary, argv[i]);
}
return ary;
}
#endif
/*************************************/ /*************************************/
#if defined(HAVE_RB_OBJ_INSTANCE_EXEC) && !defined(RUBY_VM) #if defined(HAVE_RB_OBJ_INSTANCE_EXEC) && !defined(RUBY_VM)
@ -584,7 +600,7 @@ assoc2kv(assoc, ary, self)
VALUE ary; VALUE ary;
VALUE self; VALUE self;
{ {
long i, j, len; long i, len;
volatile VALUE pair; volatile VALUE pair;
volatile VALUE val; volatile VALUE val;
volatile VALUE dst = rb_ary_new2(2 * RARRAY_LEN(assoc)); volatile VALUE dst = rb_ary_new2(2 * RARRAY_LEN(assoc));
@ -611,9 +627,7 @@ assoc2kv(assoc, ary, self)
rb_ary_push(dst, key2keyname(RARRAY_CONST_PTR(pair)[0])); rb_ary_push(dst, key2keyname(RARRAY_CONST_PTR(pair)[0]));
val = rb_ary_new2(RARRAY_LEN(pair) - 1); val = rb_ary_new2(RARRAY_LEN(pair) - 1);
for(j = 1; j < RARRAY_LEN(pair); j++) { rb_ary_cat(val, RARRAY_CONST_PTR(pair) + 1, RARRAY_LEN(pair) - 1);
rb_ary_push(val, RARRAY_CONST_PTR(pair)[j]);
}
rb_ary_push(dst, val); rb_ary_push(dst, val);
} }
@ -632,7 +646,7 @@ assoc2kv_enc(assoc, ary, self)
VALUE ary; VALUE ary;
VALUE self; VALUE self;
{ {
long i, j, len; long i, len;
volatile VALUE pair; volatile VALUE pair;
volatile VALUE val; volatile VALUE val;
volatile VALUE dst = rb_ary_new2(2 * RARRAY_LEN(assoc)); volatile VALUE dst = rb_ary_new2(2 * RARRAY_LEN(assoc));
@ -659,9 +673,7 @@ assoc2kv_enc(assoc, ary, self)
rb_ary_push(dst, key2keyname(RARRAY_CONST_PTR(pair)[0])); rb_ary_push(dst, key2keyname(RARRAY_CONST_PTR(pair)[0]));
val = rb_ary_new2(RARRAY_LEN(pair) - 1); val = rb_ary_new2(RARRAY_LEN(pair) - 1);
for(j = 1; j < RARRAY_LEN(pair); j++) { rb_ary_cat(val, RARRAY_CONST_PTR(pair) + 1, RARRAY_LEN(pair) - 1);
rb_ary_push(val, RARRAY_CONST_PTR(pair)[j]);
}
rb_ary_push(dst, get_eval_string_core(val, Qtrue, self)); rb_ary_push(dst, get_eval_string_core(val, Qtrue, self));
} }