/* ------------------------------------------------------------
* ------------------------------------------------------------ */
%fragment("SWIG_AsArgcArgv","header",
fragment="SWIG_AsCharPtr") {
SWIG_AsArgcArgv(PyObject* input,
swig_type_info* ppchar_info,
size_t* argc, int* owner)
if (SWIG_ConvertPtr(input, (void **)&argv, ppchar_info, 0) == -1) {
list = PyList_Check(input);
if (list || PyTuple_Check(input)) {
*argc = list ? PyList_Size(input) : PyTuple_Size(input);
argv = SWIG_new_array(*argc + 1, char*);
PyObject *obj = list ? PyList_GetItem(input,i) : PyTuple_GetItem(input,i);
if (!SWIG_AsCharPtr(obj, &(argv[i]))) {
PyErr_SetString(PyExc_TypeError,"list or tuple must contain strings only");
PyErr_SetString(PyExc_TypeError,"a list or tuple is expected");
/* seems dangerous, but the user asked for it... */
while (argv[i] != 0) ++i;
This typemap works with either a char**, a python list or a python
%typemap(in,fragment="SWIG_AsArgcArgv") (int ARGC, char **ARGV)
char **argv = SWIG_AsArgcArgv($input, $descriptor(char**), &argc, &owner);
if (SWIG_arg_fail($argnum)) SWIG_fail;
%typemap(freearg) (int ARGC, char **ARGV) {
if (owner$argnum) SWIG_delete_array($2);