summaryrefslogtreecommitdiffstats
path: root/bindings
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2012-05-05 22:32:48 +0200
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2012-05-05 22:32:48 +0200
commitc7cf89b387cbc52d7d49d09b65a13af6bd0c47c2 (patch)
treeeb5e09723323e3480050c68a5ffdfe114f086ca6 /bindings
parentd3c702e130ab654fd47081c1460f2f8527d10bc8 (diff)
parentf3409ece4dab64da843f118f2739481c1bff2613 (diff)
downloadlasso-c7cf89b387cbc52d7d49d09b65a13af6bd0c47c2.tar.gz
lasso-c7cf89b387cbc52d7d49d09b65a13af6bd0c47c2.tar.xz
lasso-c7cf89b387cbc52d7d49d09b65a13af6bd0c47c2.zip
Merge branch 'release-2.4.0'
Diffstat (limited to 'bindings')
-rw-r--r--bindings/php5/php_code.py51
1 files changed, 36 insertions, 15 deletions
diff --git a/bindings/php5/php_code.py b/bindings/php5/php_code.py
index 0eab9c19..091ae982 100644
--- a/bindings/php5/php_code.py
+++ b/bindings/php5/php_code.py
@@ -136,6 +136,7 @@ function lassoRegisterIdWsf2DstService($prefix, $href) {
def generate_constructors(self, klass):
method_prefix = format_as_underscored(klass.name) + '_'
for m in self.binding_data.functions:
+ name = m.rename or m.name
if m.name == method_prefix + 'new':
php_args = []
c_args = []
@@ -163,18 +164,36 @@ function lassoRegisterIdWsf2DstService($prefix, $href) {
print >> self.fd, ' }'
print >> self.fd, ''
- if m.name == method_prefix + 'new_from_dump':
- if len(m.args) == 1:
- print >> self.fd, ' public static function newFromDump($dump) {'
- print >> self.fd, ' return cptrToPhp(%s($dump));' % m.name
+ elif name.startswith(method_prefix) and m.args \
+ and clean_type(unconstify(m.args[0][0])) != klass.name:
+ if m.rename:
+ php_name = m.rename
else:
- print >> self.fd, ' public static function newFromDump($server, $dump) {'
- print >> self.fd, ' return cptrToPhp(%s($server->_cptr, $dump));' % m.name
- # XXX: Else throw an exception
- print >> self.fd, ' }'
- print >> self.fd, ''
- elif m.name == method_prefix + 'new_full':
- pass
+ mname = m.name
+ mname = mname[len(method_prefix):]
+ if 'new' in mname and not mname.startswith('new'):
+ continue
+ php_name = format_underscore_as_camelcase(mname)
+ php_args = []
+ c_args = []
+ for arg in m.args:
+ arg_type, arg_name, arg_options = arg
+ if arg_options.get('optional'):
+ php_args.append('$%s = null' % arg_name)
+ else:
+ php_args.append('$%s' % arg_name)
+
+ if self.is_object(arg_type):
+ c_args.append('$%s->_cptr' % arg_name)
+ else:
+ c_args.append('$%s' % arg_name)
+ php_args = ', '.join(php_args)
+ c_args = ', '.join(c_args)
+ print >>self.fd, ' public static function %s(%s) {' % (php_name, php_args)
+ print >>self.fd, ' return cptrToPhp(%s(%s));' % (m.name, c_args)
+ print >>self.fd, ' }'
+ print >>self.fd, ''
+
def generate_getter(self, c, m):
@@ -312,12 +331,14 @@ function lassoRegisterIdWsf2DstService($prefix, $href) {
php_args.append('%s = null' % arg_name)
else:
php_args.append(arg_name)
- if arg_type in ('char*', 'const char*', 'gchar*', 'const gchar*') or \
- arg_type in ['int', 'gint', 'gboolean', 'const gboolean'] or \
- arg_type in self.binding_data.enums:
+ if is_xml_node(arg) or is_boolean(arg) or is_cstring(arg) or \
+ is_int(arg, self.binding_data) or is_glist(arg) or \
+ is_hashtable(arg) or is_time_t_pointer(arg):
c_args.append(arg_name)
+ elif is_object(arg):
+ c_args.append('%s->_cptr' % arg_name)
else:
- c_args.append('%s._cptr' % arg_name)
+ raise Exception('Does not handle argument of type: %s' % ((m, arg),))
if is_out(arg):
php_args.pop()
php_args.append(arg_name)