def parse_method(self, cfunction, namespace, type=Method.Type.Instance): name = metaname.MethodName() name.from_snake_case(cfunction.name, namespace=namespace) try: if self._is_blacklisted(name): raise BlacklistedSymbolError(name) method = Method(name, type=type) method.briefDescription = cfunction.briefDoc method.detailedDescription = cfunction.detailedDoc method.deprecated = cfunction.deprecated method.returnType = self.parse_type(cfunction.returnArgument) for arg in cfunction.arguments: if type == Method.Type.Instance and arg is cfunction.arguments[0]: method.isconst = ('const' in arg.completeType.split(' ')) else: aType = self.parse_type(arg) argName = metaname.ArgName() argName.from_snake_case(arg.name) absArg = Argument(argName, aType) method.add_arguments(absArg) self.methodsIndex[cfunction.name] = method return method except ParsingError as e: raise ParsingError(e, name)
def _parse_listener_property(self, property, listener, events): methodName = metaname.MethodName() methodName.from_snake_case(property.name) methodName.words.insert(0, 'on') methodName.prev = listener.name if property.getter is not None: eventName = property.getter.returnArgument.ctype elif property.setter is not None and len(property.setter.arguments) == 2: eventName = property.setter.arguments[1].ctype else: raise ParsingError('event name for {0} property of {1} listener not found'.format(property.name, listener.name.to_c())) try: event = events[eventName] except KeyError: raise ParsingError('invalid event name \'{0}\''.format(eventName)) method = Method(methodName) method.returnType = self.parse_type(event.returnArgument) for arg in event.arguments: argName = metaname.ArgName() argName.from_snake_case(arg.name) argument = Argument(argName, self.parse_type(arg)) method.add_arguments(argument) method.briefDescription = event.briefDoc method.detailedDescription = event.detailedDoc return method