Rev 1009: Add explicit types to make pyrex code faster. in file:///data/jelmer/bzr-svn/pyrex/

Jelmer Vernooij jelmer at samba.org
Tue Mar 18 17:20:00 GMT 2008


At file:///data/jelmer/bzr-svn/pyrex/

------------------------------------------------------------
revno: 1009
revision-id:jelmer at samba.org-20080318171959-v0t1pktlya2g1fs4
parent: jelmer at samba.org-20080318152003-1iubuswnznx21nz0
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: pyrex
timestamp: Tue 2008-03-18 18:19:59 +0100
message:
  Add explicit types to make pyrex code faster.
modified:
  client.pyx                     client.pyx-20080313235339-wbyjbw2namuiql8f-1
  core.pyx                       core.pyx-20080313210413-17k59slolpfe5kdq-1
  ra.pyx                         ra.pyx-20080313140933-qybkqaxe3m4mcll7-1
  wc.pyx                         wc.pyx-20080313142018-10l8l23vha2j9e6b-1
=== modified file 'client.pyx'
--- a/client.pyx	2008-03-18 02:07:16 +0000
+++ b/client.pyx	2008-03-18 17:19:59 +0000
@@ -227,11 +227,11 @@
         self.client.log_msg_baton2 = <void *>func
         self.callbacks.append(func)
 
-    def add(self, path, recursive=True, force=False, no_ignore=False):
+    def add(self, char *path, int recursive=True, int force=False, int no_ignore=False):
         check_error(svn_client_add3(path, recursive, force, no_ignore, 
                     self.client, self.pool))
 
-    def checkout(self, url, path, peg_rev=None, rev=None, recurse=True, 
+    def checkout(self, char *url, char *path, peg_rev=None, rev=None, recurse=True, 
                  ignore_externals=False):
         cdef svn_revnum_t result_rev
         cdef svn_opt_revision_t c_peg_rev, c_rev
@@ -242,7 +242,7 @@
             ignore_externals, self.client, self.pool))
         return result_rev
 
-    def commit(self, targets, recurse=True, keep_locks=True):
+    def commit(self, targets, int recurse=True, int keep_locks=True):
         cdef svn_commit_info_t *commit_info
         commit_info = NULL
         check_error(svn_client_commit3(&commit_info, 
@@ -258,7 +258,7 @@
                     self.client, self.pool))
         return py_commit_info_tuple(commit_info)
 
-    def delete(self, paths, force=False):
+    def delete(self, paths, int force=False):
         cdef svn_commit_info_t *commit_info
         commit_info = NULL
         check_error(svn_client_delete2(&commit_info, 
@@ -266,7 +266,7 @@
                     force, self.client, self.pool))
         return py_commit_info_tuple(commit_info)
 
-    def copy(self, src_path, dst_path, src_rev=None):
+    def copy(self, char *src_path, char *dst_path, src_rev=None):
         cdef svn_commit_info_t *commit_info
         cdef svn_opt_revision_t c_src_rev
         to_opt_revision(src_rev, &c_src_rev)
@@ -275,15 +275,15 @@
                     &c_src_rev, dst_path, self.client, self.pool))
         return py_commit_info_tuple(commit_info)
 
-    def propset(self, propname, propval, target, recurse=True, 
-            skip_checks=False):
+    def propset(self, char *propname, char *propval, char *target, int recurse=True, 
+            int skip_checks=False):
         cdef svn_string_t c_propval
         c_propval.data = propval
         c_propval.len = len(propval)
         check_error(svn_client_propset2(propname, &c_propval,
                     target, recurse, skip_checks, self.client, self.pool))
     
-    def propget(self, propname, target, peg_revision=None, revision=None,
+    def propget(self, char *propname, char *target, peg_revision=None, revision=None,
                 recurse=False):
         cdef svn_string_t c_propval
         cdef svn_opt_revision_t c_peg_rev
@@ -295,7 +295,7 @@
                     &c_peg_rev, &c_rev, recurse, self.client, self.pool))
         return prop_hash_to_dict(hash_props)
 
-    def update(self, paths, rev=None, recurse=True, ignore_externals=False):
+    def update(self, paths, rev=None, int recurse=True, int ignore_externals=False):
         cdef apr_array_header_t *result_revs
         cdef svn_opt_revision_t c_rev
         cdef svn_revnum_t *ret_rev
@@ -310,7 +310,7 @@
             ret_rev = <svn_revnum_t *>apr_array_pop(result_revs)
         return ret
 
-    def revprop_get(self,propname, propval, url, rev=None):
+    def revprop_get(self, char *propname, char *propval, char *url, rev=None):
         cdef svn_revnum_t set_rev
         cdef svn_opt_revision_t c_rev
         cdef svn_string_t *c_val
@@ -319,7 +319,7 @@
                     &c_rev, &set_rev, self.client, self.pool))
         return (PyString_FromStringAndSize(c_val.data, c_val.len), set_rev)
 
-    def revprop_set(self,propname, propval, url, rev=None, force=False):
+    def revprop_set(self, char *propname, char *propval, char *url, rev=None, int force=False):
         cdef svn_revnum_t set_rev
         cdef svn_opt_revision_t c_rev
         cdef svn_string_t c_val
@@ -331,7 +331,7 @@
         return set_rev
 
     def log(self, targets, callback, peg_revision=None, start=None, end=None,
-            limit=0, discover_changed_paths=True, strict_node_history=True):
+            int limit=0, int discover_changed_paths=True, int strict_node_history=True):
         cdef svn_opt_revision_t c_peg_rev, c_start_rev, c_end_rev
         to_opt_revision(peg_revision, &c_peg_rev)
         to_opt_revision(start, &c_start_rev)

=== modified file 'core.pyx'
--- a/core.pyx	2008-03-17 22:28:17 +0000
+++ b/core.pyx	2008-03-18 17:19:59 +0000
@@ -83,7 +83,7 @@
     svn_error_t *svn_time_from_cstring(apr_time_t *when, char *data, 
                                        apr_pool_t *pool)
 
-def time_to_cstring(when):
+def time_to_cstring(int when):
     """Convert a UNIX timestamp to a Subversion CString."""
     cdef apr_pool_t *pool
     pool = Pool(NULL)
@@ -91,7 +91,7 @@
     apr_pool_destroy(pool)
     return ret
 
-def time_from_cstring(data):
+def time_from_cstring(char *data):
     """Parse a Subversion time string and return a UNIX timestamp."""
     cdef apr_time_t when
     cdef apr_pool_t *pool

=== modified file 'ra.pyx'
--- a/ra.pyx	2008-03-18 15:20:03 +0000
+++ b/ra.pyx	2008-03-18 17:19:59 +0000
@@ -57,7 +57,7 @@
 
     ctypedef struct svn_delta_editor_t:
         svn_error_t *(*set_target_revision)(void *edit_baton, 
-                                svn_revnum_t target_revision, apr_pool_t *pool)
+                svn_revnum_t target_revision, apr_pool_t *pool) except *
         svn_error_t *(*open_root)(void *edit_baton, svn_revnum_t base_revision, 
                                   apr_pool_t *dir_pool, void **root_baton)
 
@@ -336,15 +336,15 @@
     cdef void *report_baton
     cdef apr_pool_t *pool
 
-    def set_path(self, path, revision, start_empty, lock_token):
+    def set_path(self, char *path, int revision, int start_empty, char *lock_token):
         check_error(self.reporter.set_path(self.report_baton, path, revision, 
                      start_empty, c_lock_token(lock_token), self.pool))
 
-    def delete_path(self, path):
+    def delete_path(self, char *path):
         check_error(self.reporter.delete_path(self.report_baton, path, 
                      self.pool))
 
-    def link_path(self, path, url, revision, start_empty, lock_token):
+    def link_path(self, char *path, char *url, int revision, int start_empty, char *lock_token):
         check_error(self.reporter.link_path(self.report_baton, path, url, 
                     revision, start_empty, c_lock_token(lock_token), self.pool))
 
@@ -367,7 +367,7 @@
     cdef svn_delta_editor_t *editor
     cdef apr_pool_t *pool
 
-    def apply_textdelta(self, base_checksum=None):
+    def apply_textdelta(self, char *base_checksum=NULL):
         cdef char *c_base_checksum
         cdef svn_txdelta_window_handler_t txdelta_handler
         cdef void *txdelta_baton
@@ -384,7 +384,7 @@
         py_txdelta.txbaton = txdelta_baton
         return py_txdelta
 
-    def change_prop(self, name, value):
+    def change_prop(self, char *name, char *value):
         cdef svn_string_t c_value, *p_c_value
         if value is None:
             p_c_value = NULL
@@ -395,7 +395,7 @@
         check_error(self.editor.change_file_prop(self.file_baton, name, 
                     p_c_value, self.pool))
 
-    def close(self, checksum=None):
+    def close(self, char *checksum=NULL):
         cdef char *c_checksum
         if checksum is None:
             c_checksum = NULL
@@ -409,11 +409,11 @@
     cdef void *dir_baton
     cdef apr_pool_t *pool
 
-    def delete_entry(self, path, revision=-1):
+    def delete_entry(self, char *path, int revision=-1):
         check_error(self.editor.delete_entry(path, revision, self.dir_baton,
                                              self.pool))
 
-    def add_directory(self, path, copyfrom_path=None, copyfrom_rev=-1):
+    def add_directory(self, char *path, char *copyfrom_path=NULL, int copyfrom_rev=-1):
         cdef void *child_baton
         cdef char *c_copyfrom_path
         if copyfrom_path is None:
@@ -424,13 +424,13 @@
                     c_copyfrom_path, copyfrom_rev, self.pool, &child_baton))
         return new_dir_editor(self.editor, child_baton, self.pool)
 
-    def open_directory(self, path, base_revision=-1):
+    def open_directory(self, char *path, int base_revision=-1):
         cdef void *child_baton
         check_error(self.editor.open_directory(path, self.dir_baton,
                     base_revision, self.pool, &child_baton))
         return new_dir_editor(self.editor, child_baton, self.pool)
 
-    def change_prop(self, name, value):
+    def change_prop(self, char *name, char *value):
         cdef svn_string_t c_value, *p_c_value
         if value is None:
             p_c_value = NULL
@@ -444,11 +444,11 @@
     def close(self):
         check_error(self.editor.close_directory(self.dir_baton, self.pool))
 
-    def absent_directory(self, path):
+    def absent_directory(self, char *path):
         check_error(self.editor.absent_directory(path, self.dir_baton, 
                     self.pool))
 
-    def add_file(self, path, copy_path=None, copy_rev=-1):
+    def add_file(self, char *path, char *copy_path=NULL, int copy_rev=-1):
         cdef void *file_baton
         cdef FileEditor py_file_editor
         cdef char *c_copy_path
@@ -464,11 +464,9 @@
         py_file_editor.pool = self.pool
         return py_file_editor
 
-    def open_file(self, path, base_revision=None):
+    def open_file(self, char *path, int base_revision=-1):
         cdef void *file_baton
         cdef FileEditor py_file_editor
-        if base_revision is None:
-            base_revision = -1
         check_error(self.editor.open_file(path, self.dir_baton, 
                     base_revision, self.pool, &file_baton))
         py_file_editor = FileEditor()
@@ -477,7 +475,7 @@
         py_file_editor.pool = self.pool
         return py_file_editor
 
-    def absent_file(self, path):
+    def absent_file(self, char *path):
         check_error(self.editor.absent_file(path, self.dir_baton, self.pool))
 
 cdef new_dir_editor(svn_delta_editor_t *editor, void *child_baton, apr_pool_t *pool):
@@ -494,11 +492,11 @@
     cdef void *edit_baton
     cdef apr_pool_t *pool
 
-    def set_target_revision(self, target_revision):
+    def set_target_revision(self, int target_revision):
         check_error(self.editor.set_target_revision(self.edit_baton,
                     target_revision, self.pool))
     
-    def open_root(self, base_revision=-1):
+    def open_root(self, int base_revision=-1):
         cdef void *root_baton
         check_error(self.editor.open_root(self.edit_baton, base_revision,
                     self.pool, &root_baton))
@@ -522,7 +520,7 @@
     return (svn_ra_version().major, svn_ra_version().minor, 
             svn_ra_version().minor, svn_ra_version().tag)
 
-cdef svn_error_t *py_editor_set_target_revision(void *edit_baton, svn_revnum_t target_revision, apr_pool_t *pool):
+cdef svn_error_t *py_editor_set_target_revision(void *edit_baton, svn_revnum_t target_revision, apr_pool_t *pool) except *:
     self = <object>edit_baton
     self.set_target_revision(target_revision)
     return NULL
@@ -681,7 +679,7 @@
     cdef apr_pool_t *pool
     cdef char *url
     cdef object progress_func
-    def __init__(self, url, progress_cb=None, config={}):
+    def __init__(self, char *url, progress_cb=None, config={}):
         """Connect to a remote Subversion repository. 
 
         :param url: URL of the repository
@@ -713,7 +711,7 @@
         apr_pool_destroy(temp_pool)
         return uuid
 
-    def reparent(self, url):
+    def reparent(self, char *url):
         """Switch to a different url."""
         cdef apr_pool_t *temp_pool
         temp_pool = Pool(self.pool)
@@ -732,8 +730,8 @@
         apr_pool_destroy(temp_pool)
         return latest_revnum
 
-    def get_log(self, callback, paths, start, end, limit=0, 
-                discover_changed_paths=True, strict_node_history=True,
+    def get_log(self, callback, paths, int start, int end, int limit=0, 
+                int discover_changed_paths=True, int strict_node_history=True,
                 revprops=[PROP_REVISION_LOG,PROP_REVISION_AUTHOR,PROP_REVISION_DATE]):
         cdef apr_pool_t *temp_pool
         temp_pool = Pool(NULL)
@@ -753,7 +751,7 @@
         apr_pool_destroy(temp_pool)
         return root
 
-    def do_update(self, revision_to_update_to, update_target, recurse, 
+    def do_update(self, int revision_to_update_to, char *update_target, int recurse, 
                   update_editor):
         cdef svn_ra_reporter2_t *reporter
         cdef void *report_baton
@@ -769,8 +767,8 @@
         ret.pool = temp_pool
         return ret
 
-    def do_switch(self, revision_to_update_to, update_target, recurse, 
-                  switch_url, update_editor):
+    def do_switch(self, int revision_to_update_to, char *update_target, int recurse, 
+                  char *switch_url, update_editor):
         cdef svn_ra_reporter2_t *reporter
         cdef void *report_baton
         cdef apr_pool_t *temp_pool
@@ -786,14 +784,14 @@
         ret.pool = temp_pool
         return ret
 
-    def replay(self, revision, low_water_mark, update_editor, send_deltas=True):
+    def replay(self, int revision, int low_water_mark, update_editor, int send_deltas=True):
         cdef apr_pool_t *temp_pool
         temp_pool = Pool(self.pool)
         check_error(svn_ra_replay(self.ra, revision, low_water_mark,
                      send_deltas, &py_editor, update_editor, temp_pool))
         apr_pool_destroy(temp_pool)
 
-    def rev_proplist(self, rev):
+    def rev_proplist(self, int rev):
         cdef apr_pool_t *temp_pool
         cdef apr_hash_t *props
         temp_pool = Pool(self.pool)
@@ -803,7 +801,7 @@
         return py_props
 
     def get_commit_editor(self, revprops, commit_callback, lock_tokens, 
-                          keep_locks):
+                          int keep_locks):
         cdef apr_pool_t *temp_pool
         cdef svn_delta_editor_t *editor
         cdef void *edit_baton
@@ -825,7 +823,7 @@
         py_editor.pool = temp_pool
         return py_editor
 
-    def change_rev_prop(self, rev, name, value):
+    def change_rev_prop(self, int rev, char *name, char *value):
         cdef apr_pool_t *temp_pool
         cdef svn_string_t *val_string
         temp_pool = Pool(self.pool)
@@ -834,7 +832,7 @@
                      val_string, temp_pool))
         apr_pool_destroy(temp_pool)
     
-    def get_dir(self, path, revision=None, dirent_fields=0):
+    def get_dir(self, char *path, int revision=-1, int dirent_fields=0):
         cdef apr_pool_t *temp_pool
         cdef apr_hash_t *dirents
         cdef apr_hash_index_t *idx
@@ -874,7 +872,7 @@
         apr_pool_destroy(temp_pool)
         return (py_dirents, fetch_rev, py_props)
 
-    def get_lock(self, path):
+    def get_lock(self, char *path):
         cdef svn_lock_t *lock
         cdef apr_pool_t *temp_pool
         temp_pool = Pool(self.pool)
@@ -882,7 +880,7 @@
         apr_pool_destroy(temp_pool)
         return wrap_lock(lock)
 
-    def check_path(self, path, revision):
+    def check_path(self, char *path, int revision):
         cdef svn_node_kind_t kind
         cdef apr_pool_t *temp_pool
         temp_pool = Pool(self.pool)
@@ -891,7 +889,7 @@
         apr_pool_destroy(temp_pool)
         return kind
 
-    def has_capability(self, capability):
+    def has_capability(self, char *capability):
         cdef apr_pool_t *temp_pool
         cdef int has
         temp_pool = Pool(self.pool)
@@ -901,7 +899,7 @@
         apr_pool_destroy(temp_pool)
         return has
 
-    def unlock(self, path_tokens, break_lock, lock_func):
+    def unlock(self, path_tokens, int break_lock, lock_func):
         cdef apr_pool_t *temp_pool
         cdef apr_hash_t *hash_path_tokens
         temp_pool = Pool(self.pool)
@@ -912,7 +910,7 @@
                      py_lock_func, lock_func, temp_pool))
         apr_pool_destroy(temp_pool)
 
-    def lock(self, path_revs, comment, steal_lock, lock_func):
+    def lock(self, path_revs, char *comment, int steal_lock, lock_func):
         cdef apr_pool_t *temp_pool
         cdef apr_hash_t *hash_path_revs
         cdef svn_revnum_t *rev
@@ -958,10 +956,10 @@
             el[0] = provider.provider
         svn_auth_open(&self.auth_baton, c_providers, self.pool)
 
-    def set_parameter(self, name, value):
+    def set_parameter(self, char *name, char *value):
         svn_auth_set_parameter(self.auth_baton, name, <char *>value)
 
-    def get_parameter(self, name):
+    def get_parameter(self, char *name):
         return <char *>svn_auth_get_parameter(self.auth_baton, name)
 
     def __dealloc__(self):
@@ -973,7 +971,7 @@
     cred[0].username = apr_pstrdup(pool, username)
     return NULL
 
-def get_username_prompt_provider(prompt_func, retry_limit):
+def get_username_prompt_provider(prompt_func, int retry_limit):
     cdef AuthProvider auth
     auth = AuthProvider()
     auth.pool = Pool(NULL)
@@ -987,7 +985,7 @@
     cred[0].password = apr_pstrdup(pool, password)
     return NULL
 
-def get_simple_prompt_provider(prompt_func, retry_limit):
+def get_simple_prompt_provider(prompt_func, int retry_limit):
     cdef AuthProvider auth
     auth = AuthProvider()
     auth.pool = Pool(NULL)
@@ -1012,7 +1010,7 @@
     cred[0].password = apr_pstrdup(pool, password)
     return NULL
 
-def get_ssl_client_cert_pw_prompt_provider(prompt_func, retry_limit):
+def get_ssl_client_cert_pw_prompt_provider(prompt_func, int retry_limit):
     cdef AuthProvider auth
     auth = AuthProvider()
     auth.pool = Pool(NULL)

=== modified file 'wc.pyx'
--- a/wc.pyx	2008-03-18 02:07:09 +0000
+++ b/wc.pyx	2008-03-18 17:19:59 +0000
@@ -286,7 +286,7 @@
 cdef class WorkingCopy:
     cdef svn_wc_adm_access_t *adm
     cdef apr_pool_t *pool
-    def __init__(self, WorkingCopy associated, path, write_lock=False, depth=0, 
+    def __init__(self, WorkingCopy associated, char *path, int write_lock=False, int depth=0, 
                  cancel_func=None):
         cdef svn_wc_adm_access_t *parent_wc
         self.pool = Pool(NULL)
@@ -304,7 +304,7 @@
     def locked(self):
         return svn_wc_adm_locked(self.adm)
 
-    def prop_get(self, name, path):
+    def prop_get(self, char *name, char *path):
         cdef svn_string_t *value
         cdef apr_pool_t *temp_pool
         temp_pool = Pool(self.pool)
@@ -316,7 +316,7 @@
         apr_pool_destroy(temp_pool)
         return ret
 
-    def prop_set(self, name, value, path, skip_checks=False):
+    def prop_set(self, char *name, char *value, char *path, int skip_checks=False):
         cdef apr_pool_t *temp_pool
         cdef svn_string_t *cvalue
         temp_pool = Pool(self.pool)
@@ -325,7 +325,7 @@
                     skip_checks, temp_pool))
         apr_pool_destroy(temp_pool)
 
-    def entries_read(self, show_hidden=False):
+    def entries_read(self, int show_hidden=False):
         cdef apr_hash_t *entries
         cdef apr_pool_t *temp_pool
         cdef apr_hash_index_t *idx
@@ -344,7 +344,7 @@
         apr_pool_destroy(temp_pool)
         return py_entries
 
-    def entry(self, path, show_hidden=False):
+    def entry(self, char *path, int show_hidden=False):
         cdef apr_pool_t *temp_pool
         cdef svn_wc_entry_t *entry
         temp_pool = Pool(self.pool)
@@ -353,7 +353,7 @@
 
         return py_entry(entry)
 
-    def get_prop_diffs(self, path):
+    def get_prop_diffs(self, char *path):
         cdef apr_pool_t *temp_pool
         cdef apr_array_header_t *propchanges
         cdef apr_hash_t *original_props
@@ -378,7 +378,7 @@
         apr_pool_destroy(temp_pool)
         return (py_propchanges, py_orig_props)
 
-    def add(self, path, copyfrom_url=None, copyfrom_rev=-1, cancel_func=None,
+    def add(self, char *path, char *copyfrom_url=NULL, int copyfrom_rev=-1, cancel_func=None,
             notify_func=None):
         cdef apr_pool_t *temp_pool
         cdef char *c_copyfrom_url
@@ -395,7 +395,7 @@
                                 temp_pool))
         apr_pool_destroy(temp_pool)
 
-    def copy(self, src, dst, cancel_func=None, notify_func=None):
+    def copy(self, char *src, char *dst, cancel_func=None, notify_func=None):
         cdef apr_pool_t *temp_pool
         temp_pool = Pool(self.pool)
         check_error(svn_wc_copy2(src, self.adm, dst,
@@ -404,7 +404,7 @@
                                 temp_pool))
         apr_pool_destroy(temp_pool)
 
-    def delete(self, path, cancel_func=None, notify_func=None):
+    def delete(self, char *path, cancel_func=None, notify_func=None):
         cdef apr_pool_t *temp_pool
         temp_pool = Pool(self.pool)
         check_error(svn_wc_delete2(path, self.adm, 
@@ -413,8 +413,8 @@
                                 temp_pool))
         apr_pool_destroy(temp_pool)
 
-    def crawl_revisions(self, path, reporter, restore_files=True, 
-                        recurse=True, use_commit_times=True,
+    def crawl_revisions(self, char *path, reporter, int restore_files=True, 
+                        int recurse=True, int use_commit_times=True,
                         notify_func=None):
         cdef apr_pool_t *temp_pool
         cdef svn_wc_traversal_info_t *traversal_info
@@ -437,7 +437,7 @@
             apr_pool_destroy(self.pool)
 
 
-def revision_status(wc_path, trail_url=None, committed=False, cancel_func=None):
+def revision_status(char *wc_path, char *trail_url=NULL, int committed=False, cancel_func=None):
     """Determine the revision status of a specified working copy.
 
     :return: Tuple with minimum and maximum revnums found, whether the 
@@ -458,13 +458,13 @@
     apr_pool_destroy(temp_pool)
     return ret
 
-def is_normal_prop(name):
+def is_normal_prop(char *name):
     return svn_wc_is_normal_prop(name)
 
-def is_wc_prop(name):
+def is_wc_prop(char *name):
     return svn_wc_is_wc_prop(name)
 
-def is_entry_prop(name):
+def is_entry_prop(char *name):
     return svn_wc_is_entry_prop(name)
 
 def get_adm_dir():
@@ -474,7 +474,7 @@
     apr_pool_destroy(pool)
     return ret
 
-def get_pristine_copy_path(path):
+def get_pristine_copy_path(char *path):
     cdef apr_pool_t *pool
     cdef char *pristine_path
     pool = Pool(NULL)




More information about the bazaar-commits mailing list