[[[
Fix Python binding for svn_delta_path_driver_cb_func_t (and therefore
svn.delta.path_driver).
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
(svn_swig_py_delta_path_driver_cb_func): New wrapper function.
* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
(svn_swig_py_delta_path_driver_cb_func): Declare.
* subversion/bindings/swig/svn_delta.i
(svn_delta_path_driver_cb_func_t): Provide Python typemap, too.
]]]
Index: subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
===================================================================
--- subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (revision 24558)
+++ subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (working copy)
@@ -1873,6 +1873,42 @@
}
+svn_error_t *svn_swig_py_delta_path_driver_cb_func(void **dir_baton,
+ void *parent_baton,
+ void *callback_baton,
+ const char *path,
+ apr_pool_t *pool)
+{
+ PyObject *function = callback_baton;
+ PyObject *result;
+ svn_error_t *err = SVN_NO_ERROR;
+
+ if (function == NULL || function == Py_None)
+ return err;
+
+ svn_swig_py_acquire_py_lock();
+ result = PyObject_CallFunction(function, (char *)"OsO&",
+ svn_swig_NewPointerObjString(parent_baton,
+ "void *",
+ application_py_pool),
+ path, make_ob_pool, pool);
+ if (result == NULL)
+ {
+ err = callback_exception_error();
+ }
+ else if (result != Py_None)
+ {
+ if (svn_swig_ConvertPtr(result, dir_baton, svn_swig_TypeQuery("void *")) == -1)
+ {
+ err = type_conversion_error("void *");
+ }
+ }
+
+ svn_swig_py_release_py_lock();
+ return err;
+}
+
+
svn_error_t *svn_swig_py_cancel_func(void *cancel_baton)
{
PyObject *function = cancel_baton;
Index: subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
===================================================================
--- subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h (revision 24558)
+++ subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h (working copy)
@@ -254,6 +254,15 @@
const char *path,
svn_wc_status_t *status);
+/* a svn_delta_path_driver callback that executes a Python function
+ that is passed in via the baton argument */
+SVN_SWIG_SWIGUTIL_EXPORT
+svn_error_t *svn_swig_py_delta_path_driver_cb_func(void **dir_baton,
+ void *parent_baton,
+ void *callback_baton,
+ const char *path,
+ apr_pool_t *pool);
+
/* a cancel function that executes a Python function passed in via the
cancel_baton argument. */
SVN_SWIG_SWIGUTIL_EXPORT
Index: subversion/bindings/swig/svn_delta.i
===================================================================
--- subversion/bindings/swig/svn_delta.i (revision 24558)
+++ subversion/bindings/swig/svn_delta.i (working copy)
@@ -145,11 +145,11 @@
handle svn_delta_path_driver().
*/
-#ifdef SWIGRUBY
+#ifndef SWIGPERL
%callback_typemap(svn_delta_path_driver_cb_func_t callback_func,
void *callback_baton,
+ svn_swig_py_delta_path_driver_cb_func,
,
- ,
svn_swig_rb_delta_path_driver_cb_func)
#endif
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Apr 12 21:34:23 2007