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