gdbus: Add properties into Introspectable interface
authorLucas De Marchi <lucas.demarchi@profusion.mobi>
Thu, 4 Oct 2012 07:26:31 +0000 (04:26 -0300)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 26 Nov 2012 13:44:48 +0000 (14:44 +0100)
gdbus/object.c

index 7378523..662ebe3 100644 (file)
@@ -95,6 +95,7 @@ static void generate_interface_xml(GString *gstr, struct interface_data *iface)
 {
        const GDBusMethodTable *method;
        const GDBusSignalTable *signal;
+       const GDBusPropertyTable *property;
 
        for (method = iface->methods; method && method->name; method++) {
                gboolean deprecated = method->flags &
@@ -147,6 +148,24 @@ static void generate_interface_xml(GString *gstr, struct interface_data *iface)
                        g_string_append_printf(gstr, "\t\t</signal>\n");
                }
        }
+
+       for (property = iface->properties; property && property->name;
+                                                               property++) {
+               gboolean deprecated = property->flags &
+                                       G_DBUS_PROPERTY_FLAG_DEPRECATED;
+
+               g_string_append_printf(gstr, "\t\t<property name=\"%s\""
+                                       " type=\"%s\" access=\"%s%s\"",
+                                       property->name, property->type,
+                                       property->get ? "read" : "",
+                                       property->set ? "write" : "");
+
+               if (!deprecated)
+                       g_string_append_printf(gstr, "/>\n");
+               else
+                       g_string_append_printf(gstr,
+                               G_DBUS_ANNOTATE_DEPRECATED(">\n\t\t\t"));
+       }
 }
 
 static void generate_introspection_xml(DBusConnection *conn,