You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rd...@apache.org on 2010/08/02 22:49:58 UTC

svn commit: r981683 - in /subversion/trunk/subversion/bindings/swig: python/libsvn_swig_py/swigutil_py.c python/libsvn_swig_py/swigutil_py.h python/svn/delta.py svn_delta.i

Author: rdonch
Date: Mon Aug  2 20:49:57 2010
New Revision: 981683

URL: http://svn.apache.org/viewvc?rev=981683&view=rev
Log:
SWIG/Python: make svn_txdelta_window_t.ops work properly.

[in subversion/bindings/swig]

* svn_delta.i: disable the auto-generated accessors for
   svn_txdelta_window_t.ops, for they assume it's a pointer
   to a single element. Declare svn_txdelta_window_t_ops_get,
   a replacement accessor.

* python/libsvn_swig_py/swigutil_py.c,
  python/libsvn_swig_py/swigutil_py.h:
  (svn_swig_py_txdelta_window_t_ops_get): A new function to power up the
    aforementioned accessor.

* python/svn/delta.py: Graft the aforementioned accessor to the
   svn_txdelta_window_t wrapper class.


Modified:
    subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
    subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
    subversion/trunk/subversion/bindings/swig/python/svn/delta.py
    subversion/trunk/subversion/bindings/swig/svn_delta.i

Modified: subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=981683&r1=981682&r2=981683&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original)
+++ subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Mon Aug  2 20:49:57 2010
@@ -4070,3 +4070,17 @@ svn_swig_py_setup_wc_diff_callbacks2(voi
   callbacks->dir_props_changed  = wc_diff_callbacks2_dir_props_changed;
   return callbacks;
 }
+
+PyObject *
+svn_swig_py_txdelta_window_t_ops_get(svn_txdelta_window_t *window)
+{
+  PyObject *result = PyList_New(window->num_ops);
+  swig_type_info *op_type_info = SWIG_TypeQuery("svn_txdelta_op_t *");
+  int i;
+
+  for (i = 0; i < window->num_ops; ++i)
+      PyList_SET_ITEM(result, i,
+	                  SWIG_NewPointerObj(window->ops + i, op_type_info, 0));
+
+  return result;
+}

Modified: subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h?rev=981683&r1=981682&r2=981683&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h (original)
+++ subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h Mon Aug  2 20:49:57 2010
@@ -508,6 +508,12 @@ svn_error_t *svn_swig_py_ra_lock_callbac
 SVN_SWIG_SWIGUTIL_EXPORT
 extern const svn_ra_reporter2_t swig_py_ra_reporter2;
 
+/* Get a list of ops from a window. Used to replace the naive
+   svn_txdelta_window_t.ops accessor. */
+SVN_SWIG_SWIGUTIL_EXPORT
+PyObject *
+svn_swig_py_txdelta_window_t_ops_get(svn_txdelta_window_t *window);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/trunk/subversion/bindings/swig/python/svn/delta.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/svn/delta.py?rev=981683&r1=981682&r2=981683&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/python/svn/delta.py (original)
+++ subversion/trunk/subversion/bindings/swig/python/svn/delta.py Mon Aug  2 20:49:57 2010
@@ -29,6 +29,9 @@ _unprefix_names(locals(), 'svn_delta_')
 _unprefix_names(locals(), 'svn_txdelta_', 'tx_')
 del _unprefix_names
 
+# Force our accessor since it appears that there isn't a more civilized way
+# to make SWIG use it.
+svn_txdelta_window_t.ops = property(svn_txdelta_window_t_ops_get)
 
 class Editor:
 

Modified: subversion/trunk/subversion/bindings/swig/svn_delta.i
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/svn_delta.i?rev=981683&r1=981682&r2=981683&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/svn_delta.i (original)
+++ subversion/trunk/subversion/bindings/swig/svn_delta.i Mon Aug  2 20:49:57 2010
@@ -172,6 +172,16 @@ svn_txdelta_window_t_ops_get(svn_txdelta
 %}
 #endif
 
+#ifdef SWIGPYTHON
+%ignore svn_txdelta_window_t::ops;
+%inline %{
+static PyObject *
+svn_txdelta_window_t_ops_get(svn_txdelta_window_t *window)
+{
+  return svn_swig_py_txdelta_window_t_ops_get(window);
+}
+%}
+#endif
 
 %include svn_delta_h.swg