/* * ==================================================================== * 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. * ==================================================================== * * svn_wc.i: SWIG interface file for svn_wc.h */ %include svn_global.swg #if defined(SWIGPYTHON) %module(package="libsvn", moduleimport=SVN_PYTHON_MODULEIMPORT) wc #elif defined(SWIGPERL) %module "SVN::_Wc" #elif defined(SWIGRUBY) %module "svn::ext::wc" #endif %import core.i %import svn_delta.i %import svn_ra.i /* ----------------------------------------------------------------------- ### these functions require a pool, which we don't have immediately ### handy. just eliminate these funcs for now. */ %ignore svn_wc_set_auth_file; /* ### ignore these structures because the accessors will need a pool */ %ignore svn_wc_keywords_t; %ignore svn_wc_conflict_description2_t; %ignore svn_wc_conflict_result_t; #ifdef SWIGRUBY %ignore svn_wc_external_item_create; %ignore svn_wc_external_item2_create; %ignore svn_wc_external_item_dup; %ignore svn_wc_external_item2_dup; %ignore svn_wc_revision_status; %ignore svn_wc_committed_queue_create; %ignore svn_wc_init_traversal_info; %ignore svn_wc_entry; %ignore svn_wc_notify; #endif /* ----------------------------------------------------------------------- %apply-ing of typemaps defined elsewhere */ /* svn_wc_get_prop_diffs() */ %apply apr_array_header_t **OUTPUT_OF_PROP { apr_array_header_t **propchanges }; %apply apr_hash_t *PROPHASH { apr_hash_t *baseprops, apr_hash_t *new_base_props, apr_hash_t *new_props }; /* svn_wc_queue_committed() svn_wc_process_committed4() svn_wc_process_committed3() svn_wc_process_committed2() svn_wc_process_committed() */ #ifdef SWIGPYTHON %typemap(in) apr_array_header_t *wcprop_changes (apr_pool_t *_global_pool = NULL, PyObject *_global_py_pool = NULL) { if (_global_pool == NULL) { if (svn_swig_py_get_parent_pool(args, $descriptor(apr_pool_t *), &_global_py_pool, &_global_pool)) SWIG_fail; } $1 = svn_swig_py_proparray_from_dict($input, _global_pool); if (PyErr_Occurred()) { SWIG_fail; } } #endif /* svn_wc_match_ignore_list() */ %apply const apr_array_header_t *STRINGLIST { apr_array_header_t *list } #ifdef SWIGRUBY %apply const apr_array_header_t *STRINGLIST_MAY_BE_NULL { apr_array_header_t *changelists } #else %apply const apr_array_header_t *STRINGLIST { apr_array_header_t *changelists } #endif /* svn_wc_cleanup2() */ %apply const char *MAY_BE_NULL { const char *diff3_cmd, const char *uuid, const char *repos, const char *new_text_path, const char *copyfrom_url, const char *rev_date, const char *rev_author, const char *trail_url } %hash_argout_typemap(entries, svn_wc_entry_t *) %hash_argout_typemap(externals_p, svn_wc_external_item_t *) #ifdef SWIGPYTHON %callback_typemap(svn_wc_notify_func_t notify_func, void *notify_baton, svn_swig_py_notify_func, , ) #endif #ifndef SWIGPERL %callback_typemap(svn_wc_notify_func2_t notify_func, void *notify_baton, svn_swig_py_notify_func2, , svn_swig_rb_notify_func2) #endif #ifdef SWIGRUBY %callback_typemap(const svn_wc_entry_callbacks2_t *walk_callbacks, void *walk_baton, , , svn_swig_rb_wc_entry_callbacks2()) #endif #ifndef SWIGRUBY %callback_typemap(svn_wc_status_func_t status_func, void *status_baton, svn_swig_py_status_func, svn_swig_pl_status_func, ) #endif %callback_typemap(svn_wc_status_func2_t status_func, void *status_baton, svn_swig_py_status_func2, svn_swig_pl_status_func2, svn_swig_rb_wc_status_func) #ifdef SWIGPERL %callback_typemap(svn_wc_status_func3_t status_func, void *status_baton, , svn_swig_pl_status_func3, ) #endif #ifndef SWIGPERL %callback_typemap(const svn_wc_diff_callbacks2_t *callbacks, void *callback_baton, svn_swig_py_setup_wc_diff_callbacks2(&$2, $input, _global_pool), , svn_swig_rb_wc_diff_callbacks2()) #endif #ifdef SWIGRUBY %callback_typemap(svn_wc_relocation_validator3_t validator, void *validator_baton, , , svn_swig_rb_wc_relocation_validator3) #endif #ifdef SWIGRUBY %apply const char *NOT_NULL { const char *changelist, const char *matching_changelist }; #endif /* svn_wc_translated2() */ #ifdef SWIGRUBY %apply const char **TO_TEMP_FILE { const char **xlated_path }; #endif /* svn_wc_queue_committed() */ #ifdef SWIGRUBY %typemap(in) svn_wc_committed_queue_t **queue (void *tempp=NULL) { SWIG_ConvertPtr($input, &tempp, $*1_descriptor, 0); $1 = ($1_ltype)&tempp; }; %typemap(argout) svn_wc_committed_queue_t **queue { %append_output(argv[0]); }; #endif /* svn_wc_get_update_editor3() svn_wc_get_switch_editor3() */ #ifdef SWIGRUBY %typemap(in) svn_revnum_t *target_revision { $1 = apr_palloc(_global_pool, sizeof(svn_revnum_t)); if (NIL_P($input)) { *$1 = SVN_INVALID_REVNUM; } else { *$1 = NUM2LONG($input); } } %typemap(argout) svn_revnum_t *target_revision { %append_output(LONG2NUM((long)$1)); } #endif /* svn_wc_notify_t */ #ifdef SWIGRUBY %typemap(out) svn_error_t *err { $result = $1 ? svn_swig_rb_svn_error_to_rb_error($1) : Qnil; } #endif /* ----------------------------------------------------------------------- */ %{ #include #include "svn_md5.h" %} %include svn_wc_h.swg %inline %{ static svn_error_t * svn_wc_swig_init_asp_dot_net_hack (apr_pool_t *pool) { #if defined(WIN32) || defined(__CYGWIN__) if (getenv ("SVN_ASP_DOT_NET_HACK")) SVN_ERR (svn_wc_set_adm_dir("_svn", pool)); #endif /* WIN32 */ return SVN_NO_ERROR; } %} #if defined(SWIGPYTHON) %pythoncode %{ svn_wc_swig_init_asp_dot_net_hack() %} #endif #ifdef SWIGRUBY %extend svn_wc_external_item2_t { svn_wc_external_item2_t(apr_pool_t *pool) { svn_error_t *err; svn_wc_external_item2_t *self; err = svn_wc_external_item2_create(&self, pool); if (err) svn_swig_rb_handle_svn_error(err); return self; }; ~svn_wc_external_item2_t() { }; svn_wc_external_item2_t *dup(apr_pool_t *pool) { return svn_wc_external_item2_dup(self, pool); }; } %extend svn_wc_revision_status_t { svn_wc_revision_status_t(const char *wc_path, const char *trail_url, svn_boolean_t committed, svn_cancel_func_t cancel_func, void *cancel_baton, apr_pool_t *pool) { svn_error_t *err; svn_wc_revision_status_t *self; err = svn_wc_revision_status(&self, wc_path, trail_url, committed, cancel_func, cancel_baton, pool); if (err) svn_swig_rb_handle_svn_error(err); return self; }; ~svn_wc_revision_status_t() { }; } /* Dummy declaration */ struct svn_wc_committed_queue_t { }; %extend svn_wc_committed_queue_t { svn_wc_committed_queue_t(apr_pool_t *pool) { return svn_wc_committed_queue_create(pool); }; ~svn_wc_committed_queue_t() { }; } /* Dummy declaration */ struct svn_wc_traversal_info_t { }; %extend svn_wc_traversal_info_t { svn_wc_traversal_info_t(apr_pool_t *pool) { return svn_wc_init_traversal_info(pool); }; ~svn_wc_traversal_info_t() { }; } %extend svn_wc_entry_t { svn_wc_entry_t(const char *path, svn_wc_adm_access_t *adm_access, svn_boolean_t show_hidden, apr_pool_t *pool) { const svn_wc_entry_t *self; svn_wc_entry(&self, path, adm_access, show_hidden, pool); return (svn_wc_entry_t *)self; }; ~svn_wc_entry_t() { }; } %extend svn_wc_notify_t { svn_wc_notify_t(const char *path, svn_wc_notify_action_t action, apr_pool_t *pool) { return svn_wc_create_notify(path, action, pool); }; ~svn_wc_notify_t() { }; } #endif