You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2015/03/05 11:36:31 UTC
svn commit: r1664298 - in /subversion/branches/move-tracking-2/subversion:
include/svn_iter.h libsvn_delta/branch.c libsvn_delta/editor3e.c
libsvn_subr/iter.c svnmover/svnmover.c
Author: julianfoad
Date: Thu Mar 5 10:36:29 2015
New Revision: 1664298
URL: http://svn.apache.org/r1664298
Log:
On the 'move-tracking-2' branch: Add and use accessor functions for a hash
table keyed by integers, instead of using APR hash table accessors directly.
* subversion/include/svn_iter.h,
subversion/libsvn_subr/iter.c
(svn_int_hash_get,
svn_int_hash_set,
svn_int_hash_this_key): New.
* subversion/libsvn_delta/branch.c
(repos_get_family_by_id,
repos_register_family,
svn_branch_map_get,
branch_map_set,
svn_branch_map_purge_orphans,
svn_branch_get_eid_by_path,
svn_branch_map_copy_children,
svn_branch_map_branch_children): Use them.
* subversion/libsvn_delta/editor3e.c
(svn_branch_subtree_differences): Use them.
* subversion/svnmover/svnmover.c
(branch_merge_subtree_r,
svn_branch_diff_e,
svn_branch_diff,
get_subbranches,
svn_branch_diff_r): Use them.
Modified:
subversion/branches/move-tracking-2/subversion/include/svn_iter.h
subversion/branches/move-tracking-2/subversion/libsvn_delta/branch.c
subversion/branches/move-tracking-2/subversion/libsvn_delta/editor3e.c
subversion/branches/move-tracking-2/subversion/libsvn_subr/iter.c
subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c
Modified: subversion/branches/move-tracking-2/subversion/include/svn_iter.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_iter.h?rev=1664298&r1=1664297&r2=1664298&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_iter.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_iter.h Thu Mar 5 10:36:29 2015
@@ -134,6 +134,24 @@ svn_iter__break(void);
/* ====================================================================== */
+/** Like apr_hash_get() but the hash key is an integer. */
+void *
+svn_int_hash_get(apr_hash_t *ht,
+ int key);
+
+/** Like apr_hash_set() but the hash key is an integer. */
+void
+svn_int_hash_set(apr_hash_t *ht,
+ int key,
+ const void *val);
+
+/** Like apr_hash_this_key() but the hash key is an integer. */
+int
+svn_int_hash_this_key(apr_hash_index_t *hi);
+
+
+/* ====================================================================== */
+
/** A hash iterator for iterating over an array or a hash table in
* its natural order or in sorted order.
*
Modified: subversion/branches/move-tracking-2/subversion/libsvn_delta/branch.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_delta/branch.c?rev=1664298&r1=1664297&r2=1664298&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_delta/branch.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_delta/branch.c Thu Mar 5 10:36:29 2015
@@ -82,7 +82,7 @@ static svn_branch_family_t *
repos_get_family_by_id(svn_branch_repos_t *repos,
int fid)
{
- return apr_hash_get(repos->families, &fid, sizeof(fid));
+ return svn_int_hash_get(repos->families, fid);
}
/* Register FAMILY in REPOS.
@@ -91,11 +91,7 @@ static void
repos_register_family(svn_branch_repos_t *repos,
svn_branch_family_t *family)
{
- int fid = family->fid;
-
- apr_hash_set(repos->families,
- apr_pmemdup(repos->pool, &fid, sizeof(fid)), sizeof(fid),
- family);
+ svn_int_hash_set(repos->families, family->fid, family);
}
svn_branch_revision_root_t *
@@ -458,7 +454,7 @@ svn_branch_map_get(const svn_branch_inst
SVN_ERR_ASSERT_NO_RETURN(BRANCH_FAMILY_HAS_ELEMENT(branch, eid));
- node = apr_hash_get(branch->e_map, &eid, sizeof(eid));
+ node = svn_int_hash_get(branch->e_map, eid);
if (node)
branch_map_node_validate(branch, eid, node);
@@ -478,13 +474,12 @@ branch_map_set(svn_branch_instance_t *br
svn_branch_el_rev_content_t *node)
{
apr_pool_t *map_pool = apr_hash_pool_get(branch->e_map);
- int *eid_p = apr_pmemdup(map_pool, &eid, sizeof(eid));
SVN_ERR_ASSERT_NO_RETURN(BRANCH_FAMILY_HAS_ELEMENT(branch, eid));
if (node)
branch_map_node_validate(branch, eid, node);
- apr_hash_set(branch->e_map, eid_p, sizeof(*eid_p), node);
+ svn_int_hash_set(branch->e_map, eid, node);
assert_branch_instance_invariants(branch, map_pool);
}
@@ -557,7 +552,7 @@ svn_branch_map_purge_orphans(svn_branch_
for (hi = apr_hash_first(scratch_pool, branch->e_map);
hi; hi = apr_hash_next(hi))
{
- int this_eid = *(const int *)apr_hash_this_key(hi);
+ int this_eid = svn_int_hash_this_key(hi);
svn_branch_el_rev_content_t *this_node = apr_hash_this_val(hi);
if (this_node->parent_eid != -1)
@@ -675,7 +670,7 @@ svn_branch_get_eid_by_path(const svn_bra
for (hi = apr_hash_first(scratch_pool, branch->e_map);
hi; hi = apr_hash_next(hi))
{
- int eid = *(const int *)apr_hash_this_key(hi);
+ int eid = svn_int_hash_this_key(hi);
const char *this_path = svn_branch_get_path_by_eid(branch, eid,
scratch_pool);
@@ -755,7 +750,7 @@ svn_branch_map_copy_children(svn_branch_
for (hi = apr_hash_first(scratch_pool, from_branch->e_map);
hi; hi = apr_hash_next(hi))
{
- int this_from_eid = *(const int *)apr_hash_this_key(hi);
+ int this_from_eid = svn_int_hash_this_key(hi);
svn_branch_el_rev_content_t *from_node = apr_hash_this_val(hi);
if (from_node->parent_eid == from_parent_eid)
@@ -798,7 +793,7 @@ svn_branch_map_branch_children(svn_branc
for (hi = apr_hash_first(scratch_pool, from_branch->e_map);
hi; hi = apr_hash_next(hi))
{
- int this_eid = *(const int *)apr_hash_this_key(hi);
+ int this_eid = svn_int_hash_this_key(hi);
svn_branch_el_rev_content_t *from_node = svn_branch_map_get(from_branch,
this_eid);
Modified: subversion/branches/move-tracking-2/subversion/libsvn_delta/editor3e.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_delta/editor3e.c?rev=1664298&r1=1664297&r2=1664298&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_delta/editor3e.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_delta/editor3e.c Thu Mar 5 10:36:29 2015
@@ -29,6 +29,7 @@
#include "svn_dirent_uri.h"
#include "svn_props.h"
#include "svn_sorts.h"
+#include "svn_iter.h"
#include "private/svn_editor3e.h"
#include "svn_private_config.h"
@@ -719,13 +720,12 @@ svn_branch_subtree_differences(apr_hash_
if (! svn_branch_el_rev_content_equal(content_left, content_right,
scratch_pool))
{
- int *eid_stored = apr_pmemdup(result_pool, &e, sizeof(e));
svn_branch_el_rev_content_t **contents
= apr_palloc(result_pool, 2 * sizeof(void *));
contents[0] = content_left;
contents[1] = content_right;
- apr_hash_set(diff, eid_stored, sizeof(*eid_stored), contents);
+ svn_int_hash_set(diff, e, contents);
}
}
Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/iter.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/iter.c?rev=1664298&r1=1664297&r2=1664298&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/iter.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/iter.c Thu Mar 5 10:36:29 2015
@@ -215,6 +215,32 @@ void *apr_hash_this_val(apr_hash_index_t
/* ====================================================================== */
+void *
+svn_int_hash_get(apr_hash_t *ht,
+ int key)
+{
+ return apr_hash_get(ht, &key, sizeof(key));
+}
+
+void
+svn_int_hash_set(apr_hash_t *ht,
+ int key,
+ const void *val)
+{
+ int *id_p = apr_pmemdup(apr_hash_pool_get(ht), &key, sizeof(key));
+
+ apr_hash_set(ht, id_p, sizeof(key), val);
+}
+
+int
+svn_int_hash_this_key(apr_hash_index_t *hi)
+{
+ return *(const int *)apr_hash_this_key(hi);
+}
+
+
+/* ====================================================================== */
+
svn_array_t *
svn_array_make(apr_pool_t *pool)
{
Modified: subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c?rev=1664298&r1=1664297&r2=1664298&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c Thu Mar 5 10:36:29 2015
@@ -689,9 +689,9 @@ branch_merge_subtree_r(svn_editor3_t *ed
for (eid = first_eid; eid < next_eid; eid++)
{
svn_branch_el_rev_content_t **e_yca_src
- = apr_hash_get(diff_yca_src, &eid, sizeof(eid));
+ = svn_int_hash_get(diff_yca_src, eid);
svn_branch_el_rev_content_t **e_yca_tgt
- = apr_hash_get(diff_yca_tgt, &eid, sizeof(eid));
+ = svn_int_hash_get(diff_yca_tgt, eid);
svn_branch_el_rev_content_t *e_yca;
svn_branch_el_rev_content_t *e_src;
svn_branch_el_rev_content_t *e_tgt;
@@ -874,7 +874,7 @@ svn_branch_diff_e(svn_editor3_t *editor,
for (eid = first_eid; eid < next_eid; eid++)
{
svn_branch_el_rev_content_t **e_pair
- = apr_hash_get(diff_yca_tgt, &eid, sizeof(eid));
+ = svn_int_hash_get(diff_yca_tgt, eid);
svn_branch_el_rev_content_t *e0, *e1;
if (! e_pair)
@@ -981,7 +981,7 @@ svn_branch_diff(svn_editor3_t *editor,
for (eid = first_eid; eid < next_eid; eid++)
{
svn_branch_el_rev_content_t **e_pair
- = apr_hash_get(diff_yca_tgt, &eid, sizeof(eid));
+ = svn_int_hash_get(diff_yca_tgt, eid);
svn_branch_el_rev_content_t *e0, *e1;
if (! e_pair)
@@ -1081,9 +1081,8 @@ get_subbranches(svn_branch_instance_t *b
scratch_pool))
{
svn_branch_instance_t *b = bi->val;
- int *bid = apr_pmemdup(result_pool, &b->sibling_defn->bid, sizeof (*bid));
- apr_hash_set(result, bid, sizeof (*bid), b);
+ svn_int_hash_set(result, b->sibling_defn->bid, b);
}
}
return result;
@@ -1150,9 +1149,9 @@ svn_branch_diff_r(svn_editor3_t *editor,
for (hi = apr_hash_first(scratch_pool, subbranches_all);
hi; hi = apr_hash_next(hi))
{
- int bid = *(const int *)apr_hash_this_key(hi);
- svn_branch_instance_t *branch_l = apr_hash_get(subbranches_l, &bid, sizeof(bid));
- svn_branch_instance_t *branch_r = apr_hash_get(subbranches_r, &bid, sizeof(bid));
+ int bid = svn_int_hash_this_key(hi);
+ svn_branch_instance_t *branch_l = svn_int_hash_get(subbranches_l, bid);
+ svn_branch_instance_t *branch_r = svn_int_hash_get(subbranches_r, bid);
svn_branch_el_rev_id_t *sub_left = NULL, *sub_right = NULL;
if (branch_l)