/trunk/Lib/ruby/progargcargv.i
Swig | 34 lines | 20 code | 6 blank | 8 comment | 0 complexity | 320093f09f6a68a8914898f1228b4f3c MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- /*
- int PROG_ARGC
- char **PROG_ARGV
- Some C function receive argc and argv from C main function.
- This typemap provides ignore typemap which pass Ruby ARGV contents
- as argc and argv to C function.
- */
- // 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);
- }