On 14.03.2018 04:24, Troy Curtis Jr wrote:
> On Tue, Mar 13, 2018 at 9:44 AM Julian Foad <julianf...@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

Reply via email to