summaryrefslogtreecommitdiffstats
path: root/bindings
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2009-03-27 15:04:48 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2009-03-27 15:04:48 +0000
commit3705a0f86d6588ffb48285892d19c6bb89b62c68 (patch)
treeba77cef255009fa6200f5a01d3b92a76aa677663 /bindings
parent46643326fd53a265d47947280b6799946af7c9d1 (diff)
downloadlasso-3705a0f86d6588ffb48285892d19c6bb89b62c68.tar.gz
lasso-3705a0f86d6588ffb48285892d19c6bb89b62c68.tar.xz
lasso-3705a0f86d6588ffb48285892d19c6bb89b62c68.zip
Bindings php5: add support for xmlNode arguments
* bindings/php5/php_code.py: * bindings/php5/wrapper_source.py: complete error reporting about on documentation treatment. treat xmlNode* arguments (convert string to xmlNode, give as argument, then frees it).
Diffstat (limited to 'bindings')
-rw-r--r--bindings/php5/php_code.py2
-rw-r--r--bindings/php5/wrapper_source.py16
2 files changed, 15 insertions, 3 deletions
diff --git a/bindings/php5/php_code.py b/bindings/php5/php_code.py
index bce43ca1..76bae23d 100644
--- a/bindings/php5/php_code.py
+++ b/bindings/php5/php_code.py
@@ -365,7 +365,7 @@ function lassoRegisterIdWsf2DstService($prefix, $href) {
elif type == '%': # %TRUE, %FALSE
if var in ('TRUE', 'FALSE'):
return var
- print >> sys.stderr, 'W: unknown docstring thingie: %s' % s.group(1)
+ print >> sys.stderr, 'W: unknown docstring thingie \'%s\' in \'%s\'' % (s.group(1), func.docstring.orig_docstring)
elif type == '@':
if var == first_arg_name:
return '$this'
diff --git a/bindings/php5/wrapper_source.py b/bindings/php5/wrapper_source.py
index 27ee7f48..690c4adb 100644
--- a/bindings/php5/wrapper_source.py
+++ b/bindings/php5/wrapper_source.py
@@ -197,6 +197,12 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
parse_tuple_format.append('l')
parse_tuple_args.append('&%s' % arg_name)
print >> self.fd, ' %s %s;' % ('long', arg_name)
+ elif arg_type == 'xmlNode*':
+ parse_tuple_format.append('s!')
+ parse_tuple_args.append('&%s_str, &%s_len' % (arg_name, arg_name))
+ print >> self.fd, ' %s %s = NULL;' % ('xmlNode*', arg_name)
+ print >> self.fd, ' %s %s_str = NULL;' % ('char*', arg_name)
+ print >> self.fd, ' %s %s_len = 0;' % ('int', arg_name)
elif arg_type == 'GList*':
parse_tuple_format.append('a!')
parse_tuple_args.append('&zval_%s' % arg_name)
@@ -226,7 +232,10 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
''' % (''.join(parse_tuple_format), parse_tuple_args)
for f, arg in zip(parse_tuple_format, m.args):
- if f.startswith('s'):
+ if arg[0] == 'xmlNode*':
+ print >> self.fd, '''\
+ %(name)s = get_xml_node_from_string(%(name)s_str);''' % {'name': arg[1]}
+ elif f.startswith('s'):
print >> self.fd, '''\
%(name)s = %(name)s_str;''' % {'name': arg[1]}
elif f.startswith('r'):
@@ -254,7 +263,10 @@ PHP_MSHUTDOWN_FUNCTION(lasso)
# Free the converted arguments
for f, arg in zip(parse_tuple_format, m.args):
- if f.startswith('a'):
+ argtype, argname, argoptions = arg
+ if argtype == 'xmlNode*':
+ print >> self.fd, ' xmlFree(%s);' % argname
+ elif f.startswith('a'):
elem_type = arg[2].get('elem_type')
if elem_type == 'char*':
print >> self.fd, ' if (%(name)s) {' % { 'name': arg[1] }