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