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/10/16 16:24:30 UTC
svn commit: r1709011 - in /subversion/branches/move-tracking-2/subversion:
include/private/svn_branch.h libsvn_delta/branch.c
libsvn_delta/branch_private.h
Author: julianfoad
Date: Fri Oct 16 14:24:30 2015
New Revision: 1709011
URL: http://svn.apache.org/viewvc?rev=1709011&view=rev
Log:
On the 'move-tracking-2' branch: Refactoring: make one public member private
in each of the 'branch txn' and 'branch state' objects, and move some
declarations to a private header.
* subversion/include/private/svn_branch.h
(svn_branch_txn_t,
svn_branch_state_t): Remove one public member.
* subversion/libsvn_delta/branch.c
(svn_vtable_priv_t,
branch_txn_v_*_t,
branch_state_v_*_t): Move to branch_private.h.
(svn_branch_txn_priv_t,
svn_branch_state_priv_t): Move to branch_private.h, and move a member
variable into this structure.
Adjust all callers/users.
* subversion/libsvn_delta/branch_private.h
New file.
Added:
subversion/branches/move-tracking-2/subversion/libsvn_delta/branch_private.h (with props)
Modified:
subversion/branches/move-tracking-2/subversion/include/private/svn_branch.h
subversion/branches/move-tracking-2/subversion/libsvn_delta/branch.c
Modified: subversion/branches/move-tracking-2/subversion/include/private/svn_branch.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/private/svn_branch.h?rev=1709011&r1=1709010&r2=1709011&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/private/svn_branch.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/private/svn_branch.h Fri Oct 16 14:24:30 2015
@@ -150,9 +150,6 @@ typedef struct svn_branch_txn_t
* (skipping -1). */
int first_eid, next_eid;
- /* All branches. */
- apr_array_header_t *branches;
-
} svn_branch_txn_t;
/* Create a new branching revision-info object.
@@ -273,9 +270,6 @@ struct svn_branch_state_t
/* The revision to which this branch state belongs */
svn_branch_txn_t *txn;
- /* EID -> svn_branch_el_rev_content_t mapping. */
- svn_element_tree_t *element_tree;
-
};
/* Create a new branch state object, with no elements (not even a root
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=1709011&r1=1709010&r2=1709011&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_delta/branch.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_delta/branch.c Fri Oct 16 14:24:30 2015
@@ -33,6 +33,9 @@
#include "private/svn_element.h"
#include "private/svn_branch.h"
#include "private/svn_sorts_private.h"
+
+#include "branch_private.h"
+
#include "svn_private_config.h"
@@ -41,7 +44,7 @@
((eid) >= (branch)->txn->first_eid && (eid) < (branch)->txn->next_eid)
#define IS_BRANCH_ROOT_EID(branch, eid) \
- ((eid) == (branch)->element_tree->root_eid)
+ ((eid) == (branch)->priv->element_tree->root_eid)
/* Is BRANCH1 the same branch as BRANCH2? Compare by full branch-ids; don't
require identical branch objects. */
@@ -53,71 +56,9 @@
static apr_pool_t *
branch_state_pool_get(svn_branch_state_t *branch)
{
- return apr_hash_pool_get(branch->element_tree->e_map);
+ return apr_hash_pool_get(branch->priv->element_tree->e_map);
}
-/* Common aspects od a txn/branch 'editor' class (derived from Ev2) */
-typedef struct svn_vtable_priv_t
-{
- /* Standard cancellation function. Called before each callback. */
- svn_cancel_func_t cancel_func;
- void *cancel_baton;
-
- /* This pool is used as the scratch_pool for all callbacks. */
- apr_pool_t *scratch_pool;
-
-#ifdef ENABLE_ORDERING_CHECK
- svn_boolean_t within_callback;
- svn_boolean_t finished;
- apr_pool_t *state_pool;
-#endif
-
-} svn_vtable_priv_t;
-
-/* The methods of svn_branch_txn_t.
- * See the corresponding public API functions for details.
- */
-
-typedef svn_error_t *(*branch_txn_v_new_eid_t)(
- svn_branch_txn_t *txn,
- svn_branch_eid_t *eid_p,
- apr_pool_t *scratch_pool);
-
-typedef svn_error_t *(*branch_txn_v_open_branch_t)(
- svn_branch_txn_t *txn,
- const char **new_branch_id_p,
- svn_branch_rev_bid_t *predecessor,
- const char *outer_branch_id,
- int outer_eid,
- int root_eid,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
-
-typedef svn_error_t *(*branch_txn_v_branch_t)(
- svn_branch_txn_t *txn,
- const char **new_branch_id_p,
- svn_branch_rev_bid_eid_t *from,
- const char *outer_branch_id,
- int outer_eid,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
-
-typedef svn_error_t *(*branch_txn_v_sequence_point_t)(
- svn_branch_txn_t *txn,
- apr_pool_t *scratch_pool);
-
-struct svn_branch_txn_priv_t
-{
- svn_vtable_priv_t vpriv;
-
- /* Methods. */
- branch_txn_v_new_eid_t new_eid;
- branch_txn_v_open_branch_t open_branch;
- branch_txn_v_branch_t branch;
- branch_txn_v_sequence_point_t sequence_point;
-
-};
-
/* ### Layering: we didn't want to look at the whole repos in here, but
copying seems to require it. */
svn_error_t *
@@ -151,7 +92,7 @@ branch_in_rev_or_txn(svn_branch_state_t
return SVN_NO_ERROR;
}
-/* An #svn_editor3_t method. */
+/* An #svn_branch_txn_t method. */
static svn_error_t *
branch_txn_new_eid(svn_branch_txn_t *txn,
svn_branch_eid_t *eid_p,
@@ -165,6 +106,7 @@ branch_txn_new_eid(svn_branch_txn_t *txn
return SVN_NO_ERROR;
}
+/* An #svn_branch_txn_t method. */
static svn_error_t *
branch_txn_open_branch(svn_branch_txn_t *txn,
const char **new_branch_id_p,
@@ -197,6 +139,7 @@ branch_txn_open_branch(svn_branch_txn_t
return SVN_NO_ERROR;
}
+/* An #svn_branch_txn_t method. */
static svn_error_t *
branch_txn_branch(svn_branch_txn_t *txn,
const char **new_branch_id_p,
@@ -238,6 +181,7 @@ branch_txn_branch(svn_branch_txn_t *txn,
return SVN_NO_ERROR;
}
+/* An #svn_branch_txn_t method. */
static svn_error_t *
branch_txn_sequence_point(svn_branch_txn_t *txn,
apr_pool_t *scratch_pool)
@@ -245,10 +189,10 @@ branch_txn_sequence_point(svn_branch_txn
int i;
/* purge elements in each branch */
- for (i = 0; i < txn->branches->nelts; i++)
+ for (i = 0; i < txn->priv->branches->nelts; i++)
{
svn_branch_state_t *b
- = APR_ARRAY_IDX(txn->branches, i, void *);
+ = APR_ARRAY_IDX(txn->priv->branches, i, void *);
SVN_ERR(svn_branch_state_purge(b, scratch_pool));
}
@@ -256,6 +200,12 @@ branch_txn_sequence_point(svn_branch_txn
return SVN_NO_ERROR;
}
+/*
+ * ========================================================================
+ * Branch Txn Object
+ * ========================================================================
+ */
+
svn_error_t *
svn_branch_txn_new_eid(svn_branch_txn_t *txn,
int *new_eid_p,
@@ -346,10 +296,14 @@ svn_branch_txn_create(svn_branch_repos_t
txn->repos = repos;
txn->rev = rev;
txn->base_rev = base_rev;
- txn->branches = svn_array_make(result_pool);
+ txn->priv->branches = svn_array_make(result_pool);
return txn;
}
+/*
+ * ========================================================================
+ */
+
/* */
static const char *
branch_finalize_bid(const char *bid,
@@ -386,13 +340,13 @@ branch_finalize_eids(svn_branch_state_t
branch->bid = branch_finalize_bid(branch->bid, mapping_offset,
branch_state_pool_get(branch));
- if (branch->element_tree->root_eid < -1)
+ if (branch->priv->element_tree->root_eid < -1)
{
- branch->element_tree->root_eid
- = mapping_offset - branch->element_tree->root_eid;
+ branch->priv->element_tree->root_eid
+ = mapping_offset - branch->priv->element_tree->root_eid;
}
- for (hi = apr_hash_first(scratch_pool, branch->element_tree->e_map);
+ for (hi = apr_hash_first(scratch_pool, branch->priv->element_tree->e_map);
hi; hi = apr_hash_next(hi))
{
int old_eid = svn_int_hash_this_key(hi);
@@ -402,8 +356,8 @@ branch_finalize_eids(svn_branch_state_t
{
int new_eid = mapping_offset - old_eid;
- svn_element_tree_set(branch->element_tree, old_eid, NULL);
- svn_element_tree_set(branch->element_tree, new_eid, element);
+ svn_element_tree_set(branch->priv->element_tree, old_eid, NULL);
+ svn_element_tree_set(branch->priv->element_tree, new_eid, element);
}
if (element->parent_eid < -1)
{
@@ -429,9 +383,9 @@ svn_branch_txn_finalize_eids(svn_branch_
txn_local_eid == -3 => committed_eid := (txn.next_eid + 1) ... */
mapping_offset = txn->next_eid - 2;
- for (i = 0; i < txn->branches->nelts; i++)
+ for (i = 0; i < txn->priv->branches->nelts; i++)
{
- svn_branch_state_t *b = APR_ARRAY_IDX(txn->branches, i, void *);
+ svn_branch_state_t *b = APR_ARRAY_IDX(txn->priv->branches, i, void *);
SVN_ERR(branch_finalize_eids(b, mapping_offset, scratch_pool));
}
@@ -441,11 +395,15 @@ svn_branch_txn_finalize_eids(svn_branch_
return SVN_NO_ERROR;
}
+/*
+ * ========================================================================
+ */
+
apr_array_header_t *
svn_branch_txn_get_branches(svn_branch_txn_t *txn,
apr_pool_t *result_pool)
{
- return apr_array_copy(result_pool, txn->branches);
+ return apr_array_copy(result_pool, txn->priv->branches);
}
svn_branch_state_t *
@@ -456,7 +414,7 @@ svn_branch_txn_get_branch_by_id(const sv
SVN_ITER_T(svn_branch_state_t) *bi;
svn_branch_state_t *branch = NULL;
- for (SVN_ARRAY_ITER(bi, txn->branches, scratch_pool))
+ for (SVN_ARRAY_ITER(bi, txn->priv->branches, scratch_pool))
{
svn_branch_state_t *b = bi->val;
@@ -469,6 +427,10 @@ svn_branch_txn_get_branch_by_id(const sv
return branch;
}
+/*
+ * ========================================================================
+ */
+
static void
branch_validate_element(const svn_branch_state_t *branch,
int eid,
@@ -484,11 +446,11 @@ assert_branch_state_invariants(const svn
assert(branch->bid);
assert(branch->txn);
- assert(branch->element_tree);
- assert(branch->element_tree->e_map);
+ assert(branch->priv->element_tree);
+ assert(branch->priv->element_tree->e_map);
/* Validate elements in the map */
- for (hi = apr_hash_first(scratch_pool, branch->element_tree->e_map);
+ for (hi = apr_hash_first(scratch_pool, branch->priv->element_tree->e_map);
hi; hi = apr_hash_next(hi))
{
branch_validate_element(branch, svn_int_hash_this_key(hi),
@@ -496,7 +458,7 @@ assert_branch_state_invariants(const svn
}
}
-/* An #svn_editor3_t method. */
+/* An #svn_branch_state_t method. */
static svn_error_t *
branch_state_copy_one(svn_branch_state_t *branch,
const svn_branch_rev_bid_eid_t *src_el_rev,
@@ -557,7 +519,7 @@ copy_subtree(const svn_branch_el_rev_id_
return SVN_NO_ERROR;
}
-/* An #svn_editor3_t method. */
+/* An #svn_branch_state_t method. */
static svn_error_t *
branch_state_copy_tree(svn_branch_state_t *to_branch,
const svn_branch_rev_bid_eid_t *src_el_rev,
@@ -582,6 +544,7 @@ branch_state_copy_tree(svn_branch_state_
return SVN_NO_ERROR;
}
+/* An #svn_branch_state_t method. */
static svn_error_t *
branch_state_payload_resolve(svn_branch_state_t *branch,
svn_element_content_t *element,
@@ -600,7 +563,7 @@ svn_branch_get_id(svn_branch_state_t *br
int
svn_branch_root_eid(const svn_branch_state_t *branch)
{
- return branch->element_tree->root_eid;
+ return branch->priv->element_tree->root_eid;
}
svn_branch_el_rev_id_t *
@@ -681,7 +644,7 @@ svn_branch_rev_bid_dup(const svn_branch_
const svn_element_tree_t *
svn_branch_get_element_tree(svn_branch_state_t *branch)
{
- return branch->element_tree;
+ return branch->priv->element_tree;
}
/* Validate that ELEMENT is suitable for a mapping of BRANCH:EID.
@@ -718,7 +681,7 @@ branch_validate_element(const svn_branch
apr_hash_t *
svn_branch_get_elements(svn_branch_state_t *branch)
{
- return branch->element_tree->e_map;
+ return branch->priv->element_tree->e_map;
}
svn_element_content_t *
@@ -727,7 +690,7 @@ svn_branch_get_element(const svn_branch_
{
svn_element_content_t *element;
- element = svn_element_tree_get(branch->element_tree, eid);
+ element = svn_element_tree_get(branch->priv->element_tree, eid);
if (element)
branch_validate_element(branch, eid, element);
@@ -745,16 +708,17 @@ branch_map_set(svn_branch_state_t *branc
int eid,
svn_element_content_t *element)
{
- apr_pool_t *map_pool = apr_hash_pool_get(branch->element_tree->e_map);
+ apr_pool_t *map_pool = apr_hash_pool_get(branch->priv->element_tree->e_map);
SVN_ERR_ASSERT_NO_RETURN(EID_IS_ALLOCATED(branch, eid));
if (element)
branch_validate_element(branch, eid, element);
- svn_element_tree_set(branch->element_tree, eid, element);
+ svn_element_tree_set(branch->priv->element_tree, eid, element);
assert_branch_state_invariants(branch, map_pool);
}
+/* An #svn_branch_state_t method. */
static svn_error_t *
branch_state_delete_one(svn_branch_state_t *branch,
svn_branch_eid_t eid,
@@ -770,6 +734,7 @@ branch_state_delete_one(svn_branch_state
return SVN_NO_ERROR;
}
+/* An #svn_branch_state_t method. */
static svn_error_t *
branch_state_alter(svn_branch_state_t *branch,
svn_branch_eid_t eid,
@@ -778,7 +743,7 @@ branch_state_alter(svn_branch_state_t *b
const svn_element_payload_t *new_payload,
apr_pool_t *scratch_pool)
{
- apr_pool_t *map_pool = apr_hash_pool_get(branch->element_tree->e_map);
+ apr_pool_t *map_pool = apr_hash_pool_get(branch->priv->element_tree->e_map);
svn_element_content_t *element
= svn_element_content_create(new_parent_eid, new_name, new_payload,
map_pool);
@@ -803,7 +768,7 @@ svn_branch_get_element_tree_at_eid(svn_b
SVN_BRANCH_SEQUENCE_POINT(branch);
- new_subtree = svn_element_tree_create(branch->element_tree->e_map, eid,
+ new_subtree = svn_element_tree_create(branch->priv->element_tree->e_map, eid,
result_pool);
/* Purge orphans */
@@ -820,12 +785,14 @@ svn_branch_get_element_tree_at_eid(svn_b
return new_subtree;
}
+/* An #svn_branch_state_t method. */
static svn_error_t *
branch_state_purge(svn_branch_state_t *branch,
apr_pool_t *scratch_pool)
{
- svn_element_tree_purge_orphans(branch->element_tree->e_map,
- branch->element_tree->root_eid, scratch_pool);
+ svn_element_tree_purge_orphans(branch->priv->element_tree->e_map,
+ branch->priv->element_tree->root_eid,
+ scratch_pool);
return SVN_NO_ERROR;
}
@@ -858,7 +825,7 @@ svn_branch_get_eid_by_path(const svn_bra
apr_hash_index_t *hi;
/* ### This is a crude, linear search */
- for (hi = apr_hash_first(scratch_pool, branch->element_tree->e_map);
+ for (hi = apr_hash_first(scratch_pool, branch->priv->element_tree->e_map);
hi; hi = apr_hash_next(hi))
{
int eid = svn_int_hash_this_key(hi);
@@ -946,7 +913,7 @@ svn_branch_instantiate_elements(svn_bran
branch_map_set(to_branch, this_eid,
svn_element_content_dup(
this_element,
- apr_hash_pool_get(to_branch->element_tree->e_map)));
+ apr_hash_pool_get(to_branch->priv->element_tree->e_map)));
}
return SVN_NO_ERROR;
@@ -964,9 +931,9 @@ svn_branch_txn_add_new_branch(svn_branch
SVN_ERR_ASSERT_NO_RETURN(root_eid != -1);
new_branch = svn_branch_state_create(bid, predecessor, root_eid, txn,
- txn->branches->pool);
+ txn->priv->branches->pool);
- SVN_ARRAY_PUSH(txn->branches) = new_branch;
+ SVN_ARRAY_PUSH(txn->priv->branches) = new_branch;
return new_branch;
}
@@ -978,15 +945,15 @@ svn_branch_txn_delete_branch(svn_branch_
{
SVN_ITER_T(svn_branch_state_t) *bi;
- for (SVN_ARRAY_ITER(bi, txn->branches, scratch_pool))
+ for (SVN_ARRAY_ITER(bi, txn->priv->branches, scratch_pool))
{
svn_branch_state_t *b = bi->val;
if (strcmp(b->bid, bid) == 0)
{
SVN_DBG(("deleting branch b%s e%d",
- bid, b->element_tree->root_eid));
- svn_sort__array_delete(txn->branches, bi->i, 1);
+ bid, b->priv->element_tree->root_eid));
+ svn_sort__array_delete(txn->priv->branches, bi->i, 1);
break;
}
}
@@ -999,61 +966,6 @@ svn_branch_txn_delete_branch(svn_branch_
* ========================================================================
*/
-/* The methods of svn_branch_state_t.
- * See the corresponding public API functions for details.
- */
-
-typedef svn_error_t *(*branch_state_v_alter_one_t)(
- svn_branch_state_t *branch,
- svn_branch_eid_t eid,
- svn_branch_eid_t new_parent_eid,
- const char *new_name,
- const svn_element_payload_t *new_payload,
- apr_pool_t *scratch_pool);
-
-typedef svn_error_t *(*branch_state_v_copy_one_t)(
- svn_branch_state_t *branch,
- const svn_branch_rev_bid_eid_t *src_el_rev,
- svn_branch_eid_t local_eid,
- svn_branch_eid_t new_parent_eid,
- const char *new_name,
- const svn_element_payload_t *new_payload,
- apr_pool_t *scratch_pool);
-
-typedef svn_error_t *(*branch_state_v_copy_tree_t)(
- svn_branch_state_t *branch,
- const svn_branch_rev_bid_eid_t *src_el_rev,
- svn_branch_eid_t new_parent_eid,
- const char *new_name,
- apr_pool_t *scratch_pool);
-
-typedef svn_error_t *(*branch_state_v_delete_one_t)(
- svn_branch_state_t *branch,
- svn_branch_eid_t eid,
- apr_pool_t *scratch_pool);
-
-typedef svn_error_t *(*branch_state_v_payload_resolve_t)(
- svn_branch_state_t *branch,
- svn_element_content_t *element,
- apr_pool_t *scratch_pool);
-
-typedef svn_error_t *(*branch_state_v_purge_t)(
- svn_branch_state_t *branch,
- apr_pool_t *scratch_pool);
-
-struct svn_branch_state_priv_t
-{
- svn_vtable_priv_t vpriv;
-
- branch_state_v_alter_one_t alter_one;
- branch_state_v_copy_one_t copy_one;
- branch_state_v_copy_tree_t copy_tree;
- branch_state_v_delete_one_t delete_one;
- branch_state_v_payload_resolve_t payload_resolve;
- branch_state_v_purge_t purge;
-
-};
-
svn_error_t *
svn_branch_state_alter_one(svn_branch_state_t *branch,
svn_branch_eid_t eid,
@@ -1146,7 +1058,7 @@ svn_branch_state_create(const char *bid,
b->bid = apr_pstrdup(result_pool, bid);
b->predecessor = svn_branch_rev_bid_dup(predecessor, result_pool);
b->txn = txn;
- b->element_tree = svn_element_tree_create(NULL, root_eid, result_pool);
+ b->priv->element_tree = svn_element_tree_create(NULL, root_eid, result_pool);
assert_branch_state_invariants(b, result_pool);
return b;
}
@@ -1364,7 +1276,7 @@ svn_branch_txn_parse(svn_branch_txn_t **
SVN_ERR(svn_branch_state_parse(&branch, txn, stream,
result_pool, scratch_pool));
- SVN_ARRAY_PUSH(txn->branches) = branch;
+ SVN_ARRAY_PUSH(txn->priv->branches) = branch;
}
*txn_p = txn;
@@ -1403,14 +1315,15 @@ svn_branch_state_serialize(svn_stream_t
SVN_ERR(svn_stream_printf(stream, scratch_pool,
"%s root-eid %d num-eids %d%s\n",
svn_branch_get_id(branch, scratch_pool),
- branch->element_tree->root_eid,
- apr_hash_count(branch->element_tree->e_map),
+ branch->priv->element_tree->root_eid,
+ apr_hash_count(branch->priv->element_tree->e_map),
predecessor_str));
- svn_element_tree_purge_orphans(branch->element_tree->e_map,
- branch->element_tree->root_eid, scratch_pool);
+ svn_element_tree_purge_orphans(branch->priv->element_tree->e_map,
+ branch->priv->element_tree->root_eid,
+ scratch_pool);
- for (SVN_HASH_ITER_SORTED(hi, branch->element_tree->e_map,
+ for (SVN_HASH_ITER_SORTED(hi, branch->priv->element_tree->e_map,
sort_compare_items_by_eid, scratch_pool))
{
int eid = *(const int *)hi->key;
@@ -1444,9 +1357,9 @@ svn_branch_txn_serialize(svn_stream_t *s
"branches %d\n",
txn->rev,
txn->first_eid, txn->next_eid,
- txn->branches->nelts));
+ txn->priv->branches->nelts));
- for (SVN_ARRAY_ITER(bi, txn->branches, scratch_pool))
+ for (SVN_ARRAY_ITER(bi, txn->priv->branches, scratch_pool))
{
svn_branch_state_t *branch = bi->val;
Added: subversion/branches/move-tracking-2/subversion/libsvn_delta/branch_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_delta/branch_private.h?rev=1709011&view=auto
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_delta/branch_private.h (added)
+++ subversion/branches/move-tracking-2/subversion/libsvn_delta/branch_private.h Fri Oct 16 14:24:30 2015
@@ -0,0 +1,166 @@
+/**
+ * @copyright
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ * @endcopyright
+ *
+ * @file branch_private.h
+ * @brief Nested branches and subbranch-root elements
+ *
+ * @since New in 1.10.
+ */
+
+#ifndef BRANCH_PRIVATE_H
+#define BRANCH_PRIVATE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Common aspects od a txn/branch 'editor' class (derived from Ev2) */
+typedef struct svn_vtable_priv_t
+{
+ /* Standard cancellation function. Called before each callback. */
+ svn_cancel_func_t cancel_func;
+ void *cancel_baton;
+
+ /* This pool is used as the scratch_pool for all callbacks. */
+ apr_pool_t *scratch_pool;
+
+#ifdef ENABLE_ORDERING_CHECK
+ svn_boolean_t within_callback;
+ svn_boolean_t finished;
+ apr_pool_t *state_pool;
+#endif
+
+} svn_vtable_priv_t;
+
+/* The methods of svn_branch_txn_t.
+ * See the corresponding public API functions for details.
+ */
+
+typedef svn_error_t *(*branch_txn_v_new_eid_t)(
+ svn_branch_txn_t *txn,
+ svn_branch_eid_t *eid_p,
+ apr_pool_t *scratch_pool);
+
+typedef svn_error_t *(*branch_txn_v_open_branch_t)(
+ svn_branch_txn_t *txn,
+ const char **new_branch_id_p,
+ svn_branch_rev_bid_t *predecessor,
+ const char *outer_branch_id,
+ int outer_eid,
+ int root_eid,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+typedef svn_error_t *(*branch_txn_v_branch_t)(
+ svn_branch_txn_t *txn,
+ const char **new_branch_id_p,
+ svn_branch_rev_bid_eid_t *from,
+ const char *outer_branch_id,
+ int outer_eid,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+typedef svn_error_t *(*branch_txn_v_sequence_point_t)(
+ svn_branch_txn_t *txn,
+ apr_pool_t *scratch_pool);
+
+struct svn_branch_txn_priv_t
+{
+ svn_vtable_priv_t vpriv;
+
+ /* Methods. */
+ branch_txn_v_new_eid_t new_eid;
+ branch_txn_v_open_branch_t open_branch;
+ branch_txn_v_branch_t branch;
+ branch_txn_v_sequence_point_t sequence_point;
+
+ /* All branches. */
+ apr_array_header_t *branches;
+
+};
+
+/* The methods of svn_branch_state_t.
+ * See the corresponding public API functions for details.
+ */
+
+typedef svn_error_t *(*branch_state_v_alter_one_t)(
+ svn_branch_state_t *branch,
+ svn_branch_eid_t eid,
+ svn_branch_eid_t new_parent_eid,
+ const char *new_name,
+ const svn_element_payload_t *new_payload,
+ apr_pool_t *scratch_pool);
+
+typedef svn_error_t *(*branch_state_v_copy_one_t)(
+ svn_branch_state_t *branch,
+ const svn_branch_rev_bid_eid_t *src_el_rev,
+ svn_branch_eid_t local_eid,
+ svn_branch_eid_t new_parent_eid,
+ const char *new_name,
+ const svn_element_payload_t *new_payload,
+ apr_pool_t *scratch_pool);
+
+typedef svn_error_t *(*branch_state_v_copy_tree_t)(
+ svn_branch_state_t *branch,
+ const svn_branch_rev_bid_eid_t *src_el_rev,
+ svn_branch_eid_t new_parent_eid,
+ const char *new_name,
+ apr_pool_t *scratch_pool);
+
+typedef svn_error_t *(*branch_state_v_delete_one_t)(
+ svn_branch_state_t *branch,
+ svn_branch_eid_t eid,
+ apr_pool_t *scratch_pool);
+
+typedef svn_error_t *(*branch_state_v_payload_resolve_t)(
+ svn_branch_state_t *branch,
+ svn_element_content_t *element,
+ apr_pool_t *scratch_pool);
+
+typedef svn_error_t *(*branch_state_v_purge_t)(
+ svn_branch_state_t *branch,
+ apr_pool_t *scratch_pool);
+
+struct svn_branch_state_priv_t
+{
+ svn_vtable_priv_t vpriv;
+
+ branch_state_v_alter_one_t alter_one;
+ branch_state_v_copy_one_t copy_one;
+ branch_state_v_copy_tree_t copy_tree;
+ branch_state_v_delete_one_t delete_one;
+ branch_state_v_payload_resolve_t payload_resolve;
+ branch_state_v_purge_t purge;
+
+ /* EID -> svn_branch_el_rev_content_t mapping. */
+ svn_element_tree_t *element_tree;
+
+};
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* BRANCH_PRIVATE_H */
+
Propchange: subversion/branches/move-tracking-2/subversion/libsvn_delta/branch_private.h
------------------------------------------------------------------------------
svn:eol-style = native