12345678910111213141516171819202122232425262728293031323334 |
- // argc and argv
- %typemap(in,numinputs=0) int PROG_ARGC {
- $1 = RARRAY_LEN(rb_argv) + 1;
- }
- %typemap(in,numinputs=0) char **PROG_ARGV {
- int i, n;
- VALUE ary = rb_eval_string("[$0] + ARGV");
- n = RARRAY_LEN(ary);
- $1 = (char **)malloc(n + 1);
- for (i = 0; i < n; i++) {
- VALUE v = rb_obj_as_string(RARRAY_PTR(ary)[i]);
- $1[i] = (char *)malloc(RSTRING_LEN(v) + 1);
- strcpy($1[i], RSTRING_PTR(v));
- }
- }
- %typemap(freearg) char **PROG_ARGV {
- int i, n = RARRAY_LEN(rb_argv) + 1;
- for (i = 0; i < n; i++) free($1[i]);
- free($1);
- }
|