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/01/28 23:58:32 UTC

svn commit: r904290 - in /subversion/trunk/subversion/bindings/swig: include/svn_containers.swg python/libsvn_swig_py/swigutil_py.c python/libsvn_swig_py/swigutil_py.h

Author: rdonch
Date: Thu Jan 28 22:58:31 2010
New Revision: 904290

URL: http://svn.apache.org/viewvc?rev=904290&view=rev
Log:
Mild libsvn_swig_py refactoring.

[in subversion/bindings/swig]

* python/libsvn_swig_py/swigutil_py.c,
  python/libsvn_swig_py/swigutil_py.h:
  (svn_swig_py_changed_path_hash_from_dict): Generalize to work with any
   struct and allow null pointers in the resulting hash. Rename to 
   svn_swig_py_struct_ptr_hash_from_dict, accordingly.

* include/svn_containers.swg: Use the new name (and syntax).


Modified:
    subversion/trunk/subversion/bindings/swig/include/svn_containers.swg
    subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
    subversion/trunk/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h

Modified: subversion/trunk/subversion/bindings/swig/include/svn_containers.swg
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/include/svn_containers.swg?rev=904290&r1=904289&r2=904290&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/include/svn_containers.swg (original)
+++ subversion/trunk/subversion/bindings/swig/include/svn_containers.swg Thu Jan 28 22:58:31 2010
@@ -204,7 +204,8 @@
       SWIG_fail;
   }
 
-  $1 = svn_swig_py_changed_path_hash_from_dict($input, _global_pool);
+  $1 = svn_swig_py_struct_ptr_hash_from_dict($input,
+    $descriptor(svn_log_changed_path_t *), _global_pool);
   if (PyErr_Occurred()) {
     SWIG_fail;
   }

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=904290&r1=904289&r2=904290&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 Thu Jan 28 22:58:31 2010
@@ -1089,8 +1089,9 @@
   return hash;
 }
 
-apr_hash_t *svn_swig_py_changed_path_hash_from_dict(PyObject *dict,
-                                                    apr_pool_t *pool)
+apr_hash_t *svn_swig_py_struct_ptr_hash_from_dict(PyObject *dict,
+                                                  swig_type_info *type,
+                                                  apr_pool_t *pool)
 {
   apr_hash_t *hash;
   PyObject *keys;
@@ -1111,26 +1112,27 @@
   for (i = 0; i < num_keys; i++)
     {
       PyObject *key = PyList_GetItem(keys, i);
-      PyObject *py_changed_path = PyDict_GetItem(dict, key);
-      const char *path = make_string_from_ob(key, pool);
-      svn_log_changed_path_t *changed_path;
-      if (!path)
+      PyObject *value = PyDict_GetItem(dict, key);
+      const char *c_key = make_string_from_ob(key, pool);
+      void *struct_ptr;
+      int status;
+
+      if (!c_key)
         {
           PyErr_SetString(PyExc_TypeError,
                           "dictionary keys aren't strings");
           Py_DECREF(keys);
           return NULL;
         }
-      svn_swig_ConvertPtrString(py_changed_path, (void *)&changed_path,
-                                "svn_log_changed_path_t *");
-      if (!changed_path)
+      status = svn_swig_ConvertPtr(value, &struct_ptr, type);
+      if (status != 0)
         {
           PyErr_SetString(PyExc_TypeError,
-                          "dictionary values aren't svn_log_changed_path_t");
+            "dictionary values aren't SWIG proxies of correct type");
           Py_DECREF(keys);
           return NULL;
         }
-      apr_hash_set(hash, path, APR_HASH_KEY_STRING, changed_path);
+      apr_hash_set(hash, c_key, APR_HASH_KEY_STRING, struct_ptr);
     }
   Py_DECREF(keys);
   return hash;

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=904290&r1=904289&r2=904290&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 Thu Jan 28 22:58:31 2010
@@ -225,11 +225,12 @@
                                                  apr_pool_t *pool);
 
 /* helper function to convert a Python dictionary mapping strings to
-   strings into an apr_hash_t mapping const char *'s to svn_string_t *'s,
-   allocated in POOL. */
+   SWIG wrappers described by type into an apr_hash_t mapping const char *'s to
+   struct pointers, allocated in POOL. */
 SVN_SWIG_SWIGUTIL_EXPORT
-apr_hash_t *svn_swig_py_changed_path_hash_from_dict(PyObject *dict,
-                                                    apr_pool_t *pool);
+apr_hash_t *svn_swig_py_struct_ptr_hash_from_dict(PyObject *dict,
+                                                  swig_type_info *type,
+                                                  apr_pool_t *pool);
 
 /* Callback function for use in data structure conversion routines. It is
    supposed to extract a C value of a certain type from object, write it into