зеркало из https://github.com/github/ruby.git
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:
Родитель
8df1863dcb
Коммит
0047ab96cd
|
@ -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')
|
||||||
|
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче