diff options
Diffstat (limited to 'giscanner')
-rw-r--r-- | giscanner/transformer.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/giscanner/transformer.py b/giscanner/transformer.py index 8e3219a..9aebbd8 100644 --- a/giscanner/transformer.py +++ b/giscanner/transformer.py @@ -534,13 +534,20 @@ class Transformer(object): return self._create_compound(Union, symbol, anonymous) def _create_callback(self, symbol): - parameters = self._create_parameters(symbol.base_type.base_type) + parameters = list(self._create_parameters(symbol.base_type.base_type)) retval = self._create_return(symbol.base_type.base_type.base_type) + + # Mark the 'user_data' arguments + for i, param in enumerate(parameters): + if (param.type.name == 'any' and + param.name == 'user_data'): + param.closure_index = i + if symbol.ident.find('_') > 0: name = self.remove_prefix(symbol.ident, True) else: name = self.remove_prefix(symbol.ident) - callback = Callback(name, retval, list(parameters), symbol.ident) + callback = Callback(name, retval, parameters, symbol.ident) return callback |