[virt-tools-list] [libosinfo] Properties for Product attributes

Zeeshan Ali (Khattak) zeeshanak at gnome.org
Thu Oct 20 16:22:14 UTC 2011


From: "Zeeshan Ali (Khattak)" <zeeshanak at gnome.org>

---
 osinfo/osinfo_product.c |  107 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 107 insertions(+), 0 deletions(-)

diff --git a/osinfo/osinfo_product.c b/osinfo/osinfo_product.c
index bbbcf67..0b57c90 100644
--- a/osinfo/osinfo_product.c
+++ b/osinfo/osinfo_product.c
@@ -63,6 +63,15 @@ struct _OsinfoProductProductLink {
     OsinfoProduct *otherProduct;
 };
 
+enum {
+    PROP_0,
+
+    PROP_NAME,
+    PROP_SHORT_ID,
+    PROP_VENDOR,
+    PROP_VERSION,
+};
+
 static void osinfo_product_link_free(gpointer data, gpointer opaque G_GNUC_UNUSED)
 {
     struct _OsinfoProductProductLink *link = data;
@@ -83,14 +92,112 @@ osinfo_product_finalize (GObject *object)
     G_OBJECT_CLASS (osinfo_product_parent_class)->finalize (object);
 }
 
+static void
+osinfo_product_get_property (GObject    *object,
+                             guint       property_id,
+                             GValue     *value,
+                             GParamSpec *pspec)
+{
+    OsinfoProduct *product = OSINFO_PRODUCT (object);
+
+    switch (property_id) {
+    case PROP_NAME:
+        g_value_set_string (value,
+                            osinfo_product_get_name (product));
+        break;
+
+    case PROP_SHORT_ID:
+        g_value_set_string (value,
+                            osinfo_product_get_short_id (product));
+        break;
+
+    case PROP_VENDOR:
+        g_value_set_string (value,
+                            osinfo_product_get_vendor (product));
+        break;
+
+    case PROP_VERSION:
+        g_value_set_string (value,
+                            osinfo_product_get_version (product));
+        break;
+
+    default:
+        /* We don't have any other property... */
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+        break;
+    }
+}
+
 /* Init functions */
 static void
 osinfo_product_class_init (OsinfoProductClass *klass)
 {
     GObjectClass *g_klass = G_OBJECT_CLASS (klass);
+    GParamSpec *pspec;
 
+    g_klass->get_property = osinfo_product_get_property;
     g_klass->finalize = osinfo_product_finalize;
     g_type_class_add_private (klass, sizeof (OsinfoProductPrivate));
+
+    /**
+     * OsinfoProduct::name:
+     *
+     * The name of this product.
+     */
+    pspec = g_param_spec_string ("name",
+                                 "Name",
+                                 "Name",
+                                 NULL /* default value */,
+                                 G_PARAM_READABLE |
+                                 G_PARAM_STATIC_NAME |
+                                 G_PARAM_STATIC_NICK |
+                                 G_PARAM_STATIC_BLURB);
+    g_object_class_install_property (g_klass, PROP_NAME, pspec);
+
+    /**
+     * OsinfoProduct::short-id:
+     *
+     * The short ID of this product.
+     */
+    pspec = g_param_spec_string ("short-id",
+                                 "ShortID",
+                                 "Short ID",
+                                 NULL /* default value */,
+                                 G_PARAM_READABLE |
+                                 G_PARAM_STATIC_NAME |
+                                 G_PARAM_STATIC_NICK |
+                                 G_PARAM_STATIC_BLURB);
+    g_object_class_install_property (g_klass, PROP_SHORT_ID, pspec);
+
+    /**
+     * OsinfoProduct::vendor:
+     *
+     * The Vendor of this product.
+     */
+    pspec = g_param_spec_string ("vendor",
+                                 "Vendor",
+                                 "Vendor",
+                                 NULL /* default value */,
+                                 G_PARAM_READABLE |
+                                 G_PARAM_STATIC_NAME |
+                                 G_PARAM_STATIC_NICK |
+                                 G_PARAM_STATIC_BLURB);
+    g_object_class_install_property (g_klass, PROP_VENDOR, pspec);
+
+    /**
+     * OsinfoProduct::version:
+     *
+     * The version of the product.
+     */
+    pspec = g_param_spec_string ("version",
+                                 "Version",
+                                 "Version",
+                                 NULL /* default value */,
+                                 G_PARAM_READABLE |
+                                 G_PARAM_STATIC_NAME |
+                                 G_PARAM_STATIC_NICK |
+                                 G_PARAM_STATIC_BLURB);
+    g_object_class_install_property (g_klass, PROP_VERSION, pspec);
 }
 
 static void
-- 
1.7.6.4




More information about the virt-tools-list mailing list