|
Packit |
ae235b |
# -*- Mode: Python -*-
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
# GDBus - GLib D-Bus Library
|
|
Packit |
ae235b |
#
|
|
Packit |
ae235b |
# Copyright (C) 2008-2011 Red Hat, Inc.
|
|
Packit |
ae235b |
#
|
|
Packit |
ae235b |
# This library is free software; you can redistribute it and/or
|
|
Packit |
ae235b |
# modify it under the terms of the GNU Lesser General Public
|
|
Packit |
ae235b |
# License as published by the Free Software Foundation; either
|
|
Packit |
ae235b |
# version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
ae235b |
#
|
|
Packit |
ae235b |
# This library is distributed in the hope that it will be useful,
|
|
Packit |
ae235b |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
ae235b |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
ae235b |
# Lesser General Public License for more details.
|
|
Packit |
ae235b |
#
|
|
Packit |
ae235b |
# You should have received a copy of the GNU Lesser General
|
|
Packit |
ae235b |
# Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
ae235b |
#
|
|
Packit |
ae235b |
# Author: David Zeuthen <davidz@redhat.com>
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
from . import utils
|
|
Packit |
ae235b |
from .utils import print_error
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
class Annotation:
|
|
Packit |
ae235b |
def __init__(self, key, value):
|
|
Packit |
ae235b |
self.key = key
|
|
Packit |
ae235b |
self.value = value
|
|
Packit |
ae235b |
self.annotations = []
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
class Arg:
|
|
Packit |
ae235b |
def __init__(self, name, signature):
|
|
Packit |
ae235b |
self.name = name
|
|
Packit |
ae235b |
self.signature = signature
|
|
Packit |
ae235b |
self.annotations = []
|
|
Packit |
ae235b |
self.doc_string = ''
|
|
Packit |
ae235b |
self.since = ''
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
def post_process(self, interface_prefix, cns, cns_upper, cns_lower, arg_number):
|
|
Packit |
ae235b |
if len(self.doc_string) == 0:
|
|
Packit |
ae235b |
self.doc_string = utils.lookup_docs(self.annotations)
|
|
Packit |
ae235b |
if len(self.since) == 0:
|
|
Packit |
ae235b |
self.since = utils.lookup_since(self.annotations)
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
if self.name == None:
|
|
Packit |
ae235b |
self.name = 'unnamed_arg%d'%arg_number
|
|
Packit |
ae235b |
# default to GVariant
|
|
Packit |
ae235b |
self.ctype_in_g = 'GVariant *'
|
|
Packit |
ae235b |
self.ctype_in = 'GVariant *'
|
|
Packit |
ae235b |
self.ctype_in_dup = 'GVariant *'
|
|
Packit |
ae235b |
self.ctype_out = 'GVariant **'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_VARIANT'
|
|
Packit |
ae235b |
self.free_func = 'g_variant_unref'
|
|
Packit |
ae235b |
self.format_in = '@' + self.signature
|
|
Packit |
ae235b |
self.format_out = '@' + self.signature
|
|
Packit |
ae235b |
self.gvariant_get = 'XXX'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_variant'
|
|
Packit |
ae235b |
self.array_annotation = ''
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
if not utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.ForceGVariant'):
|
|
Packit |
ae235b |
if self.signature == 'b':
|
|
Packit |
ae235b |
self.ctype_in_g = 'gboolean '
|
|
Packit |
ae235b |
self.ctype_in = 'gboolean '
|
|
Packit |
ae235b |
self.ctype_out = 'gboolean *'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_BOOLEAN'
|
|
Packit |
ae235b |
self.free_func = None
|
|
Packit |
ae235b |
self.format_in = 'b'
|
|
Packit |
ae235b |
self.format_out = 'b'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_boolean'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_boolean'
|
|
Packit |
ae235b |
elif self.signature == 'y':
|
|
Packit |
ae235b |
self.ctype_in_g = 'guchar '
|
|
Packit |
ae235b |
self.ctype_in = 'guchar '
|
|
Packit |
ae235b |
self.ctype_out = 'guchar *'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_UCHAR'
|
|
Packit |
ae235b |
self.free_func = None
|
|
Packit |
ae235b |
self.format_in = 'y'
|
|
Packit |
ae235b |
self.format_out = 'y'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_byte'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_uchar'
|
|
Packit |
ae235b |
elif self.signature == 'n':
|
|
Packit |
ae235b |
self.ctype_in_g = 'gint '
|
|
Packit |
ae235b |
self.ctype_in = 'gint16 '
|
|
Packit |
ae235b |
self.ctype_out = 'gint16 *'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_INT'
|
|
Packit |
ae235b |
self.free_func = None
|
|
Packit |
ae235b |
self.format_in = 'n'
|
|
Packit |
ae235b |
self.format_out = 'n'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_int16'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_int'
|
|
Packit |
ae235b |
elif self.signature == 'q':
|
|
Packit |
ae235b |
self.ctype_in_g = 'guint '
|
|
Packit |
ae235b |
self.ctype_in = 'guint16 '
|
|
Packit |
ae235b |
self.ctype_out = 'guint16 *'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_UINT'
|
|
Packit |
ae235b |
self.free_func = None
|
|
Packit |
ae235b |
self.format_in = 'q'
|
|
Packit |
ae235b |
self.format_out = 'q'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_uint16'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_uint'
|
|
Packit |
ae235b |
elif self.signature == 'i':
|
|
Packit |
ae235b |
self.ctype_in_g = 'gint '
|
|
Packit |
ae235b |
self.ctype_in = 'gint '
|
|
Packit |
ae235b |
self.ctype_out = 'gint *'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_INT'
|
|
Packit |
ae235b |
self.free_func = None
|
|
Packit |
ae235b |
self.format_in = 'i'
|
|
Packit |
ae235b |
self.format_out = 'i'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_int32'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_int'
|
|
Packit |
ae235b |
elif self.signature == 'u':
|
|
Packit |
ae235b |
self.ctype_in_g = 'guint '
|
|
Packit |
ae235b |
self.ctype_in = 'guint '
|
|
Packit |
ae235b |
self.ctype_out = 'guint *'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_UINT'
|
|
Packit |
ae235b |
self.free_func = None
|
|
Packit |
ae235b |
self.format_in = 'u'
|
|
Packit |
ae235b |
self.format_out = 'u'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_uint32'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_uint'
|
|
Packit |
ae235b |
elif self.signature == 'x':
|
|
Packit |
ae235b |
self.ctype_in_g = 'gint64 '
|
|
Packit |
ae235b |
self.ctype_in = 'gint64 '
|
|
Packit |
ae235b |
self.ctype_out = 'gint64 *'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_INT64'
|
|
Packit |
ae235b |
self.free_func = None
|
|
Packit |
ae235b |
self.format_in = 'x'
|
|
Packit |
ae235b |
self.format_out = 'x'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_int64'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_int64'
|
|
Packit |
ae235b |
elif self.signature == 't':
|
|
Packit |
ae235b |
self.ctype_in_g = 'guint64 '
|
|
Packit |
ae235b |
self.ctype_in = 'guint64 '
|
|
Packit |
ae235b |
self.ctype_out = 'guint64 *'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_UINT64'
|
|
Packit |
ae235b |
self.free_func = None
|
|
Packit |
ae235b |
self.format_in = 't'
|
|
Packit |
ae235b |
self.format_out = 't'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_uint64'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_uint64'
|
|
Packit |
ae235b |
elif self.signature == 'd':
|
|
Packit |
ae235b |
self.ctype_in_g = 'gdouble '
|
|
Packit |
ae235b |
self.ctype_in = 'gdouble '
|
|
Packit |
ae235b |
self.ctype_out = 'gdouble *'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_DOUBLE'
|
|
Packit |
ae235b |
self.free_func = None
|
|
Packit |
ae235b |
self.format_in = 'd'
|
|
Packit |
ae235b |
self.format_out = 'd'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_double'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_double'
|
|
Packit |
ae235b |
elif self.signature == 's':
|
|
Packit |
ae235b |
self.ctype_in_g = 'const gchar *'
|
|
Packit |
ae235b |
self.ctype_in = 'const gchar *'
|
|
Packit |
ae235b |
self.ctype_in_dup = 'gchar *'
|
|
Packit |
ae235b |
self.ctype_out = 'gchar **'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_STRING'
|
|
Packit |
ae235b |
self.free_func = 'g_free'
|
|
Packit |
ae235b |
self.format_in = 's'
|
|
Packit |
ae235b |
self.format_out = 's'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_string'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_string'
|
|
Packit |
ae235b |
elif self.signature == 'o':
|
|
Packit |
ae235b |
self.ctype_in_g = 'const gchar *'
|
|
Packit |
ae235b |
self.ctype_in = 'const gchar *'
|
|
Packit |
ae235b |
self.ctype_in_dup = 'gchar *'
|
|
Packit |
ae235b |
self.ctype_out = 'gchar **'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_STRING'
|
|
Packit |
ae235b |
self.free_func = 'g_free'
|
|
Packit |
ae235b |
self.format_in = 'o'
|
|
Packit |
ae235b |
self.format_out = 'o'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_string'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_string'
|
|
Packit |
ae235b |
elif self.signature == 'g':
|
|
Packit |
ae235b |
self.ctype_in_g = 'const gchar *'
|
|
Packit |
ae235b |
self.ctype_in = 'const gchar *'
|
|
Packit |
ae235b |
self.ctype_in_dup = 'gchar *'
|
|
Packit |
ae235b |
self.ctype_out = 'gchar **'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_STRING'
|
|
Packit |
ae235b |
self.free_func = 'g_free'
|
|
Packit |
ae235b |
self.format_in = 'g'
|
|
Packit |
ae235b |
self.format_out = 'g'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_string'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_string'
|
|
Packit |
ae235b |
elif self.signature == 'ay':
|
|
Packit |
ae235b |
self.ctype_in_g = 'const gchar *'
|
|
Packit |
ae235b |
self.ctype_in = 'const gchar *'
|
|
Packit |
ae235b |
self.ctype_in_dup = 'gchar *'
|
|
Packit |
ae235b |
self.ctype_out = 'gchar **'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_STRING'
|
|
Packit |
ae235b |
self.free_func = 'g_free'
|
|
Packit |
ae235b |
self.format_in = '^ay'
|
|
Packit |
ae235b |
self.format_out = '^ay'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_bytestring'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_string'
|
|
Packit |
ae235b |
elif self.signature == 'as':
|
|
Packit |
ae235b |
self.ctype_in_g = 'const gchar *const *'
|
|
Packit |
ae235b |
self.ctype_in = 'const gchar *const *'
|
|
Packit |
ae235b |
self.ctype_in_dup = 'gchar **'
|
|
Packit |
ae235b |
self.ctype_out = 'gchar ***'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_STRV'
|
|
Packit |
ae235b |
self.free_func = 'g_strfreev'
|
|
Packit |
ae235b |
self.format_in = '^as'
|
|
Packit |
ae235b |
self.format_out = '^as'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_strv'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_boxed'
|
|
Packit |
ae235b |
self.array_annotation = '(array zero-terminated=1)'
|
|
Packit |
ae235b |
elif self.signature == 'ao':
|
|
Packit |
ae235b |
self.ctype_in_g = 'const gchar *const *'
|
|
Packit |
ae235b |
self.ctype_in = 'const gchar *const *'
|
|
Packit |
ae235b |
self.ctype_in_dup = 'gchar **'
|
|
Packit |
ae235b |
self.ctype_out = 'gchar ***'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_STRV'
|
|
Packit |
ae235b |
self.free_func = 'g_strfreev'
|
|
Packit |
ae235b |
self.format_in = '^ao'
|
|
Packit |
ae235b |
self.format_out = '^ao'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_objv'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_boxed'
|
|
Packit |
ae235b |
self.array_annotation = '(array zero-terminated=1)'
|
|
Packit |
ae235b |
elif self.signature == 'aay':
|
|
Packit |
ae235b |
self.ctype_in_g = 'const gchar *const *'
|
|
Packit |
ae235b |
self.ctype_in = 'const gchar *const *'
|
|
Packit |
ae235b |
self.ctype_in_dup = 'gchar **'
|
|
Packit |
ae235b |
self.ctype_out = 'gchar ***'
|
|
Packit |
ae235b |
self.gtype = 'G_TYPE_STRV'
|
|
Packit |
ae235b |
self.free_func = 'g_strfreev'
|
|
Packit |
ae235b |
self.format_in = '^aay'
|
|
Packit |
ae235b |
self.format_out = '^aay'
|
|
Packit |
ae235b |
self.gvariant_get = 'g_variant_get_bytestring_array'
|
|
Packit |
ae235b |
self.gvalue_get = 'g_value_get_boxed'
|
|
Packit |
ae235b |
self.array_annotation = '(array zero-terminated=1)'
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
class Method:
|
|
Packit |
ae235b |
def __init__(self, name):
|
|
Packit |
ae235b |
self.name = name
|
|
Packit |
ae235b |
self.in_args = []
|
|
Packit |
ae235b |
self.out_args = []
|
|
Packit |
ae235b |
self.annotations = []
|
|
Packit |
ae235b |
self.doc_string = ''
|
|
Packit |
ae235b |
self.since = ''
|
|
Packit |
ae235b |
self.deprecated = False
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
def post_process(self, interface_prefix, cns, cns_upper, cns_lower, containing_iface):
|
|
Packit |
ae235b |
if len(self.doc_string) == 0:
|
|
Packit |
ae235b |
self.doc_string = utils.lookup_docs(self.annotations)
|
|
Packit |
ae235b |
if len(self.since) == 0:
|
|
Packit |
ae235b |
self.since = utils.lookup_since(self.annotations)
|
|
Packit |
ae235b |
if len(self.since) == 0:
|
|
Packit |
ae235b |
self.since = containing_iface.since
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
name = self.name
|
|
Packit |
ae235b |
overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name')
|
|
Packit |
ae235b |
if utils.is_ugly_case(overridden_name):
|
|
Packit |
ae235b |
self.name_lower = overridden_name.lower()
|
|
Packit |
ae235b |
else:
|
|
Packit |
ae235b |
if overridden_name:
|
|
Packit |
ae235b |
name = overridden_name
|
|
Packit |
ae235b |
self.name_lower = utils.camel_case_to_uscore(name).lower().replace('-', '_')
|
|
Packit |
ae235b |
self.name_hyphen = self.name_lower.replace('_', '-')
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
arg_count = 0
|
|
Packit |
ae235b |
for a in self.in_args:
|
|
Packit |
ae235b |
a.post_process(interface_prefix, cns, cns_upper, cns_lower, arg_count)
|
|
Packit |
ae235b |
arg_count += 1
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
for a in self.out_args:
|
|
Packit |
ae235b |
a.post_process(interface_prefix, cns, cns_upper, cns_lower, arg_count)
|
|
Packit |
ae235b |
arg_count += 1
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true':
|
|
Packit |
ae235b |
self.deprecated = True
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
class Signal:
|
|
Packit |
ae235b |
def __init__(self, name):
|
|
Packit |
ae235b |
self.name = name
|
|
Packit |
ae235b |
self.args = []
|
|
Packit |
ae235b |
self.annotations = []
|
|
Packit |
ae235b |
self.doc_string = ''
|
|
Packit |
ae235b |
self.since = ''
|
|
Packit |
ae235b |
self.deprecated = False
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
def post_process(self, interface_prefix, cns, cns_upper, cns_lower, containing_iface):
|
|
Packit |
ae235b |
if len(self.doc_string) == 0:
|
|
Packit |
ae235b |
self.doc_string = utils.lookup_docs(self.annotations)
|
|
Packit |
ae235b |
if len(self.since) == 0:
|
|
Packit |
ae235b |
self.since = utils.lookup_since(self.annotations)
|
|
Packit |
ae235b |
if len(self.since) == 0:
|
|
Packit |
ae235b |
self.since = containing_iface.since
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
name = self.name
|
|
Packit |
ae235b |
overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name')
|
|
Packit |
ae235b |
if utils.is_ugly_case(overridden_name):
|
|
Packit |
ae235b |
self.name_lower = overridden_name.lower()
|
|
Packit |
ae235b |
else:
|
|
Packit |
ae235b |
if overridden_name:
|
|
Packit |
ae235b |
name = overridden_name
|
|
Packit |
ae235b |
self.name_lower = utils.camel_case_to_uscore(name).lower().replace('-', '_')
|
|
Packit |
ae235b |
self.name_hyphen = self.name_lower.replace('_', '-')
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
arg_count = 0
|
|
Packit |
ae235b |
for a in self.args:
|
|
Packit |
ae235b |
a.post_process(interface_prefix, cns, cns_upper, cns_lower, arg_count)
|
|
Packit |
ae235b |
arg_count += 1
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true':
|
|
Packit |
ae235b |
self.deprecated = True
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
class Property:
|
|
Packit |
ae235b |
def __init__(self, name, signature, access):
|
|
Packit |
ae235b |
self.name = name
|
|
Packit |
ae235b |
self.signature = signature
|
|
Packit |
ae235b |
self.access = access
|
|
Packit |
ae235b |
self.annotations = []
|
|
Packit |
ae235b |
self.arg = Arg('value', self.signature)
|
|
Packit |
ae235b |
self.arg.annotations = self.annotations
|
|
Packit |
ae235b |
self.readable = False
|
|
Packit |
ae235b |
self.writable = False
|
|
Packit |
ae235b |
if self.access == 'readwrite':
|
|
Packit |
ae235b |
self.readable = True
|
|
Packit |
ae235b |
self.writable = True
|
|
Packit |
ae235b |
elif self.access == 'read':
|
|
Packit |
ae235b |
self.readable = True
|
|
Packit |
ae235b |
elif self.access == 'write':
|
|
Packit |
ae235b |
self.writable = True
|
|
Packit |
ae235b |
else:
|
|
Packit |
ae235b |
print_error('Invalid access type "{}"'.format(self.access))
|
|
Packit |
ae235b |
self.doc_string = ''
|
|
Packit |
ae235b |
self.since = ''
|
|
Packit |
ae235b |
self.deprecated = False
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
def post_process(self, interface_prefix, cns, cns_upper, cns_lower, containing_iface):
|
|
Packit |
ae235b |
if len(self.doc_string) == 0:
|
|
Packit |
ae235b |
self.doc_string = utils.lookup_docs(self.annotations)
|
|
Packit |
ae235b |
if len(self.since) == 0:
|
|
Packit |
ae235b |
self.since = utils.lookup_since(self.annotations)
|
|
Packit |
ae235b |
if len(self.since) == 0:
|
|
Packit |
ae235b |
self.since = containing_iface.since
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
name = self.name
|
|
Packit |
ae235b |
overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name')
|
|
Packit |
ae235b |
if utils.is_ugly_case(overridden_name):
|
|
Packit |
ae235b |
self.name_lower = overridden_name.lower()
|
|
Packit |
ae235b |
else:
|
|
Packit |
ae235b |
if overridden_name:
|
|
Packit |
ae235b |
name = overridden_name
|
|
Packit |
ae235b |
self.name_lower = utils.camel_case_to_uscore(name).lower().replace('-', '_')
|
|
Packit |
ae235b |
self.name_hyphen = self.name_lower.replace('_', '-')
|
|
Packit |
ae235b |
# don't clash with the GType getter, e.g.: GType foo_bar_get_type (void); G_GNUC_CONST
|
|
Packit |
ae235b |
if self.name_lower == 'type':
|
|
Packit |
ae235b |
self.name_lower = 'type_'
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
# recalculate arg
|
|
Packit |
ae235b |
self.arg.annotations = self.annotations
|
|
Packit |
ae235b |
self.arg.post_process(interface_prefix, cns, cns_upper, cns_lower, 0)
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true':
|
|
Packit |
ae235b |
self.deprecated = True
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
class Interface:
|
|
Packit |
ae235b |
def __init__(self, name):
|
|
Packit |
ae235b |
self.name = name
|
|
Packit |
ae235b |
self.methods = []
|
|
Packit |
ae235b |
self.signals = []
|
|
Packit |
ae235b |
self.properties = []
|
|
Packit |
ae235b |
self.annotations = []
|
|
Packit |
ae235b |
self.doc_string = ''
|
|
Packit |
ae235b |
self.doc_string_brief = ''
|
|
Packit |
ae235b |
self.since = ''
|
|
Packit |
ae235b |
self.deprecated = False
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
def post_process(self, interface_prefix, c_namespace):
|
|
Packit |
ae235b |
if len(self.doc_string) == 0:
|
|
Packit |
ae235b |
self.doc_string = utils.lookup_docs(self.annotations)
|
|
Packit |
ae235b |
if len(self.doc_string_brief) == 0:
|
|
Packit |
ae235b |
self.doc_string_brief = utils.lookup_brief_docs(self.annotations)
|
|
Packit |
ae235b |
if len(self.since) == 0:
|
|
Packit |
ae235b |
self.since = utils.lookup_since(self.annotations)
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
if len(c_namespace) > 0:
|
|
Packit |
ae235b |
if utils.is_ugly_case(c_namespace):
|
|
Packit |
ae235b |
cns = c_namespace.replace('_', '')
|
|
Packit |
ae235b |
cns_upper = c_namespace.upper() + '_'
|
|
Packit |
ae235b |
cns_lower = c_namespace.lower() + '_'
|
|
Packit |
ae235b |
else:
|
|
Packit |
ae235b |
cns = c_namespace
|
|
Packit |
ae235b |
cns_upper = utils.camel_case_to_uscore(c_namespace).upper() + '_'
|
|
Packit |
ae235b |
cns_lower = utils.camel_case_to_uscore(c_namespace).lower() + '_'
|
|
Packit |
ae235b |
else:
|
|
Packit |
ae235b |
cns = ''
|
|
Packit |
ae235b |
cns_upper = ''
|
|
Packit |
ae235b |
cns_lower = ''
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name')
|
|
Packit |
ae235b |
if utils.is_ugly_case(overridden_name):
|
|
Packit |
ae235b |
name = overridden_name.replace('_', '')
|
|
Packit |
ae235b |
name_with_ns = cns + name
|
|
Packit |
ae235b |
self.name_without_prefix = name
|
|
Packit |
ae235b |
self.camel_name = name_with_ns
|
|
Packit |
ae235b |
self.ns_upper = cns_upper
|
|
Packit |
ae235b |
self.name_lower = cns_lower + overridden_name.lower()
|
|
Packit |
ae235b |
self.name_upper = overridden_name.upper()
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
#print_error('handle Ugly_Case "{}"'.format(overridden_name))
|
|
Packit |
ae235b |
else:
|
|
Packit |
ae235b |
if overridden_name:
|
|
Packit |
ae235b |
name = overridden_name
|
|
Packit |
ae235b |
else:
|
|
Packit |
ae235b |
name = self.name
|
|
Packit |
ae235b |
if name.startswith(interface_prefix):
|
|
Packit |
ae235b |
name = name[len(interface_prefix):]
|
|
Packit |
ae235b |
self.name_without_prefix = name
|
|
Packit |
ae235b |
name = utils.strip_dots(name)
|
|
Packit |
ae235b |
name_with_ns = utils.strip_dots(cns + '.' + name)
|
|
Packit |
ae235b |
self.camel_name = name_with_ns
|
|
Packit |
ae235b |
self.ns_upper = cns_upper
|
|
Packit |
ae235b |
self.name_lower = cns_lower + utils.camel_case_to_uscore(name)
|
|
Packit |
ae235b |
self.name_upper = utils.camel_case_to_uscore(name).upper()
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
self.name_hyphen = self.name_upper.lower().replace('_', '-')
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true':
|
|
Packit |
ae235b |
self.deprecated = True
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
for m in self.methods:
|
|
Packit |
ae235b |
m.post_process(interface_prefix, cns, cns_upper, cns_lower, self)
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
for s in self.signals:
|
|
Packit |
ae235b |
s.post_process(interface_prefix, cns, cns_upper, cns_lower, self)
|
|
Packit |
ae235b |
|
|
Packit |
ae235b |
for p in self.properties:
|
|
Packit |
ae235b |
p.post_process(interface_prefix, cns, cns_upper, cns_lower, self)
|