summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bindings/bindings.py29
-rw-r--r--bindings/java/Makefile.am2
-rw-r--r--bindings/lang_java.py5
-rw-r--r--bindings/lang_php5_helpers/php_code.py8
-rw-r--r--bindings/lang_python.py2
-rw-r--r--bindings/overrides.xml4
-rw-r--r--bindings/php5/Makefile.am2
7 files changed, 40 insertions, 12 deletions
diff --git a/bindings/bindings.py b/bindings/bindings.py
index da90f34d..9e95789c 100644
--- a/bindings/bindings.py
+++ b/bindings/bindings.py
@@ -33,15 +33,30 @@ import elementtree.ElementTree as ET
class BindingData:
src_dir = os.path.dirname(__file__)
- def __init__(self):
+ def __init__(self, options = None):
self.headers = []
self.constants = []
self.structs = []
self.struct_dict = {}
self.functions = []
self.enums = []
+ self.options = options
self.overrides = ET.parse(os.path.join(self.src_dir, 'overrides.xml'))
+ def match_tag_language(self,tag):
+ if self.options and self.options.language:
+ languages = tag.attrib.get('language')
+ if languages:
+ lang_list = languages.split(' ')
+ if self.options.language in lang_list:
+ return True
+ else:
+ return False
+ else:
+ return True
+ else:
+ return True
+
def display_structs(self):
for struct in self.structs:
struct.display()
@@ -158,6 +173,8 @@ class Function:
def apply_overrides(self):
for func in binding.overrides.findall('func'):
+ if not binding.match_tag_language(func):
+ continue
if func.attrib.get('name') != self.name:
continue
for param in func.findall('param'):
@@ -173,8 +190,8 @@ class Function:
arg[2]['default'] = param.attrib.get('default')
if param.attrib.get('type'):
arg[0] = param.attrib.get('type')
- if param.attrib.get('type_qualifier'):
- arg[2]['type_qualifier'] = param.attrib.get('type_qualifier')
+ if param.attrib.get('elem_type'):
+ arg[2]['elem_type'] = param.attrib.get('elem_type')
if func.attrib.get('rename'):
self.rename = func.attrib.get('rename')
if func.attrib.get('return_owner'):
@@ -186,8 +203,10 @@ class Function:
if func.attrib.get('return_type_qualifier'):
self.return_type_qualifier = func.attrib.get('return_type_qualifier')
for param in binding.overrides.findall('arg'):
+ if not binding.match_tag_language(param):
+ continue
arg_name = param.attrib.get('name')
- arg_sub = param.attrib.get('substitute')
+ arg_sub = param.attrib.get('rename')
if arg_name and arg_sub:
args = [ x for x in self.args if x[1] == arg_name]
for arg in args:
@@ -424,7 +443,7 @@ def main():
parser.print_help()
sys.exit(1)
- binding = BindingData()
+ binding = BindingData(options)
parse_headers(options.srcdir, options.idwsf)
binding.look_for_docstrings(options.srcdir, options.exception_doc)
binding.order_class_hierarchy()
diff --git a/bindings/java/Makefile.am b/bindings/java/Makefile.am
index 7c2b6e39..25b952c6 100644
--- a/bindings/java/Makefile.am
+++ b/bindings/java/Makefile.am
@@ -48,7 +48,7 @@ BUILT_SOURCES = com_entrouvert_lasso_LassoJNI.c com_entrouvert_lasso_LassoJNI.h
BINDING_OPTION=#--enable-exception-docs
-$(java_lasso_source_files) com_entrouvert_lasso_LassoJNI.c: ../lang_java_wrapper_top.c ../lang_java.py
+$(java_lasso_source_files) com_entrouvert_lasso_LassoJNI.c: ../lang_java_wrapper_top.c ../lang_java.py ../bindings.py
$(PYTHON) $(top_srcdir)/bindings/bindings.py $(BINDING_OPTION) -l java --src-dir=$(top_srcdir)/lasso/ $(EXTRA_ARGS)
cp $(srcdir)/GObject.java com/entrouvert/lasso
diff --git a/bindings/lang_java.py b/bindings/lang_java.py
index 84aa885f..64f7cd8c 100644
--- a/bindings/lang_java.py
+++ b/bindings/lang_java.py
@@ -524,6 +524,11 @@ protected static native void destroy(long cptr);
if is_string_type(arg_type):
print >> fd, ' if (%s)' % arg_name
print >> fd, ' g_free(%s);' % arg_name
+ elif arg_type == 'GList*':
+ if arg_options.get('elem_type') == 'char*':
+ print >> fd, ' free_glist(&%s, free);' % arg_name
+ else:
+ raise Exception('Freeing args of type list of \'%s\' not supported.' % arg_options.get('elem_type'))
# Return
if m.return_type:
diff --git a/bindings/lang_php5_helpers/php_code.py b/bindings/lang_php5_helpers/php_code.py
index 5c175f87..fc4a2f95 100644
--- a/bindings/lang_php5_helpers/php_code.py
+++ b/bindings/lang_php5_helpers/php_code.py
@@ -149,8 +149,12 @@ function getRequestTypeFromSoapMsg($mesg) {
print >> self.fd, ''
if m.name == method_prefix + 'new_from_dump':
- print >> self.fd, ' public static function newFromDump($dump) {'
- print >> self.fd, ' return cptrToPhp(%s($dump));' % m.name
+ if len(m.args) == 1:
+ print >> self.fd, ' public static function newFromDump($dump) {'
+ print >> self.fd, ' return cptrToPhp(%s($dump));' % m.name
+ 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, ''
diff --git a/bindings/lang_python.py b/bindings/lang_python.py
index 87d72e61..049de1fa 100644
--- a/bindings/lang_python.py
+++ b/bindings/lang_python.py
@@ -794,7 +794,7 @@ register_constants(PyObject *d)
for f, arg in zip(parse_tuple_format, m.args):
if arg[0] == 'GList*':
- qualifier = arg[2].get('type_qualifier')
+ qualifier = arg[2].get('elem_type')
if qualifier == 'char*':
print >> fd, ' set_list_of_strings(&%s, cvt_%s);' % (arg[1], arg[1])
elif qualifier == 'xmlNode*':
diff --git a/bindings/overrides.xml b/bindings/overrides.xml
index 75049e1a..cd9f6063 100644
--- a/bindings/overrides.xml
+++ b/bindings/overrides.xml
@@ -37,7 +37,7 @@
<param name="ca_cert_chain" optional="true"/>
</func>
<func name="lasso_server_get_svc_metadatas_with_id_and_type">
- <param name="svcMDIDs" type="GList*" type_qualifier="char*"/>
+ <param name="svcMDIDs" type="GList*" elem_type="char*"/>
<param name="service_type"/>
</func>
<!-- LassoProvider -->
@@ -112,7 +112,7 @@
<!-- LassoServer -->
<func name="lasso_server_get_provider" return_owner="false" />
<!-- IdWsf -->
- <arg name="abstract" substitute="abstract_"/>
+ <arg name="abstract" rename="abstract_" language="java"/>
<func name="lasso_personal_profile_service_new_full" rename="lasso_personal_profile_server_new_personal_profile_service_full"/>
<func name="lasso_authentication_init_request" skip="true"/>
diff --git a/bindings/php5/Makefile.am b/bindings/php5/Makefile.am
index 94b22ee5..a5682282 100644
--- a/bindings/php5/Makefile.am
+++ b/bindings/php5/Makefile.am
@@ -19,7 +19,7 @@ if WSF_ENABLED
EXTRA_ARGS = --enable-id-wsf
endif
-lasso.php _lasso.c: ../lang_php5.py ../lang_php5_helpers/php_code.py
+lasso.php _lasso.c: ../lang_php5.py ../lang_php5_helpers/php_code.py ../lang_php5_helpers/wrapper_source.py
$(PYTHON) $(top_srcdir)/bindings/bindings.py -l php5 --src-dir=$(top_srcdir)/lasso/ $(EXTRA_ARGS)
doc: