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

Daniel P. Berrange berrange at redhat.com
Thu Oct 20 16:48:10 UTC 2011


On Thu, Oct 20, 2011 at 07:22:14PM +0300, Zeeshan Ali (Khattak) wrote:
> 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);
>  }

ACK


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the virt-tools-list mailing list