------------------------------------------------------------------------ r15527 | djames | 2005-07-31 20:42:24 -0400 (Sun, 31 Jul 2005) | 17 lines Use SWIG_fail instead of "return NULL" for the Python bindings. * swig/core.i: (svn_stream_read, svn_stream_write, apr_header_t *providers, void *value, FILE *): Use SWIG_fail instead of "return NULL". * swig/include/svn_global.swg: (SWIGTYPE *, void *, SWIGTYPE []): Use SWIG_fail instead of "return NULL". * swig/include/svn_types.swg: (svn_error_t *, PTR/LEN, apr_pool_t *): Use SWIG_fail instead of "return NULL". * swig/include/svn_string.swg: (RET_STRING, svn_stringbuf_t *, const svn_string_t *, const char **OUTPUT, apr_array_header_t *STRINGLIST): Use SWIG_fail instead of "return NULL". * swig/svn_client.i: (apr_array_header_t *props): Use SWIG_fail instead of "return NULL". ------------------------------------------------------------------------ r15526 | djames | 2005-07-31 20:31:19 -0400 (Sun, 31 Jul 2005) | 5 lines * swig/include/svn_types.swg: (apr_pool_t *): Create temporary variables in a local pool if a local pool is available. ------------------------------------------------------------------------ r15525 | djames | 2005-07-31 18:51:18 -0400 (Sun, 31 Jul 2005) | 25 lines Instead of reporting the SWIG/C argument number in error messages, report argument numbers that correspond to the Python inputs. Our reported argument numbers are now consistent with those reported by the Python interpreter. * swig/include/svn_global.swg: ($svn_argnum): New macro. Expands to the current Python argument number. (POOLINIT): New typemap for parameters which require a global pool and a global py_pool. Applied this typemap to SWIGTYPE, void *, SWIGTYPE *, and SWIGTYPE []. (SWIGTYPE *, SWIGTYPE []): Switch from $argnum to $svn_argnum. Apply typemap to void *. (char *, char const *, char * const, char const * const, char, unsigned char, short, unsigned short, int, enum SWIGTYPE, svn_boolean_t, apr_seek_where_t, apr_fileperms_t, unsigned int, long, ssize_t, unsigned long, size_t, __int64, long long, unsigned __int64, unsigned long long): Use Python format specifiers instead of standard SWIG typemaps to parse these basic types, because Python reports better error messages with correct argument numbers. * swig/core.i: (apr_header_t *providers): Switch from $argnum to $svn_argnum. * swig/include/svn_types.swg: (apr_pool_t *): Switch from $argnum to $svn_argnum. ------------------------------------------------------------------------ r15524 | djames | 2005-07-31 18:36:56 -0400 (Sun, 31 Jul 2005) | 5 lines * swig/include/svn_global.swg: (svn_string_createv, svn_stringbuf_createv): Ignore these functions, because SWIG can't handle the variadic parameters. ------------------------------------------------------------------------ r15522 | djames | 2005-07-31 18:10:08 -0400 (Sun, 31 Jul 2005) | 10 lines Remove global declarations of _global_pool and _global_svn_swig_py_pool. * swig/python/libsvn_swig_py/swigutil_py.h: (_global_pool, _global_svn_swig_py_pool): Remove declarations. * swig/python/libsvn_swig_py/swigutil_py.c: (_global_pool, _global_svn_swig_py_pool): Make variables static. * swig/include/svn_global.swg: (_global_svn_swig_py_pool): Declare variable as NULL. ------------------------------------------------------------------------ r15521 | djames | 2005-07-31 17:45:38 -0400 (Sun, 31 Jul 2005) | 4 lines * swig/include/svn_global.swg: Disable default constructors in Python. ------------------------------------------------------------------------ r15519 | djames | 2005-07-31 16:51:52 -0400 (Sun, 31 Jul 2005) | 7 lines * swig/python/libsvn_swig_py.c: (make_ob_pool): Ensure that the pool "decref" cleanup function is registered before we call "proxy_set_pool" so that the "decref" cleanup function will execute after any cleanup functions initialized by "proxy_set_pool". Followup to r15511. ------------------------------------------------------------------------ r15511 | djames | 2005-07-30 18:43:02 -0400 (Sat, 30 Jul 2005) | 11 lines Fix memory leaks in swigutil_py.c. * swig/python/libsvn_swig_py/swigutil_py.c: (svn_swig_MustGetPtr): Turn *py_pool into a borrowed reference by running Py_DECREF on it right away. This solves a potential memory leak. (make_ob_pool): Solve memory leak when proxy_set_pool fails unexpectedly by moving Py_INCREF and cleanup registration below the proxy_set_pool call. ------------------------------------------------------------------------ r15506 | djames | 2005-07-30 10:47:07 -0400 (Sat, 30 Jul 2005) | 3 lines Merge r15490:r15505 from trunk. ------------------------------------------------------------------------ r15505 | djames | 2005-07-30 10:09:46 -0400 (Sat, 30 Jul 2005) | 4 lines * tools/test-scripts/svntest/svntest-bindings.sh: (TEST_BINDINGS_SWIG_PYTHON) Enable automated tests for Python ------------------------------------------------------------------------ r15501 | djames | 2005-07-30 02:26:30 -0400 (Sat, 30 Jul 2005) | 5 lines * swig/python/svn/core.py: (run_app): Use libsvn.core.application_pool instead of svn.core.application_pool. ------------------------------------------------------------------------ r15500 | djames | 2005-07-30 02:17:55 -0400 (Sat, 30 Jul 2005) | 13 lines Upgrade reference checker to detect that variables are deleted when pools are cleared. * swig/proxy/proxy_apr.swg: (proxy.set_parent_pool): Set self._is_valid to a weakreference to parent_pool._is_valid. (proxy.assert_valid): Check variable validity by checking whether the weakreference is still valid. * swig/proxy/proxy_apr.swg: (apr_pool_t._mark_valid): Set self._is_valid to lambda: 1 instead of just a number so that self._is_valid will be weakreferenceable. ------------------------------------------------------------------------ r15499 | djames | 2005-07-30 01:23:41 -0400 (Sat, 30 Jul 2005) | 4 lines * swig/include/svn_types.swg: (apr_pool_t *): Initialize default parameter. ------------------------------------------------------------------------ r15498 | djames | 2005-07-30 01:17:06 -0400 (Sat, 30 Jul 2005) | 4 lines * swig/include/svn_types.swg: Initialize $1 pool parameter based on _global_pool ------------------------------------------------------------------------ r15497 | djames | 2005-07-30 01:08:00 -0400 (Sat, 30 Jul 2005) | 4 lines * swig/proxy/proxy_apr.swg: Switch apr_array_header_t * to an opaque proxy. ------------------------------------------------------------------------ r15496 | djames | 2005-07-30 01:00:36 -0400 (Sat, 30 Jul 2005) | 3 lines (svn_swig_MustGetPtr): Fix typo where 1 was returned instead of NULL. ------------------------------------------------------------------------ r15495 | djames | 2005-07-30 00:57:04 -0400 (Sat, 30 Jul 2005) | 22 lines Children inherit pools from passed proxy objects when real pools are not passed. * swig/python/libsvn_swig_py/swigutil_py.c: (parentPool): Add variable. (_global_swig_py_is_local_pool): Add variable. (svn_swig_MustGetPtr): Add py_pool parameter. Fill *py_pool with parent pool of Python input object, if such a pool can be found. Otherwise, fill *py_pool with the global pool object. * swig/python/libsvn_swig_py/swigutil_py.h: (_global_swig_py_is_local_pool): Add variable. (svn_swig_MustGetPtr): Add py_pool parameter. * swig/include/svn_global.swg: (SWIGTYPE *): Initialize local variables for holding pool objects, and fill them using svn_swig_MustGetPtr. * swig/include/svn_types.swg: (apr_pool_t *): Update arguments to svn_swig_MustGetPtr. Override inherited pools if _global_swig_py_is_local_pool == 0. * swig/core.i: (apr_header_t **providers): Update arguments to svn_swig_MustGetPtr. ------------------------------------------------------------------------ r15494 | djames | 2005-07-29 23:32:22 -0400 (Fri, 29 Jul 2005) | 16 lines Repair and refactor auto-defaulting behaviour for Python pools. Followup to r15493. * swig/core.i: (svn_swig_py_get_application_pool): Remove function. * swig/python/libsvn_swig_py/swigutil_py.c, swig/python/libsvn_swig_py/swigutil_py.h, (svn_swig_py_get_application_pool): Remove function. (svn_swig_py_convert_pool): Remove function. (svn_swig_get_application_pool): Add function. Gets the apr pool and the python pool. * swig/include/svn_types.swg: (apr_pool_t *): Get both the python pool and the apr pool using svn_swig_get_application_pool if the pool cannot be found. ------------------------------------------------------------------------ r15493 | djames | 2005-07-29 22:55:22 -0400 (Fri, 29 Jul 2005) | 11 lines Switch svn_swig_py_convert_pool to MustGetPtr interface so that we will see argument numbers in our error messages. * swig/include/svn_types.swg: (apr_pool_t *): Switch svn_swig_py_convert_pool to use MustGetPtr interface instead of ConvertPtr interface. * swig/python/libsvn_swig_py/swigutil_py.h, swig/python/libsvn_swig_py/swigutil_py.c: Switch svn_swig_py_convert_pool to use MustGetPtr interface instead of ConvertPtr interface. ------------------------------------------------------------------------ r15492 | djames | 2005-07-29 22:39:25 -0400 (Fri, 29 Jul 2005) | 3 lines * swig/python/libsvn_swig_py/swigutil_py.c (svn_swig_MustGetPtr): Validate pointer before converting ------------------------------------------------------------------------ r15491 | djames | 2005-07-29 22:16:22 -0400 (Fri, 29 Jul 2005) | 3 lines Merge 15460-15490 from trunk. ------------------------------------------------------------------------ r15490 | djames | 2005-07-29 22:15:00 -0400 (Fri, 29 Jul 2005) | 9 lines Add documentation to all SWIG functions via SWIG's autodoc feature. * swig/include/svn_global.swg: Enable SWIG autodoc feature * subversion/bindings/swig/proxy/proxy_apr.swg: (apr_pool_t.set_parent_pool): Access C functions directly, so that we protect the actual functions from the GC, instead of the autodoc wrappers. ------------------------------------------------------------------------ r15489 | djames | 2005-07-29 21:39:39 -0400 (Fri, 29 Jul 2005) | 81 lines Implement validated automatic memory management for the Python bindings. * subversion/bindings/swig/include/apr.swg: (apr_file_t **): Add py_pool argument to call to svn_swig_NewPointerObj. * subversion/bindings/swig/include/svn_global.swg: (SWIGTYPE *): Add py_pool argument to call to svn_swig_NewPointerObj. * subversion/bindings/swig/include/svn_types.swg: (SWIGTYPE **OUTPARAM): Add py_pool argument to call to svn_swig_NewPointerObj. (apr_pool_t *): Initialize local _global_svn_swig_py_pool variable. (apr_hash_t **dirents, apr_hash_t **entries_p, apr_hash_t **changed_paths_p, apr_hash_t **locks, apr_hash_t **entries): Pass py_pool argument to call to svn_swig_py_convert_hash. * subversion/bindings/swig/core.i: (apr_hash_t **cfg_hash): Switch from SWIG_NewPointerObj to svn_swig_NewPointerObj. Add py_pool argument to call to svn_swig_NewPointerObj. (svn_swig_py_set_application_pool): Add py_pool argument. (svn_swig_py_register_cleanup): Add. * subversion/bindings/swig/proxy/proxy_apr.swg: (apr_pool_t): Remove autogenerated opaque proxy class for apr_pool_t. Extend apr_pool_t class to support the full functionality of pools, including automatic memory management. * subversion/bindings/swig/python/tests/pool.py: Update tests to reflect new scheme for automatic memory management. All pool pointers are now wrapped with Python classes, so they all protect their parents from being automatically deleted. The core application_pool is now stored inside libsvn.core instead of svn.core. * subversion/bindings/swig/python/svn/core.py: Replace Pool class with a pointer to the svn_pool_create function. * subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h: (_global_svn_swig_py_pool): Add. (svn_swig_py_set_application_pool): Add py_pool parameter. (svn_swig_py_register_cleanup): Add. (svn_swig_py_convert_hash): Add py_pool parameter. * subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c: (poolAttribute): Remove unused variable. (_global_svn_swig_py_pool): Add variable. Contains pointer to the Python wrapper around the global pool. (setParentPool): Add. Contains the name of the "set_parent_pool" function. (objectTuple): Add. String describing a single-object tuple. (svn_swig_set_application_pool): Add py_pool argument. Use py_pool argument to set _global_svn_swig_py_pool. (svn_swig_py_pool_destroyed): Add function. Mark pool as invalid after its memory has been destroyed. (svn_swig_py_pool_decref): Add function. Decreases a pool's reference count after it has been destroyed. (svn_swig_py_register_cleanup): Add function. Registers the "svn_swig_py_pool_destroyed" function to be called upon cleanup of the specified pool. (svn_swig_py_convert_pool): Remove code for converting between Pool objects and apr_pool_t wrappers, because the two are now one and the same. (proxy_set_pool): Add function. Sets the parent pool of a proxy object. (svn_swig_NewPointerObj): Set the parent pool of each proxy object as it is created. Parent pool is now specified as a parameter. (svn_swig_ConvertPtr): Check the validity of the pool memory of Python objects before converting them into C objects. (make_ob_pool): Create C-managed Pool object which sticks around at least as long as the C version of the memory pool. (make_ob_window, make_ob_status, make_ob_lock, make_ob_fs_root, make_ob_server_cert_info): Update to accept pool parameter and pass it in to svn_swig_NewPointerObjString. (convert_hash): Update to accept pool parameter and pass into converter_func. (convert_to_swigtype): Update to accept pool parameter and pass it into svn_swig_newPointerObj. (convert_svn_string_t: Update to accept and ignore pool parameter. (svn_swig_py_prophash_to_dict): Update to pass NULL pool parameter to convert_hash. (svn_swig_py_convert_hash): Update to accept pool parameter and pass it into convert_hash. (svn_swig_py_fs_get_locks_func): Update to create pool object early and pass it into the make_ob_lock function. (svn_swig_py_repos_authz_func): Update to create pool object early and pass it into the make_ob_fs_root function. (svn_swig_py_log_receiver): Update to create pool object early and pass it into the svn_swig_py_convert_hash function. (svn_swig_py_auth_ssl_server_trust_prompt_func): Update to create pool object early and pass it into the make_ob_server_cert_info function. ------------------------------------------------------------------------ r15488 | djames | 2005-07-29 17:49:44 -0400 (Fri, 29 Jul 2005) | 6 lines Switch the Python bindings to use classic classes so that we can more easily override attribute access in a consistent manner. * Makefile.in (RUN_SWIG_PY): Add -classic option ------------------------------------------------------------------------ r15484 | djames | 2005-07-29 12:14:03 -0400 (Fri, 29 Jul 2005) | 11 lines Add missing file which contains proxy classes for APR classes. Follow up to r15428. Suggested by: Christian Boos * swig/proxy/proxy_apr.swg: Proxy class interface to APR. With APR, we only want to create a limited number of proxy class objects, so I created this file manually. ------------------------------------------------------------------------ r15478 | djames | 2005-07-29 00:14:14 -0400 (Fri, 29 Jul 2005) | 17 lines Update Python test suite to test the bindings in the build directory. We test the build dir version of Subversion. * subversion/bindings/swig/python/tests/run_all.py Add potential library directories to path. * Makefile.in: (swig-py): Add $(SWIG_PY_DIR)/__init__.py and $(SWIG_PY_DIR)/libsvn as dependencies. (SWIG_PY_DIR/__init__.py): Copy __init__.py from source directory to build directory if it does not already exist there. Needed when build_dir != src_dir. (SWIG_PY_DIR/libsvn): Create link to SWIG_PY_DIR with name libsvn so that Python will look in SWIG_PY_DIR for the libsvn library. (clean-swig-py): Remove $(SWIG_PY_DIR)/libsvn. Remove $(SWIG_PY_DIR)/__init__.py if it is an unncessary copy. Needed when build_dir != src_dir. ------------------------------------------------------------------------ r15476 | djames | 2005-07-28 20:15:08 -0400 (Thu, 28 Jul 2005) | 7 lines Add clean-swig-py Makefile rule. * Makefile.in: Add clean-swig-py rule. * build/ac-macros/swig.m4: (SVN_FIND_SWIG): Add clean-swig-py rule to list of cleanup rules if we enable the Python bindings. ------------------------------------------------------------------------ r15462 | djames | 2005-07-28 16:06:48 -0400 (Thu, 28 Jul 2005) | 10 lines Add check-swig-py target for checking the correctness of the currently installed version of the SWIG Python bindings. (We hope to extend this in future to test the build-dir version of the Python bindings.) * Makefile.in: (SWIG_PY_DIR): Add. Path to Python bindings build dir. (SWIG_PY_SRC_DIR): Add. Path to Python bindings src dir. (check-swig-py): Add. ------------------------------------------------------------------------ r15461 | djames | 2005-07-28 15:33:54 -0400 (Thu, 28 Jul 2005) | 2 lines Merge r15417-r15460 from trunk. ------------------------------------------------------------------------ r15460 | djames | 2005-07-28 15:24:35 -0400 (Thu, 28 Jul 2005) | 17 lines Switch from svn_swig_ConvertPtr to svn_swig_MustGetPtr where possible. svn_swig_MustGetPtr reports better error messages. * swig/core.i: (apr_header_t *providers): Switch from svn_swig_ConvertPtr to svn_swig_MustGetPtr. Add if statement to return NULL if there was an error. * include/svn_global.swg: (SWIGTYPE *, SWIGTYPE []): Switch from svn_swig_ConvertPtr to svn_swig_MustGetPtr * swig/python/libsvn_swig_py/swigutil_py.c: (svn_swig_MustGetPtr): Add svn_swig_MustGetPtr function. * swig/python/libsvn_swig_py/swigutil_py.h: (SWIG_MustGetPtr): Add #define for SWIG_MustGetPtr. (svn_swig_MustGetPtr): Add svn_swig_MustGetPtr function. ------------------------------------------------------------------------ r15453 | djames | 2005-07-27 11:04:38 -0400 (Wed, 27 Jul 2005) | 13 lines Switch from SWIG_NewPointerObj and SWIG_ConvertPtr to svn_swig_NewPointerObj and svn_swig_ConvertPtr. * swig/include/apr.swg: (apr_file_t **): Switch from SWIG_NewPointerObj to svn_swig_NewPointerObj. * swig/include/svn_types.swg: (SWIGTYPE **OUTPARAM): Switch from SWIG_NewPointerObj to svn_swig_NewPointerObj. * swig/include/svn_global.swg: (SWIGTYPE *, SWIGTYPE[]): Add. Override default input and output typemaps for Python to use svn_swig_ConvertPtr and svn_swig_NewPointerObj. ------------------------------------------------------------------------ r15430 | djames | 2005-07-26 00:32:46 -0400 (Tue, 26 Jul 2005) | 12 lines Add option to build.conf for configuring the wildcards autogen.sh uses to define a "header". Currently, header files can have any of the following extensions: *.h, *.i, *.swg. * build.conf (options.include-wildcards): Add. Describes the valid extensions of header files. * build/generator/gen_base.py: (GeneratorBase.__init__): Extract options.include-wildcards from build.conf. (GeneratorBase.compute_hdrs): Instead of hardcoding the wildcards, use the value of "options.include-wildcards" from build.conf. ------------------------------------------------------------------------ r15429 | djames | 2005-07-26 00:19:34 -0400 (Tue, 26 Jul 2005) | 14 lines Move swig-related includes into their own section, so as to ensure that they aren't installed with the rest of the header files. Followup to r15407. * build.conf: (options.includes): Remove SWIG-related includes. (options.swig-includes): Add. Defines SWIG-related includes. * build/generator/gen_base.py: (GeneratorBase.__init__): Extract SWIG-related includes from build.conf and save as self.swig_includes. (GeneratorBase.compute_hdrs): Include swig_includes in our list of header files. ------------------------------------------------------------------------ r15428 | djames | 2005-07-26 00:11:08 -0400 (Tue, 26 Jul 2005) | 43 lines Autogenerate Python proxy classes for all SVN datatypes and a limited number of APR datatypes. Python proxy classes offer greater flexibility than standard SWIG datatypes. * Makefile.in: (SWIG_INCLUDES): Add $(SWIG_SRC_DIR)/proxy to list of includes * autogen.sh: Create SWIG headers by calling gen-make.py -t swig * gen-make.py: (gen_modules): Add SWIG header generation module * build.conf: (options.includes): Add $(SWIG_SRC_DIR)/proxy/*.swg to list of includes (options.swig-proxy-dir): Add. Points to $(SWIG_SRC_DIR)/proxy * build/generator/gen_swig.py: New file. Generate SWIG headers with simple Python proxy classes automatically. * subversion/bindings/swig/perl/native/Makefile.PL.in: ($swig_command): Add $(swig_srcdir/proxy) to list of includes * subversion/bindings/swig/proxy/apr_h.swg: New file. Includes "apr.h" and defines proxy classes. * subversion/bindings/swig/include/proxy.swg: New file. Defines a new proxy class interface for all Python classes. * subversion/bindings/swig/proxy/proxy_apr.swg: Proxy class interface for APR. With APR, we only want to generate a limited number of proxy class objects, so I created this file manually. * subversion/bindings/swig/svn_ra.i, subversion/bindings/swig/svn_repos.i, subversion/bindings/swig/svn_delta.i, subversion/bindings/swig/svn_client.i, subversion/bindings/swig/include/apr.swg, subversion/bindings/swig/include/svn_types.swg: Use new autogenerated SWIG interface files for includes. * subversion/bindings/swig/svn_wc.i: Add svn_ra.i as dependency. Use new autogenerated SWIG interface files for includes. * subversion/bindings/swig/core.i: Add proxy APR classes via proxy_apr.swg. Use new autogenerated SWIG interface files for includes. * subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c: Use the "_pool" attribute to identify pools, instead of the "assert_valid" attribute. The "assert_valid" attribute is no longer a unique identifier for the Pool class thanks to the new proxy classes which also define "assert_valid". ------------------------------------------------------------------------ r15426 | djames | 2005-07-25 16:29:33 -0400 (Mon, 25 Jul 2005) | 6 lines * build/generator/gen_base.py: (IncludeDependencyInfo._re_include): Don't allow semicolons in the names of include files. This change allows us to correctly parse include statements such as %include import.i; ------------------------------------------------------------------------ r15425 | djames | 2005-07-25 15:09:10 -0400 (Mon, 25 Jul 2005) | 7 lines * build/generator/gen_base.py: (GeneratorBase.compute_hdr_deps): Move code for computing a list of the header files into a separate function called "compute_hdrs". Add doc strings. (GeneratorBase.compute_hdrs): New function. ------------------------------------------------------------------------ r15418 | djames | 2005-07-24 23:11:11 -0400 (Sun, 24 Jul 2005) | 4 lines Merge r15413:r15417 from trunk so we will have access to the nls_init function. Thanks Kouhei! ------------------------------------------------------------------------ r15417 | djames | 2005-07-24 22:18:51 -0400 (Sun, 24 Jul 2005) | 29 lines Switch all SWIG libraries to use the $descriptor(type) convention instead of using svn_descriptor(type) or SVN_TypeQuery(type). $descriptor(type) is faster and more reliable than SWIG_TypeQuery because it imports types at compile time. Follow-up to r15412 and r15407. * swig/core.i: (apr_header_t *providers, apr_hash_t **cfg_hash): Rename svn_descriptor(type *) to $descriptor(type *). * swig/include/svn_global.swg: (svn_descriptor): Remove macro. * swig/include/svn_types.swg: (apr_hash_t **dirents): Rename SWIG_TypeQuery("type *") to $descriptor(type *). * swig/svn_client.i: (array_header_t **props, apr_hash_t *config, apr_array_header_t *wcprop_changes): Rename SWIG_TypeQuery("type *") to $descriptor(type *). * swig/svn_fs.i: (apr_hash_t **entries_p, apr_hash_t **changed_paths_p): Rename svn_descriptor(type *) to $descriptor(type *). * swig/svn_wc.i: (apr_hash_t **entries): Rename svn_descriptor(type *) to $descriptor(type *). * swig/svn_repos.i: (apr_hash_t **locks): Rename svn_descriptor(type *) to $descriptor(type *). ------------------------------------------------------------------------ r15414 | djames | 2005-07-24 18:12:26 -0400 (Sun, 24 Jul 2005) | 2 lines Weekly merge from trunk. ------------------------------------------------------------------------ r15413 | djames | 2005-07-24 17:59:09 -0400 (Sun, 24 Jul 2005) | 21 lines Move apr.i, svn_types.i, and svn_string.i into the include directory and rename their extension from ".i" to ".swg". These files are include files, not interface files. * subversion/bindings/swig/apr.swg, subversion/bindings/swig/svn_types.swg, subversion/bindings/swig/svn_string.swg: Rename include files to have ".swg" extension. * subversion/bindings/swig/apr.i, subversion/bindings/swig/svn_types.i, subversion/bindings/swig/svn_string.i: Remove files. * subversion/bindings/swig/core.i, subversion/bindings/swig/svn_ra.i, subversion/bindings/swig/svn_wc.i, subversion/bindings/swig/svn_client.i, subversion/bindings/swig/svn_repos.i, subversion/bindings/swig/svn_delta.i: Update references to apr.swg, svn_types.swg, and svn_string.swg ------------------------------------------------------------------------ r15412 | djames | 2005-07-24 17:43:52 -0400 (Sun, 24 Jul 2005) | 17 lines Rename svn_swigtype(p, type) to svn_descriptor(type *). Use $descriptor(type) SWIG feature to reliably extract typenames. * swig/core.i: (apr_header_t *providers, apr_hash_t **cfg_hash): Rename svn_swigtype(p, type) to svn_descriptor(type *). * swig/svn_fs.i: (apr_hash_t **entries_p, apr_hash_t **changed_paths_p): Rename svn_swigtype(p, type) to svn_descriptor(type *). * swig/svn_wc.i: (apr_hash_t **entries): Rename svn_swigtype(p, type) to svn_descriptor(type *). * swig/svn_repos.i: (apr_hash_t **locks): Rename svn_swigtype(p, type) to svn_descriptor(type *). ------------------------------------------------------------------------ r15411 | djames | 2005-07-24 17:22:06 -0400 (Sun, 24 Jul 2005) | 33 lines Wrap calls to SWIG_ConvertPtr, SWIG_NewPointerObj and SWIG_TypeQuery using svn_swig_ConvertPtr, svn_swig_NewPointerObj, and svn_swig_TypeQuery. * subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c: (svn_swig_TypeQuery): New macro. Wrapper for SWIG_TypeQuery. (svn_swig_NewPointerObj): New function. Wrapper for SWIG_NewPointerObj. (svn_swig_NewPointerObjString): New function. Wrapper for SWIG_NewPointerObj which accepts the typename as a string. (svn_swig_ConvertPtr): New function. Wrapper for SWIG_ConvertPtr. (svn_swig_ConvertPtrString): New function. Wrapper for SWIG_ConvertPtr which accepts the typename as a string. (make_pointer): Removed. Replaced by SWIG_NewPointerObjString. (make_ob_pool, make_ob_window, make_ob_status, make_ob_lock, make_ob_fs_root, make_ob_server_cert_info): Use svn_swig_NewPointerObjString instead of make_pointer. (convert_to_swigtype): Use svn_swig_NewPointerObjString instead of SWIG_NewPointer and SWIG_TypeQuery. (svn_swig_py_auth_simple_prompt_func, svn_swig_py_auth_username_prompt_func, svn_swig_py_auth_ssl_server_trust_prompt_func, svn_swig_py_auth_ssl_client_cert_prompt_func, svn_swig_py_auth_ssl_client_cert_pw_prompt_func): Use svn_swig_ConvertPtrString instead of SWIG_ConvertPtr and SWIG_TypeQuery. (svn_swig_py_log_receiver): Use svn_swig_TypeQuery instead of SWIG_TypeQuery. * subversion/bindings/python/libsvn_swig_py/swigutil_py.h: (svn_swig_NewPointerObj, svn_swig_ConvertPtr): Add declarations for new functions. * subversion/bindings/swig/core.i: (apr_header_t *providers): Use svn_swig_ConvertPtr instead of SWIG_ConvertPtr. ------------------------------------------------------------------------ r15409 | djames | 2005-07-24 16:44:10 -0400 (Sun, 24 Jul 2005) | 4 lines * subversion/bindings/swig/svn_fs.i: (apr_hash_t **changed_paths): Fix parentheses. Follow up to r15407. ------------------------------------------------------------------------ r15408 | djames | 2005-07-24 16:42:22 -0400 (Sun, 24 Jul 2005) | 8 lines Add $(SWIG_SRC_DIR)/include to list of included directories for Perl. Follow up to r15407. * python-bindings-improvements/subversion/bindings/swig/perl: (swig_command): Add $swig_src_dir/include to list of included directories for perl. ------------------------------------------------------------------------ r15407 | djames | 2005-07-24 16:06:51 -0400 (Sun, 24 Jul 2005) | 28 lines Refactor SWIG interface files to use svn_swigtype macro instead of hardcoded SWIGTYPE. Define svn_swigtype macro in svn_global.swg and include svn_global.swg in all SWIG interface files. * Makefile.in: (SWIG_INCLUDES): Add $(SWIG_SRC_DIR)/include to list of included directories. * build.conf: (options.includes): Add SWIG include directory to list of includes. * subversion/bindings/swig/include/svn_global.swg: New file. Defines svn_swigtype macro. * subversion/bindings/swig/core.i: (apr_header_t *providers, apr_hash_t **cfg_hash): Use svn_swigtype instead of hardcoded SWIGTYPE. Include svn_global.swg. * subversion/bindings/swig/svn_fs.i: (apr_hash_t **entries_p, apr_hash_t **changed_paths_p): Use svn_swigtype instead of hardcoded SWIGTYPE. Include svn_global.swg. * subversion/bindings/swig/svn_wc.i: (apr_hash_t **entries): Use svn_swigtype instead of hardcoded SWIGTYPE. Include svn_global.swg. * subversion/bindings/swig/svn_repos.i: (apr_hash_t **locks): Use svn_swigtype instead of hardcoded SWIGTYPE. Include svn_global.swg. * subversion/bindings/swig/svn_delta.i, subversion/bindings/swig/client.i, subversion/bindings/swig/svn_ra.i: Include svn_global.swg. ------------------------------------------------------------------------ r15406 | djames | 2005-07-24 15:26:23 -0400 (Sun, 24 Jul 2005) | 4 lines * build/generator/gen_base.py: (GeneratorBase.compute_hdr_deps): Remove trailing semicolon ------------------------------------------------------------------------ r15405 | djames | 2005-07-24 15:24:14 -0400 (Sun, 24 Jul 2005) | 5 lines * build/generator/gen_base.py: (GeneratorBase.compute_hdr_deps): Include .swg files in dependency calculations ------------------------------------------------------------------------ r15397 | djames | 2005-07-23 13:12:20 -0400 (Sat, 23 Jul 2005) | 13 lines Pass in typename of pool as argument to svn_swig_py_convert_pool. * subversion/bindings/swig/svn_types.i: (svn_swig_py_convert_pool): Pass in typename of pool as argument to svn_swig_py_convert_pool. * subversion/bindings/swig/swigutil_py.h: (svn_swig_py_convert_pool): Accept typename of pool as argument. * subversion/bindings/swig/swigutil_py.c: (svn_swig_py_convert_pool): Accept typename of pool as argument. ------------------------------------------------------------------------ r15396 | djames | 2005-07-23 13:05:15 -0400 (Sat, 23 Jul 2005) | 10 lines Test suite for Pythonic pools. * subversion/bindings/swig/python/tests/pool.py: New file. Contains test case for the new automatic pool management infrastructure. * subversion/bindings/swig/python/tests/run_all.py: New file. Run all of the Python test cases. ------------------------------------------------------------------------ r15381 | djames | 2005-07-21 16:27:23 -0400 (Thu, 21 Jul 2005) | 14 lines Update dependency generator to parse %include and %import statements in SWIG interface files. * build/generator/gen_base.py: (GeneratorBase.compute_hdr_deps): Include SWIG interface files in the list of dependencies. (TargetSWIG.add_dependencies): Look in SWIG source directories for dependencies. (IncludeDependencyInfo._re_include): Parse SWIG %import and %include definitions. ------------------------------------------------------------------------ r15373 | djames | 2005-07-20 01:15:40 -0400 (Wed, 20 Jul 2005) | 30 lines Improve performance of pool validation from O(N) to O(1). Instead of asking child pools to constantly check whether the parent pool still exists, we now notify child pools when parent pools are deleted. * subversion/bindings/swig/python/svn/core.py (_mark_weakpool_invalid): Mark a child pool as invalid (Pool.__init__): Use self._mark_valid procedure to mark self as valid, instead of using clear counters (Pool.valid): Check validity of pool by looking for member variable, instead of recursively checking parents (Pool.clear): Use self._mark_valid to mark that pool has been cleared, instead of incrementing a clear counter. (Pool.destroy): Use self._mark_invalid to mark that pool has been destroyed. Move code for deleting member variables into self._mark_invalid. (Pool._mark_valid): Mark pool as valid, and set up callbacks to mark pool as invalid when parents are destroyed. Use weakreference to refer to self so as to avoid reference cycles in closure. (Pool._mark_invalid): Mark pool as invalid. Free up memory by deleting unneeded member variables. ------------------------------------------------------------------------ r15371 | djames | 2005-07-19 22:20:28 -0400 (Tue, 19 Jul 2005) | 14 lines Convert poolAttribute, assertValid, and emptyTuple from casted "char *" variables into "char[]" variables so as to avoid unsafe casts. Thread: http://svn.haxx.se/dev/archive-2005-07/0796.shtml Suggested By: Philip Martin (Thanks Philip! Good catch!) * subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (Automatic Pool Management Functions): Convert poolAttribute, assertValid, and emptyTuple from (char *) variables into char[] variables. ------------------------------------------------------------------------ r15370 | djames | 2005-07-19 16:54:49 -0400 (Tue, 19 Jul 2005) | 70 lines Implement Pythonic pool management for the Python bindings. Assisted by: Mark Rowe (Mark donated his automatic pool management code as a starting point for my patch. Thanks Mark!) * subversion/bindings/swig/core.i (svn_swig_py_set_application_pool, svn_swig_py_clear_application_pool, svn_swig_py_get_application_pool): New wrappers for new functions. * subversion/bindings/swig/python/svn/core.py (run_app, svn_pool_destroy, svn_pool_create, svn_pool_clear): Deprecate. Reimplemented interface using Pythonic pools. (apr_pool_clear, apr_pool_destroy): Remove functions. These functions can be accessed by directly including libsvn.core. I did not create a compatibility layer for these functions because svn_pool_clear and svn_pool_destroy are favored over apr_pool_clear and apr_pool_destroy. (apr_initialize, apr_terminate): Deprecate. APR initialization and termination is now handled automatically. Old functions are now no-ops. (application_pool): New variable. Global application pool. (Pool): New object. A Pythonic pool object, managed by Python. (Pool.init): New method. Create a new memory pool. (Pool.valid): New method. Check whether this memory pool is still valid. (Pool.assert_valid): New method. Assert that this memory_pool is still valid. (Pool.clear): New method. Clear embedded memory pool. (Pool.destroy): New method. Destroy embedded memory pool. (Pool.__del__): New method. Automatically destroys memory pools, if necessary. * subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (_global_pool): New variable. Contains application pool. Intentionally uses same variable name as function-level global pool so that the SWIG/C code will fall-back to the application-level pool if no function-level global pool is available. (svn_swig_py_set_application_pool): New function. Sets the application-level global pool. (svn_swig_py_clear_application_pool): New function. Clears the application-level global pool. (svn_swig_py_get_application_pool): New function. Gets the application-level global pool. (svn_swig_py_convert_pool): New function. Converts a Python pool object into a SWIG Pool object. Raises a Python AssertionError or TypeError if the Python pool object is invalid. * subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h (_global_pool): Add declaration for new global variable. (svn_swig_py_set_application_pool, svn_swig_py_clear_application_pool, svn_swig_py_get_application_pool, svn_swig_py_convert_pool): Add declarations for new functions. * subversion/bindings/swig/svn_types.i (apr_pool_t): Update typemap for apr_pool_t to convert Python pools into APR pools, and to use the application-level pool if no local pool is available. ------------------------------------------------------------------------ r15369 | djames | 2005-07-19 16:29:50 -0400 (Tue, 19 Jul 2005) | 5 lines Renamed python branch to python-bindings-improvements. Suggested by: C. Michael Pilato ------------------------------------------------------------------------