def __init__(self, cls, ): Method.__init__(self, Constructor.NAME, result = cls, result_modifiers = [], visibility = Visibility.PUBLIC, scope = Scope.STATIC, inheritance_mode = MethodInheritance.FINAL ) self.property_inits = {}
def method_begin(self, name, attrs, result_info ): cls = self._get_parent(GObject) if cls is None: intf = self._get_parent(GInterface) else: intf = None if cls is None and intf is None: error_msg = "Method %s must be defined inside gobject or ginterface" raise DefinitionError(error_msg) if result_info is not None: result = self._get_param_type(result_info.type_info) result_modifiers = self._get_param_modifiers(result_info.modifiers) else: result = NULL result_modifiers = [] if cls: method = Method(name, result, result_modifiers) method.scope = Scope.INSTANCE method.visibility = Visibility.PRIVATE method.inheritance_mode = MethodInheritance.FINAL for attr in attrs: if attr == "scope": method.scope = self._scope[attrs[attr]] elif attr == "visibility": method.visibility = self._visi[attrs[attr]] elif attr == "inheritance": method.inheritance_mode = self._inheritance[attrs[attr]] cls.add_method(method) else: method = Method(name, result, result_modifiers) method.scope = Scope.INSTANCE method.visibility = Visibility.PUBLIC method.inheritance_mode = MethodInheritance.ABSTRACT intf.add_method(method) method.supportsFurtherParams = 'further_params' in attrs self._stack.append(method)