writers *wrt_new(){ writers *io=(writers *)malloc(sizeof(writers)); io->ios=ary_new(); io->buf=NULL; io->buf_size=0; return io; }
/**************************************************************** 新しく ruby 配列 x を作る。cval を C の配列(0番目を指すポインタ) だと思って cp_set1 でx に対してどんどん push。 obj の インスタンス変数 ivname に x をセット。 ivname が NULL の場合は、obj を配列とみなし obj に x を push。 ****************************************************************/ void cp_set2(VALUE obj, char *fmt, char *ivname, void *cval, int len) { int i, s; VALUE ary = ary_new(); for (i = 0; i < len; i++){ cval += cp_set1(ary, fmt, NULL, cval); } cp_set1(obj, "v", ivname, &ary); }
void toi_set_argv(int argc, char **argv) { int i; VALUE ary = ary_new(); for (i = 0; i < argc; i++) ary_push(ary, string_new(argv[i])); define_global_variable(intern("ARGV"), ary); }
void cp_get2(VALUE obj, char *fmt, char *ivname, void *cval, int len) { int i; VALUE val, ary; char at_name[100]; ary = ary_new(); cp_get1(obj, "v", ivname, &val); Check_Type(val, T_ARRAY); ary_copy(ary, val); dprintf(("cp_get2: %d(length) cval:%d\n", len, cval)); for (i = 0; i < len; i++){ cval += cp_get1(ary, fmt, NULL, cval); } }