/** * @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 svn_branch_impl.h * @brief Declarations needed by implementators of branch classes * * @since New in ???. */ #ifndef SVN_BRANCH_IMPL_H #define SVN_BRANCH_IMPL_H #include "private/svn_branch.h" #ifdef __cplusplus extern "C" { #endif /* Common aspects od a txn/branch 'editor' class (derived from Ev2) */ typedef struct svn_branch__vtable_priv_t { /* Standard cancellation function. Called before each callback. */ svn_cancel_func_t cancel_func; void *cancel_baton; #ifdef ENABLE_ORDERING_CHECK svn_boolean_t within_callback; svn_boolean_t finished; apr_pool_t *state_pool; #endif } svn_branch__vtable_priv_t; /* The methods of svn_branch__txn_t. * See the corresponding public API functions for details. */ typedef apr_array_header_t *(*svn_branch__txn_v_get_branches_t)( const svn_branch__txn_t *txn, apr_pool_t *result_pool); typedef svn_error_t *(*svn_branch__txn_v_delete_branch_t)( svn_branch__txn_t *txn, const char *bid, apr_pool_t *scratch_pool); typedef svn_error_t *(*svn_branch__txn_v_get_num_new_eids_t)( const svn_branch__txn_t *txn, int *num_new_eids_p, apr_pool_t *scratch_pool); typedef svn_error_t *(*svn_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 *(*svn_branch__txn_v_open_branch_t)( svn_branch__txn_t *txn, svn_branch__state_t **new_branch_p, const char *new_branch_id, int root_eid, svn_branch__rev_bid_eid_t *from, apr_pool_t *result_pool, apr_pool_t *scratch_pool); typedef svn_error_t *(*svn_branch__txn_v_finalize_eids_t)( svn_branch__txn_t *txn, apr_pool_t *scratch_pool); typedef svn_error_t *(*svn_branch__txn_v_serialize_t)( svn_branch__txn_t *txn, svn_stream_t *stream, apr_pool_t *scratch_pool); typedef svn_error_t *(*svn_branch__txn_v_sequence_point_t)( svn_branch__txn_t *txn, apr_pool_t *scratch_pool); typedef svn_error_t *(*svn_branch__txn_v_complete_t)( svn_branch__txn_t *txn, apr_pool_t *scratch_pool); typedef svn_error_t *(*svn_branch__txn_v_abort_t)( svn_branch__txn_t *txn, apr_pool_t *scratch_pool); struct svn_branch__txn_vtable_t { svn_branch__vtable_priv_t vpriv; /* Methods. */ svn_branch__txn_v_get_branches_t get_branches; svn_branch__txn_v_delete_branch_t delete_branch; svn_branch__txn_v_get_num_new_eids_t get_num_new_eids; svn_branch__txn_v_new_eid_t new_eid; svn_branch__txn_v_open_branch_t open_branch; svn_branch__txn_v_finalize_eids_t finalize_eids; svn_branch__txn_v_serialize_t serialize; svn_branch__txn_v_sequence_point_t sequence_point; svn_branch__txn_v_complete_t complete; svn_branch__txn_v_complete_t abort; }; /* The methods of svn_branch__state_t. * See the corresponding public API functions for details. */ typedef svn_error_t *(*svn_branch__state_v_get_elements_t)( const svn_branch__state_t *branch, svn_element__tree_t **element_tree_p, apr_pool_t *result_pool); typedef svn_error_t *(*svn_branch__state_v_get_element_t)( const svn_branch__state_t *branch, svn_element__content_t **element_p, int eid, apr_pool_t *result_pool); typedef svn_error_t *(*svn_branch__state_v_set_element_t)( svn_branch__state_t *branch, svn_branch__eid_t eid, const svn_element__content_t *element, apr_pool_t *scratch_pool); typedef svn_error_t *(*svn_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 *(*svn_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 *(*svn_branch__state_v_purge_t)( svn_branch__state_t *branch, apr_pool_t *scratch_pool); typedef svn_error_t *(*svn_branch__state_v_get_history_t)( svn_branch__state_t *branch, svn_branch__history_t **history_p, apr_pool_t *scratch_pool); typedef svn_error_t *(*svn_branch__state_v_set_history_t)( svn_branch__state_t *branch, const svn_branch__history_t *history, apr_pool_t *scratch_pool); struct svn_branch__state_vtable_t { svn_branch__vtable_priv_t vpriv; svn_branch__state_v_get_elements_t get_elements; svn_branch__state_v_get_element_t get_element; svn_branch__state_v_set_element_t set_element; svn_branch__state_v_copy_one_t copy_one; svn_branch__state_v_copy_tree_t copy_tree; svn_branch__state_v_purge_t purge; svn_branch__state_v_get_history_t get_history; svn_branch__state_v_set_history_t set_history; }; #ifdef __cplusplus } #endif #endif /* SVN_BRANCH_IMPL_H */