/* * svn_types.i : SWIG interface file for svn_types.h * * ==================================================================== * Copyright (c) 2000-2002 CollabNet. All rights reserved. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at http://subversion.tigris.org/license-1.html. * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * * This software consists of voluntary contributions made by many * individuals. For exact contribution history, see the revision * history and logs, available at http://subversion.tigris.org/. * ==================================================================== */ /* This interface file only defines types and their related information. There is no module associated with this interface file. */ %import apr.i /* ----------------------------------------------------------------------- Create a typemap to define "type **" as OUT parameters. Note: SWIGTYPE is just a placeholder for "some arbitrary type". This typemap will be applied onto a "real" type. */ %typemap(ignore) SWIGTYPE **OUTPARAM ($*1_type temp) { $1 = ($1_ltype)&temp; } %typemap(python, argout) SWIGTYPE **OUTPARAM { $result = t_output_helper($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); } /* ----------------------------------------------------------------------- Define a more refined 'varin' typemap for 'const char *' members. This is used in place of the 'char *' handler defined automatically. We need to do the free/malloc/strcpy special because of the const */ %typemap(memberin) const char * { apr_size_t len = strlen($input) + 1; char *copied; if ($1) free((char *)$1); copied = malloc(len); memcpy(copied, $input, len); $1 = copied; } /* ----------------------------------------------------------------------- */ %typemap(python,out) svn_error_t * { if ($1 != NULL) { PyErr_SetString(PyExc_RuntimeError, $1->message ? $1->message : "unknown error"); return NULL; } Py_INCREF(Py_None); $result = Py_None; } /* ----------------------------------------------------------------------- 'svn_renum_t *' will always be an OUTPUT parameter */ // ### for now, disable this. it interferes with 'svn_fs_id_t *' params // ### awaiting some swig fixes. //%apply long *OUTPUT { svn_revnum_t * }; /* ----------------------------------------------------------------------- Define a general ptr/len typemap. This takes a single script argument and expands it into a ptr/len pair for the native call. */ %typemap(python, in) (const char *PTR, apr_size_t LEN) { if (!PyString_Check($input)) { PyErr_SetString(PyExc_TypeError, "expecting a string"); return NULL; } $1 = PyString_AS_STRING($input); $2 = PyString_GET_SIZE($input); } /* ----------------------------------------------------------------------- */ %include svn_types.h