[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Updating swig-py bindings

From: Branko Čibej <brane_at_apache.org>
Date: Wed, 14 Mar 2018 12:19:26 +0100

On 14.03.2018 04:24, Troy Curtis Jr wrote:
> On Tue, Mar 13, 2018 at 9:44 AM Julian Foad <julianfoad_at_apache.org> wrote:
>
>> Troy (or others), I want to use swig-py bindings for my new shelving API
>> (in svn_client.h) so I am trying to update them. I started by looking at
>> the 'Missing argout typemap' warnings for svn_client.h.
>>
>> As well as svn_shelf_* functions, also the svn_client_conflict_* set of
>> functions currently lack bindings so I thought I might as well try to do
>> those at the same time.
>>
>> First some easy bits:
>>
>> [[[
>> Index: subversion/bindings/swig/include/svn_containers.swg
>> ===================================================================
>> --- subversion/bindings/swig/include/svn_containers.swg (revision 1826621)
>> +++ subversion/bindings/swig/include/svn_containers.swg (working copy)
>> @@ -527,7 +527,10 @@
>> apr_array_header_t **logfiles,
>> apr_array_header_t **names_p,
>> apr_array_header_t **targets_p,
>> - apr_array_header_t **args_p
>> + apr_array_header_t **args_p,
>> + apr_array_header_t **possible_moved_to_repos_relpaths,
>> + apr_array_header_t **possible_moved_to_abspaths,
>> + apr_array_header_t **props_conflicted
>> };
>>
>> /*
>> -----------------------------------------------------------------------
>> Index: subversion/bindings/swig/include/svn_types.swg
>> ===================================================================
>> --- subversion/bindings/swig/include/svn_types.swg (revision 1826621)
>> +++ subversion/bindings/swig/include/svn_types.swg (working copy)
>> @@ -119,6 +119,11 @@
>> svn_client_commit_info_t **,
>> svn_client_ctx_t **,
>> const svn_client_commit_item3_t **,
>> + svn_client_conflict_t **,
>> + svn_client_conflict_option_t **,
>> + svn_client_shelf_t **,
>> + svn_client_shelf_version_t **,
>> + svn_client_shelf_info_t **,
>> /* svn_delta */
>> const svn_delta_editor_t **,
>> svn_txdelta_stream_t **,
>> ]]]
>>
>> Now the harder ones.
>>
>> subversion/include/svn_client.h:4793: Warning 900: FIXME: Missing argout
>> typemap
>> subversion/include/svn_client.h:4806: Warning 900: FIXME: Missing argout
>> typemap
>> subversion/include/svn_client.h:4823: Warning 900: FIXME: Missing argout
>> typemap
>>
>> These three all look like:
>>
>> svn_client_conflict_text_get_resolution_options(
>> apr_array_header_t **options,
>>
>> an array of pointer to svn_client_conflict_option_t which is an opaque
>> object.
>>
>> I can see an "%opaque_proxy(svn_client_conflict_t);" declaration has
>> already been produced in 'proxy/svn_client_h.swg'. What more is needed?
>>
>> subversion/include/svn_client.h:7028: Warning 900: FIXME: Missing argout
>> typemap
>>
>> svn_client_shelf_get_all_versions(apr_array_header_t **versions_p,
>>
>> an array of pointer to svn_client_shelf_version_t which is a public
>> non-opaque struct.
>>
>> subversion/include/svn_client.h:7079: Warning 900: FIXME: Missing argout
>> typemap
>> subversion/include/svn_client.h:7176: Warning 900: FIXME: Missing argout
>> typemap
>> subversion/include/svn_client.h:7201: Warning 900: FIXME: Missing argout
>> typemap
>>
>> And so on.
>>
>> Any help would be appreciated!
>>
>>
> Updating the bindings for some of the newer APIs has been something I've
> been wanting to get to. I'm not proficient enough in swig-ese to just
> rattle it off the top of my head yet, but I'd be interested in helping
> out. I may actually have some time to poke at Friday depending on how life
> goes :) So if you or someone else hasn't figured it out by then I'll plan
> on taking a look.

For anyone who wants to work on updating the bindings: note that we have
a lot of language-specific stuff in there that's a consequence of Swig 1
not knowing any better back in the day. Most of those typemaps can be
made language-independent (thus reducing the size of the Swig files)
with features from Swig 2 and especially 3, which introduced built-in
constructs for handling various kinds of data structures that we're
currently mapping separately for each target language.

-- Brane
Received on 2018-03-14 12:20:32 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.