diff options
author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2012-05-05 22:32:48 +0200 |
---|---|---|
committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2012-05-05 22:32:48 +0200 |
commit | c7cf89b387cbc52d7d49d09b65a13af6bd0c47c2 (patch) | |
tree | eb5e09723323e3480050c68a5ffdfe114f086ca6 /bindings | |
parent | d3c702e130ab654fd47081c1460f2f8527d10bc8 (diff) | |
parent | f3409ece4dab64da843f118f2739481c1bff2613 (diff) | |
download | lasso-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.py | 51 |
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) |