blob: 2efe84705fea8bdc9480114256088424548319d5 [file] [log] [blame]
/*
* ====================================================================
* 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
*/
#if defined(SWIGPYTHON)
%module(package="libsvn") wc
#elif defined(SWIGPERL)
%module "SVN::_Wc"
#elif defined(SWIGRUBY)
%module "svn::ext::wc"
#endif
%include svn_global.swg
%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 <apr_md5.h>
#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