On 9/30/05, Max Bowsher <maxb@ukf.net> wrote:
> The variable _global_svn_swig_py_is_local_pool is publicly visible.
>
> Any public symbol ought to be properly namespaced, so it needs to be
> renamed, possibly to svn_swig_py__global_is_local_pool. What exactly does
> this variable record? Is there possibly a better name for it?
Good catch, Max! The _global_svn_swig_py_is_local_pool should not be
publicly visible. I've attached a patch to make this variable a local
variable instead of a global one, and also use more comprehensible
names.
The new names are easier to explain:
* _global_pool_is_application_pool is true if the current pool was
initialized to the application pool; it's false otherwise.
* _global_pool_is_default_pool is true if the current pool was
initialized to a default subpool; it's false otherwise.
(These variables need to start with the prefix "_global", in order for
SWIG to process them correctly. SWIG doesn't support any other way of
indicating that a specific variable can be used across different
typemaps.)
Here's how we use above variables:
* In the handler for SWIGTYPE, we overwrite the current python pool
with a pool grabbed from parameters, if the current pool was
initialized to the application pool. This allows us to, for example,
grab the pool parameter from the "repos" object in "svn_repos_fs"
function.
* In the input handler for apr_pool_t, we overwrite the current python
pool with the input pool, if the input pool is not none, and the
current pool is a default pool. This if statement only occurs when we
have non-standard pool parameters and the "default" initialization
function was unable to find the pool parameter. (This trick allows us
to handle functions with non-standard pool parameters semi-correctly.
We currently don't have any such functions, because we disallow
non-standard pool placement in the SWIG Python bindings.)
[[[
Make _global_svn_swig_py_is_local_pool a local variable instead of a global
variable. Use _global_pool_is_application_pool instead of
_global_svn_swig_py_is_local_pool. Rename _global_is_default_pool to
_global_pool_is_application_pool.
* swig/python/libsvn_swig_py/swigutil_py.c
(_global_svn_swig_py_is_local_pool): Remove.
* swig/python/libsvn_swig_py/swigutil_py.h
(_global_svn_swig_py_is_local_pool): Remove.
* swig/include/svn_global.swg
(POOLINIT): Declare _global_pool_is_application_pool = 1.
(void *, SWIGTYPE *, SWIGTYPE []): Use _global_pool_is_application_pool
instead of _global_svn_swig_py_is_local_pool.
* swig/include/svn_types.swg
(apr_pool_t): Use _global_pool_is_application_pool instead of
_global_svn_swig_py_is_local_pool. Rename _global_is_default_pool to
_global_pool_is_default_pool.
]]]
--
David James -- http://www.cs.toronto.edu/~james
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Mon Oct 3 07:29:29 2005