def __init__(self, el, externals, custom_lists):
        self.el = el
        name = get_by_path(el, '@name')
        array_name = get_by_path(el, '@array-name')
        array_depth = get_by_path(el, '@array-depth')
        if array_depth:
            array_depth = int(array_depth)
        else:
            array_depth = None
        self.binding = binding_from_decl(name, array_name, array_depth)
        self.deps = []

        for member in get_by_path(el, 'member'):
            sig = member.getAttribute('type')
            tptype = member.getAttributeNS(NS_TP, 'type')

            if (sig, tptype) in externals:
                continue

            if tptype.endswith('[]'):
                tptype = tptype[:-2]

            binding = binding_from_usage(sig, tptype, custom_lists)

            if binding.custom_type:
                self.deps.append(binding.val)

        self.revdeps = []
    def __init__(self, el, externals, custom_lists):
        self.el = el
        name = get_by_path(el, '@name')
        array_name = get_by_path(el, '@array-name')
        array_depth = get_by_path(el, '@array-depth')
        if array_depth:
            array_depth = int(array_depth)
        else:
            array_depth = None
        self.binding = binding_from_decl(name, array_name, array_depth)
        self.deps = []

        for member in get_by_path(el, 'member'):
            sig = member.getAttribute('type')
            tptype = member.getAttributeNS(NS_TP, 'type')

            if (sig, tptype) in externals:
                continue

            if tptype.endswith('[]'):
                tptype = tptype[:-2]

            binding = binding_from_usage(sig, tptype, custom_lists)

            if binding.custom_type:
                self.deps.append(binding.val)

        self.revdeps = []
    def do_prop(self, prop):
        name = prop.getAttribute('name')
        access = prop.getAttribute('access')
        gettername = name
        settername = None

        sig = prop.getAttribute('type')
        tptype = prop.getAttributeNS(NS_TP, 'type')
        binding = binding_from_usage(sig, tptype, self.custom_lists, (sig, tptype) in self.externals, self.typesnamespace)

        if 'write' in access:
            settername = 'set' + name

        self.h("""
    /**
     * Represents property "%(name)s" on the remote object.
%(docstring)s\
     */
    Q_PROPERTY(%(val)s %(name)s READ %(gettername)s%(maybesettername)s)

    /**
     * Getter for the remote object property "%(name)s".
     *
     * Don't use this: it blocks the main loop.
     *
     * \\return The value of the property, or a default-constructed value
     *          if the property is not readable.
     */
    inline %(val)s %(gettername)s() const TELEPATHY_GNUC_DEPRECATED
    {
        return %(getter-return)s;
    }
""" % {'name' : name,
       'docstring' : format_docstring(prop, '     * ').replace('*/',
           '*/'),
       'val' : binding.val,
       'name' : name,
       'gettername' : gettername,
       'maybesettername' : settername and (' WRITE ' + settername) or '',
       'getter-return' : 'read' in access and ('qvariant_cast<%s>(internalPropGet("%s"))' % (binding.val, name)) or binding.val + '()'})

        if settername:
            self.h("""
    /**
     * Setter for the remote object property "%s".
     *
     * Don't use this: it blocks the main loop.
     *
     * \\param newValue The value to set the property to.
     */
    inline void %s(%s newValue) TELEPATHY_GNUC_DEPRECATED
    {
        internalPropSet("%s", QVariant::fromValue(newValue));
    }
""" % (name, settername, binding.inarg, name))
    def do_prop(self, prop):
        name = prop.getAttribute('name')
        access = prop.getAttribute('access')
        gettername = name
        settername = None

        sig = prop.getAttribute('type')
        tptype = prop.getAttributeNS(NS_TP, 'type')
        binding = binding_from_usage(sig, tptype, self.custom_lists, (sig, tptype) in self.externals, self.typesnamespace)

        if 'write' in access:
            settername = 'set' + name

        if 'read' in access:
            self.h("""
    /**
     * Asynchronous getter for the remote object property "%(name)s" of type %(val)s.
     *
%(docstring)s\
     *
     * \\return A pending variant which will emit finished when the property has been
     *          retrieved.
     */
    inline Tp::PendingVariant *%(gettername)s() const
    {
        return internalRequestProperty(QLatin1String("%(name)s"));
    }
""" % {'name' : name,
       'docstring' : format_docstring(prop, '     * ').replace('*/',
           '&#42;&#47;'),
       'val' : binding.val,
       'name' : name,
       'gettername' : 'requestProperty' + name})

        if 'write' in access:
            self.h("""
    /**
     * Asynchronous setter for the remote object property "%(name)s" of type %(type)s.
     *
%(docstring)s\
     *
     * \\return A pending operation which will emit finished when the property has been
     *          set.
     */
    inline Tp::PendingOperation *%(settername)s(%(type)s newValue)
    {
        return internalSetProperty(QLatin1String("%(name)s"), QVariant::fromValue(newValue));
    }
""" % {'name' : name,
       'docstring' : format_docstring(prop, '     * ').replace('*/',
           '&#42;&#47;'),
       'type' : binding.val,
       'name' : name,
       'settername' : 'setProperty' + name})
    def gather_required(self):
        members = self.spec.getElementsByTagNameNS(NS_TP, 'member')
        args = self.spec.getElementsByTagName('arg')
        props = self.spec.getElementsByTagName('property')
        tp_props = self.spec.getElementsByTagNameNS(NS_TP, 'property')

        for requirer in members + args + props + tp_props:
            sig = requirer.getAttribute('type')
            tptype = requirer.getAttributeNS(NS_TP, 'type')
            external = (sig, tptype) in self.externals
            binding = binding_from_usage(sig, tptype, self.custom_lists, external)

            if binding.custom_type and binding.val not in self.required_custom:
                self.required_custom.append(binding.val)

            if not binding.custom_type and binding.array_of and (binding.val, binding.array_of) not in self.required_arrays:
                self.required_arrays.append((binding.val, binding.array_of))
    def gather_required(self):
        members = self.spec.getElementsByTagNameNS(NS_TP, 'member')
        args = self.spec.getElementsByTagName('arg')
        props = self.spec.getElementsByTagName('property')
        tp_props = self.spec.getElementsByTagNameNS(NS_TP, 'property')

        for requirer in members + args + props + tp_props:
            sig = requirer.getAttribute('type')
            tptype = requirer.getAttributeNS(NS_TP, 'type')
            external = (sig, tptype) in self.externals
            binding = binding_from_usage(sig, tptype, self.custom_lists,
                                         external)

            if binding.custom_type and binding.val not in self.required_custom:
                self.required_custom.append(binding.val)

            if not binding.custom_type and binding.array_of and (
                    binding.val, binding.array_of) not in self.required_arrays:
                self.required_arrays.append((binding.val, binding.array_of))
Beispiel #7
0
    def do_prop(self, prop):
        name = prop.getAttribute('name')
        access = prop.getAttribute('access')
        gettername = name
        settername = None

        sig = prop.getAttribute('type')
        tptype = prop.getAttributeNS(NS_TP, 'type')
        binding = binding_from_usage(sig, tptype, self.custom_lists,
                                     (sig, tptype) in self.externals,
                                     self.typesnamespace)

        if 'write' in access:
            settername = 'set' + name

        if 'read' in access:
            self.h(
                """
    /**
     * Asynchronous getter for the remote object property "%(name)s" of type %(val)s.
     *
%(docstring)s\
     *
     * \\return A pending variant which will emit finished when the property has been
     *          retrieved.
     */
    inline Tp::PendingVariant *%(gettername)s() const
    {
        return internalRequestProperty(QLatin1String("%(name)s"));
    }
""" % {
                    'name':
                    name,
                    'docstring':
                    format_docstring(prop, '     * ').replace(
                        '*/', '&#42;&#47;'),
                    'val':
                    binding.val,
                    'name':
                    name,
                    'gettername':
                    'requestProperty' + name
                })

        if 'write' in access:
            self.h(
                """
    /**
     * Asynchronous setter for the remote object property "%(name)s" of type %(type)s.
     *
%(docstring)s\
     *
     * \\return A pending operation which will emit finished when the property has been
     *          set.
     */
    inline Tp::PendingOperation *%(settername)s(%(type)s newValue)
    {
        return internalSetProperty(QLatin1String("%(name)s"), QVariant::fromValue(newValue));
    }
""" % {
                    'name':
                    name,
                    'docstring':
                    format_docstring(prop, '     * ').replace(
                        '*/', '&#42;&#47;'),
                    'type':
                    binding.val,
                    'name':
                    name,
                    'settername':
                    'setProperty' + name
                })
Beispiel #8
0
    def do_prop(self, prop):
        name = prop.getAttribute("name")
        access = prop.getAttribute("access")
        gettername = name
        settername = None

        sig = prop.getAttribute("type")
        tptype = prop.getAttributeNS(NS_TP, "type")
        binding = binding_from_usage(
            sig, tptype, self.custom_lists, (sig, tptype) in self.externals, self.typesnamespace
        )

        if "write" in access:
            settername = "set" + name

        self.h(
            """
    /**
     * Represents property "%(name)s" on the remote object.
%(docstring)s\
     */
    Q_PROPERTY(%(val)s %(name)s READ %(gettername)s%(maybesettername)s)

    /**
     * Getter for the remote object property "%(name)s".
     *
     * Don't use this: it blocks the main loop.
     *
     * \\return The value of the property, or a default-constructed value
     *          if the property is not readable.
     */
    inline %(val)s %(gettername)s() const TELEPATHY_GNUC_DEPRECATED
    {
        return %(getter-return)s;
    }
"""
            % {
                "name": name,
                "docstring": format_docstring(prop, "     * ").replace("*/", "&#42;&#47;"),
                "val": binding.val,
                "name": name,
                "gettername": gettername,
                "maybesettername": settername and (" WRITE " + settername) or "",
                "getter-return": "read" in access
                and ('qvariant_cast<%s>(internalPropGet("%s"))' % (binding.val, name))
                or binding.val + "()",
            }
        )

        if settername:
            self.h(
                """
    /**
     * Setter for the remote object property "%s".
     *
     * Don't use this: it blocks the main loop.
     *
     * \\param newValue The value to set the property to.
     */
    inline void %s(%s newValue) TELEPATHY_GNUC_DEPRECATED
    {
        internalPropSet("%s", QVariant::fromValue(newValue));
    }
"""
                % (name, settername, binding.inarg, name)
            )
Beispiel #9
0
    def do_prop(self, prop):
        name = prop.getAttribute('name')
        access = prop.getAttribute('access')
        gettername = name
        settername = None

        sig = prop.getAttribute('type')
        tptype = prop.getAttributeNS(NS_TP, 'type')
        binding = binding_from_usage(sig, tptype, self.custom_lists,
                                     (sig, tptype) in self.externals,
                                     self.typesnamespace)

        if 'write' in access:
            settername = 'set' + name

        self.h(
            """
    /**
     * Represents property "%(name)s" on the remote object.
%(docstring)s\
     */
    Q_PROPERTY(%(val)s %(name)s READ %(gettername)s%(maybesettername)s)

    /**
     * Getter for the remote object property "%(name)s".
     *
     * Don't use this: it blocks the main loop.
     *
     * \\return The value of the property, or a default-constructed value
     *          if the property is not readable.
     */
    inline %(val)s %(gettername)s() const TELEPATHY_GNUC_DEPRECATED
    {
        return %(getter-return)s;
    }
""" % {
                'name':
                name,
                'docstring':
                format_docstring(prop, '     * ').replace('*/', '&#42;&#47;'),
                'val':
                binding.val,
                'name':
                name,
                'gettername':
                gettername,
                'maybesettername':
                settername and (' WRITE ' + settername) or '',
                'getter-return':
                'read' in access and
                ('qvariant_cast<%s>(internalPropGet("%s"))' %
                 (binding.val, name)) or binding.val + '()'
            })

        if settername:
            self.h("""
    /**
     * Setter for the remote object property "%s".
     *
     * Don't use this: it blocks the main loop.
     *
     * \\param newValue The value to set the property to.
     */
    inline void %s(%s newValue) TELEPATHY_GNUC_DEPRECATED
    {
        internalPropSet("%s", QVariant::fromValue(newValue));
    }
""" % (name, settername, binding.inarg, name))