Ejemplo n.º 1
0
    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 = {}
Ejemplo n.º 2
0
    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)