1// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4//
5// Make functions using (int argc, char** argv) usable as (sys.argv) from python
6
7%typemap(in) (int argc, char **argv) {
8  int i;
9  if (!PyList_Check($input)) {
10    PyErr_SetString(PyExc_ValueError, "Expecting a list");
11    return NULL;
12  }
13  $1 = PyList_Size($input);
14  $2 = (char **) malloc(($1+1)*sizeof(char *));
15  for (i = 0; i < $1; i++) {
16    PyObject *s = PyList_GetItem($input,i);
17    if (!PyString_Check(s)) {
18        free($2);
19        PyErr_SetString(PyExc_ValueError, "List items must be strings");
20        return NULL;
21    }
22    $2[i] = PyString_AsString(s);
23  }
24  $2[i] = 0;
25}
26
27%typemap(freearg) (int argc, char **argv) {
28   if ($2) free($2);
29}
30
31