mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-11-20 17:37:30 +01:00
gdbus-codegen: Allow extensions to override the InterfaceSkeleton type
The libdex gdbus-codegen extension will use a GDBusInterfaceSkeleton subtype to dispatch method calls in a fiber.
This commit is contained in:
committed by
Philip Withnall
parent
4405fe5fc8
commit
47a109c241
@@ -144,6 +144,7 @@ class HeaderCodeGenerator:
|
|||||||
self.glib_min_required = glib_min_required
|
self.glib_min_required = glib_min_required
|
||||||
self.symbol_decorator = symbol_decorator
|
self.symbol_decorator = symbol_decorator
|
||||||
self.symbol_decorator_header = symbol_decorator_header
|
self.symbol_decorator_header = symbol_decorator_header
|
||||||
|
self.skeleton_type_camel = "GDBusInterfaceSkeleton"
|
||||||
self.outfile = outfile
|
self.outfile = outfile
|
||||||
self.ext = ExtensionHeaderCodeGenerator(ext, self)
|
self.ext = ExtensionHeaderCodeGenerator(ext, self)
|
||||||
|
|
||||||
@@ -643,13 +644,13 @@ class HeaderCodeGenerator:
|
|||||||
self.outfile.write("struct _%sSkeleton\n" % (i.camel_name))
|
self.outfile.write("struct _%sSkeleton\n" % (i.camel_name))
|
||||||
self.outfile.write("{\n")
|
self.outfile.write("{\n")
|
||||||
self.outfile.write(" /*< private >*/\n")
|
self.outfile.write(" /*< private >*/\n")
|
||||||
self.outfile.write(" GDBusInterfaceSkeleton parent_instance;\n")
|
self.outfile.write(" %s parent_instance;\n" % self.skeleton_type_camel)
|
||||||
self.outfile.write(" %sSkeletonPrivate *priv;\n" % (i.camel_name))
|
self.outfile.write(" %sSkeletonPrivate *priv;\n" % (i.camel_name))
|
||||||
self.outfile.write("};\n")
|
self.outfile.write("};\n")
|
||||||
self.outfile.write("\n")
|
self.outfile.write("\n")
|
||||||
self.outfile.write("struct _%sSkeletonClass\n" % (i.camel_name))
|
self.outfile.write("struct _%sSkeletonClass\n" % (i.camel_name))
|
||||||
self.outfile.write("{\n")
|
self.outfile.write("{\n")
|
||||||
self.outfile.write(" GDBusInterfaceSkeletonClass parent_class;\n")
|
self.outfile.write(" %sClass parent_class;\n" % self.skeleton_type_camel)
|
||||||
self.outfile.write("};\n")
|
self.outfile.write("};\n")
|
||||||
self.outfile.write("\n")
|
self.outfile.write("\n")
|
||||||
if self.symbol_decorator is not None:
|
if self.symbol_decorator is not None:
|
||||||
@@ -1521,6 +1522,7 @@ class CodeGenerator:
|
|||||||
self.docbook_gen = docbook_gen
|
self.docbook_gen = docbook_gen
|
||||||
self.glib_min_required = glib_min_required
|
self.glib_min_required = glib_min_required
|
||||||
self.symbol_decoration_define = symbol_decoration_define
|
self.symbol_decoration_define = symbol_decoration_define
|
||||||
|
self.skeleton_type_upper = "G_TYPE_DBUS_INTERFACE_SKELETON"
|
||||||
self.outfile = outfile
|
self.outfile = outfile
|
||||||
self.marshallers = set()
|
self.marshallers = set()
|
||||||
self.ext = ExtensionCodeGenerator(ext, self)
|
self.ext = ExtensionCodeGenerator(ext, self)
|
||||||
@@ -4147,8 +4149,8 @@ class CodeGenerator:
|
|||||||
|
|
||||||
self.outfile.write("#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n")
|
self.outfile.write("#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n")
|
||||||
self.outfile.write(
|
self.outfile.write(
|
||||||
"G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,\n"
|
"G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton, %s,\n"
|
||||||
% (i.camel_name, i.name_lower)
|
% (i.camel_name, i.name_lower, self.skeleton_type_upper)
|
||||||
)
|
)
|
||||||
self.outfile.write(
|
self.outfile.write(
|
||||||
" G_ADD_PRIVATE (%sSkeleton)\n" % (i.camel_name)
|
" G_ADD_PRIVATE (%sSkeleton)\n" % (i.camel_name)
|
||||||
@@ -4159,8 +4161,8 @@ class CodeGenerator:
|
|||||||
)
|
)
|
||||||
self.outfile.write("#else\n")
|
self.outfile.write("#else\n")
|
||||||
self.outfile.write(
|
self.outfile.write(
|
||||||
"G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,\n"
|
"G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton, %s,\n"
|
||||||
% (i.camel_name, i.name_lower)
|
% (i.camel_name, i.name_lower, self.skeleton_type_upper)
|
||||||
)
|
)
|
||||||
self.outfile.write(
|
self.outfile.write(
|
||||||
" G_IMPLEMENT_INTERFACE (%sTYPE_%s, %s_skeleton_iface_init))\n\n"
|
" G_IMPLEMENT_INTERFACE (%sTYPE_%s, %s_skeleton_iface_init))\n\n"
|
||||||
|
|||||||
Reference in New Issue
Block a user