Author: rschupp
Date: Mon May 6 12:16:21 2013
New Revision: 1479540
URL: http://svn.apache.org/r1479540
Log:
Add an in typemap for PROPHASH to the Perl bindings.
* subversion/bindings/swig/include/svn_containers.swg:
Add the typemap.
* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c,
subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h:
Add the corresponding conversion function svn_swig_pl_hash_to_prophash()
and the single-item conversion helper convert_pl_svn_string_t().
Modified:
subversion/trunk/subversion/bindings/swig/include/svn_containers.swg
subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
Modified: subversion/trunk/subversion/bindings/swig/include/svn_containers.swg
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/include/svn_containers.swg?rev=1479540&r1=1479539&r2=1479540&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/include/svn_containers.swg
(original)
+++ subversion/trunk/subversion/bindings/swig/include/svn_containers.swg Mon
May 6 12:16:21 2013
@@ -266,6 +266,13 @@
#endif
#ifdef SWIGPERL
+%typemap(in) apr_hash_t *PROPHASH
+ (apr_pool_t *_global_pool = NULL)
+{
+ if (_global_pool == NULL)
+ _global_pool = svn_swig_pl_make_pool((SV *)NULL);
+ $1 = svn_swig_pl_hash_to_prophash($input, _global_pool);
+}
%typemap(out) apr_hash_t *PROPHASH
{
%append_output(svn_swig_pl_prophash_to_hash($1));
Modified:
subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c?rev=1479540&r1=1479539&r2=1479540&view=diff
==============================================================================
---
subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
(original)
+++
subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
Mon May 6 12:16:21 2013
@@ -98,6 +98,14 @@ static void *convert_pl_revnum_t(SV *val
return (void *)result;
}
+static void *convert_pl_svn_string_t(SV *value, void *dummy, apr_pool_t *pool)
+{
+ svn_string_t *result = apr_palloc(pool, sizeof(svn_string_t));
+ /* just the in typemap for svn_string_t */
+ result->data = SvPV(value, result->len);
+ return (void *)result;
+}
+
/* perl -> c hash convertors */
static apr_hash_t *svn_swig_pl_to_hash(SV *source,
pl_element_converter_t cv,
@@ -156,6 +164,11 @@ apr_hash_t *svn_swig_pl_objs_to_hash_of_
NULL, pool);
}
+apr_hash_t *svn_swig_pl_hash_to_prophash(SV *source, apr_pool_t *pool)
+{
+ return svn_swig_pl_to_hash(source, convert_pl_svn_string_t, NULL, pool);
+}
+
/* perl -> c array convertors */
static const
apr_array_header_t *svn_swig_pl_to_array(SV *source,
Modified:
subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h?rev=1479540&r1=1479539&r2=1479540&view=diff
==============================================================================
---
subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
(original)
+++
subversion/trunk/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
Mon May 6 12:16:21 2013
@@ -93,6 +93,7 @@ apr_hash_t *svn_swig_pl_objs_to_hash_by_
apr_pool_t *pool);
apr_hash_t *svn_swig_pl_objs_to_hash_of_revnum_t(SV *source,
apr_pool_t *pool);
+apr_hash_t *svn_swig_pl_hash_to_prophash(SV *source, apr_pool_t *pool);
const apr_array_header_t *svn_swig_pl_objs_to_array(SV *source,
swig_type_info *tinfo,
apr_pool_t *pool);