[Libosinfo] [[PATCHv2] 1/7] Introducing OsinfoOsVariant

Christophe Fergeau cfergeau at redhat.com
Thu Nov 28 08:27:27 UTC 2013


Series looks good to me apart from the few nits mentioned here and there in
my various replies to individual patches, ACK with these addressed.

Christophe

On Thu, Nov 28, 2013 at 01:07:11AM +0000, Zeeshan Ali (Khattak) wrote:
> This is a new entity class that will represent variants of an OS. For
> example professional, enterprise and ultimate editions of Windows OSs
> and workstation and server variants of RHEL etc.
> ---
>  osinfo/Makefile.am         |   2 +
>  osinfo/libosinfo.syms      |   4 ++
>  osinfo/osinfo.h            |   1 +
>  osinfo/osinfo_os_variant.c | 158 +++++++++++++++++++++++++++++++++++++++++++++
>  osinfo/osinfo_os_variant.h |  81 +++++++++++++++++++++++
>  po/POTFILES.in             |   1 +
>  6 files changed, 247 insertions(+)
>  create mode 100644 osinfo/osinfo_os_variant.c
>  create mode 100644 osinfo/osinfo_os_variant.h
> 
> diff --git a/osinfo/Makefile.am b/osinfo/Makefile.am
> index fc87123..12ec59d 100644
> --- a/osinfo/Makefile.am
> +++ b/osinfo/Makefile.am
> @@ -90,6 +90,7 @@ OSINFO_HEADER_FILES =			\
>    osinfo_resourceslist.h		\
>    osinfo_tree.h				\
>    osinfo_treelist.h			\
> +  osinfo_os_variant.h			\
>    $(NULL)
>  
>  libosinfo_1_0_include_HEADERS =		\
> @@ -138,6 +139,7 @@ libosinfo_1_0_la_SOURCES =		\
>    osinfo_treelist.c			\
>    osinfo_db.c				\
>    osinfo_loader.c			\
> +  osinfo_os_variant.c			\
>    ignore-value.h			\
>    $(NULL)
>  
> diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms
> index fa5be4e..77b8eaa 100644
> --- a/osinfo/libosinfo.syms
> +++ b/osinfo/libosinfo.syms
> @@ -447,6 +447,10 @@ LIBOSINFO_0.2.8 {
>  LIBOSINFO_0.2.9 {
>  	osinfo_os_get_release_status;
>  	osinfo_release_status_get_type;
> +
> +	osinfo_os_variant_get_type;
> +	osinfo_os_variant_get_name;
> +	osinfo_os_variant_new;
>  } LIBOSINFO_0.2.8;
>  
>  /* Symbols in next release...
> diff --git a/osinfo/osinfo.h b/osinfo/osinfo.h
> index 0d0f3d2..0d1f66d 100644
> --- a/osinfo/osinfo.h
> +++ b/osinfo/osinfo.h
> @@ -63,6 +63,7 @@
>  #include <osinfo/osinfo_treelist.h>
>  #include <osinfo/osinfo_db.h>
>  #include <osinfo/osinfo_loader.h>
> +#include <osinfo/osinfo_os_variant.h>
>  
>  #endif
>  /*
> diff --git a/osinfo/osinfo_os_variant.c b/osinfo/osinfo_os_variant.c
> new file mode 100644
> index 0000000..e6aab40
> --- /dev/null
> +++ b/osinfo/osinfo_os_variant.c
> @@ -0,0 +1,158 @@
> +/*
> + * libosinfo: The variant of an OS
> + *
> + * Copyright (C) 2013 Red Hat, Inc.
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library. If not, see
> + * <http://www.gnu.org/licenses/>.
> + *
> + * Authors:
> + *   Zeeshan Ali <zeenix at redhat.com>
> + */
> +
> +#include <config.h>
> +
> +#include <osinfo/osinfo.h>
> +#include <glib/gi18n-lib.h>
> +
> +G_DEFINE_TYPE (OsinfoOsVariant, osinfo_os_variant, OSINFO_TYPE_ENTITY);
> +
> +#define OSINFO_OS_VARIANT_GET_PRIVATE(obj) \
> +        (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
> +                                      OSINFO_TYPE_VARIANT, \
> +                                      OsinfoOsVariantPrivate))
> +
> +/**
> + * SECTION:osinfo_os_variant
> + * @short_description: A variant of an OS
> + * @see_also: #OsinfoOs
> + *
> + * #OsinfoOsVariant is an entity representing a variant of an operating system.
> + */
> +struct _OsinfoOsVariantPrivate
> +{
> +    guint64 _unused;
> +};
> +
> +enum {
> +    PROP_0,
> +
> +    PROP_NAME
> +};
> +
> +static void
> +osinfo_os_variant_get_property (GObject    *object,
> +                                guint       property_id,
> +                                GValue     *value,
> +                                GParamSpec *pspec)
> +{
> +    OsinfoOsVariant *variant = OSINFO_OS_VARIANT (object);
> +
> +    switch (property_id) {
> +    case PROP_NAME:
> +        g_value_set_string (value,
> +                            osinfo_os_variant_get_name (variant));
> +        break;
> +
> +    default:
> +        /* We don't have any other property... */
> +        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
> +        break;
> +    }
> +}
> +
> +static void
> +osinfo_os_variant_set_property(GObject      *object,
> +                               guint         property_id,
> +                               const GValue *value,
> +                               GParamSpec   *pspec)
> +{
> +    OsinfoOsVariant *variant = OSINFO_OS_VARIANT (object);
> +
> +    switch (property_id) {
> +    case PROP_NAME:
> +        osinfo_entity_set_param (OSINFO_ENTITY(variant),
> +                                 OSINFO_OS_VARIANT_PROP_NAME,
> +                                 g_value_get_string (value));
> +        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_os_variant_class_init (OsinfoOsVariantClass *klass)
> +{
> +    GObjectClass *g_klass = G_OBJECT_CLASS (klass);
> +    GParamSpec *pspec;
> +
> +    g_klass->get_property = osinfo_os_variant_get_property;
> +    g_klass->set_property = osinfo_os_variant_set_property;
> +    g_type_class_add_private (klass, sizeof (OsinfoOsVariantPrivate));
> +
> +    /**
> +     * OsinfoOsVariant:name:
> +     *
> +     * The name to this variant.
> +     */
> +    pspec = g_param_spec_string ("name",
> +                                 "Name",
> +                                 _("The name to this variant"),
> +                                 NULL /* default value */,
> +                                 G_PARAM_READWRITE |
> +                                 G_PARAM_STATIC_STRINGS);
> +    g_object_class_install_property (g_klass, PROP_NAME, pspec);
> +}
> +
> +static void
> +osinfo_os_variant_init (OsinfoOsVariant *variant)
> +{
> +    variant->priv = OSINFO_OS_VARIANT_GET_PRIVATE(variant);
> +}
> +
> +OsinfoOsVariant *osinfo_os_variant_new(const gchar *id)
> +{
> +    OsinfoOsVariant *variant;
> +
> +    variant = g_object_new(OSINFO_TYPE_VARIANT,
> +                           "id", id,
> +                           NULL);
> +
> +    return variant;
> +}
> +
> +/**
> + * osinfo_os_variant_get_name:
> + * @variant: an #OsinfoOsVariant instance
> + *
> + * The name of the @variant
> + *
> + * Returns: (transfer none): the name, or NULL
> + */
> +const gchar *osinfo_os_variant_get_name(OsinfoOsVariant *variant)
> +{
> +    return osinfo_entity_get_param_value(OSINFO_ENTITY(variant),
> +                                         OSINFO_OS_VARIANT_PROP_NAME);
> +}
> +/*
> + * Local variables:
> + *  indent-tabs-mode: nil
> + *  c-indent-level: 4
> + *  c-basic-offset: 4
> + * End:
> + */
> diff --git a/osinfo/osinfo_os_variant.h b/osinfo/osinfo_os_variant.h
> new file mode 100644
> index 0000000..33a947f
> --- /dev/null
> +++ b/osinfo/osinfo_os_variant.h
> @@ -0,0 +1,81 @@
> +/*
> + * libosinfo: The variant of an OS
> + *
> + * Copyright (C) 2013 Red Hat, Inc.
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library. If not, see
> + * <http://www.gnu.org/licenses/>.
> + *
> + * Authors:
> + *   Zeeshan Ali <zeenix at redhat.com>
> + */
> +
> +#include <glib-object.h>
> +#include <gio/gio.h>
> +#include <osinfo/osinfo_entity.h>
> +
> +#ifndef __OSINFO_OS_VARIANT_H__
> +#define __OSINFO_OS_VARIANT_H__
> +
> +/*
> + * Type macros.
> + */
> +#define OSINFO_TYPE_VARIANT                  (osinfo_os_variant_get_type ())
> +#define OSINFO_OS_VARIANT(obj)                  (G_TYPE_CHECK_INSTANCE_CAST ((obj), OSINFO_TYPE_VARIANT, OsinfoOsVariant))
> +#define OSINFO_IS_VARIANT(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), OSINFO_TYPE_VARIANT))
> +#define OSINFO_OS_VARIANT_CLASS(klass)          (G_TYPE_CHECK_CLASS_CAST ((klass), OSINFO_TYPE_VARIANT, OsinfoOsVariantClass))
> +#define OSINFO_IS_VARIANT_CLASS(klass)       (G_TYPE_CHECK_CLASS_TYPE ((klass), OSINFO_TYPE_VARIANT))
> +#define OSINFO_OS_VARIANT_GET_CLASS(obj)        (G_TYPE_INSTANCE_GET_CLASS ((obj), OSINFO_TYPE_VARIANT, OsinfoOsVariantClass))
> +
> +typedef struct _OsinfoOsVariant        OsinfoOsVariant;
> +
> +typedef struct _OsinfoOsVariantClass   OsinfoOsVariantClass;
> +
> +typedef struct _OsinfoOsVariantPrivate OsinfoOsVariantPrivate;
> +
> +#define OSINFO_OS_VARIANT_PROP_NAME "name"
> +
> +/* object */
> +struct _OsinfoOsVariant
> +{
> +    OsinfoEntity parent_instance;
> +
> +    /* public */
> +
> +    /* private */
> +    OsinfoOsVariantPrivate *priv;
> +};
> +
> +/* class */
> +struct _OsinfoOsVariantClass
> +{
> +    /*< private >*/
> +    OsinfoEntityClass parent_class;
> +
> +    /* class members */
> +};
> +
> +GType osinfo_os_variant_get_type(void);
> +
> +OsinfoOsVariant *osinfo_os_variant_new(const gchar *id);
> +const gchar *osinfo_os_variant_get_name(OsinfoOsVariant *variant);
> +
> +#endif /* __OSINFO_OS_VARIANT_H__ */
> +/*
> + * Local variables:
> + *  indent-tabs-mode: nil
> + *  c-indent-level: 4
> + *  c-basic-offset: 4
> + * End:
> + */
> diff --git a/po/POTFILES.in b/po/POTFILES.in
> index 8cbabed..a1a551f 100644
> --- a/po/POTFILES.in
> +++ b/po/POTFILES.in
> @@ -41,6 +41,7 @@ osinfo/osinfo_os.c
>  osinfo/osinfo_product.c
>  osinfo/osinfo_resources.c
>  osinfo/osinfo_tree.c
> +osinfo/osinfo_os_variant.c
>  tools/osinfo-db-validate.c
>  tools/osinfo-detect.c
>  tools/osinfo-install-script.c
> -- 
> 1.8.4.2
> 
> _______________________________________________
> Libosinfo mailing list
> Libosinfo at redhat.com
> https://www.redhat.com/mailman/listinfo/libosinfo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libosinfo/attachments/20131128/162f41c9/attachment.sig>


More information about the Libosinfo mailing list