123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /* ------------------------------------------------------------
- * --- Argc & Argv ---
- * ------------------------------------------------------------ */
-
- /* ------------------------------------------------------------
- Use it as follow:
- %apply (int ARGC, char **ARGV) { (size_t argc, const char **argv) }
- %inline %{
- int mainApp(size_t argc, const char **argv)
- {
- return argc;
- }
- then in the ruby side:
- args = ["asdf", "asdf2"]
- mainApp(args);
- * ------------------------------------------------------------ */
- %typemap(in) (int ARGC, char **ARGV) {
- if (rb_obj_is_kind_of($input,rb_cArray)) {
- int i;
- int size = RARRAY_LEN($input);
- $1 = ($1_ltype) size;
- $2 = (char **) malloc((size+1)*sizeof(char *));
- VALUE *ptr = RARRAY_PTR($input);
- for (i=0; i < size; i++, ptr++) {
- $2[i]= StringValuePtr(*ptr);
- }
- $2[i]=NULL;
- } else {
- $1 = 0; $2 = 0;
- %argument_fail(SWIG_TypeError, "int ARGC, char **ARGV", $symname, $argnum);
- }
- }
- %typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (int ARGC, char **ARGV) {
- $1 = rb_obj_is_kind_of($input,rb_cArray);
- }
- %typemap(freearg) (int ARGC, char **ARGV) {
- free((char *) $2);
- }
|