[Libosinfo] [[PATCHv2] 2/7] Introducing OsinfoOsVariantList

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


On Thu, Nov 28, 2013 at 01:07:12AM +0000, Zeeshan Ali (Khattak) wrote:
> Just a OsinfoList subclass that is meant to contain Variant objects.
> ---
>  osinfo/Makefile.am             |  2 +
>  osinfo/libosinfo.syms          |  3 ++
>  osinfo/osinfo.h                |  1 +
>  osinfo/osinfo_os_variantlist.c | 89 ++++++++++++++++++++++++++++++++++++++++++
>  osinfo/osinfo_os_variantlist.h | 76 ++++++++++++++++++++++++++++++++++++
>  5 files changed, 171 insertions(+)
>  create mode 100644 osinfo/osinfo_os_variantlist.c
>  create mode 100644 osinfo/osinfo_os_variantlist.h
> 
> diff --git a/osinfo/Makefile.am b/osinfo/Makefile.am
> index 12ec59d..e969f45 100644
> --- a/osinfo/Makefile.am
> +++ b/osinfo/Makefile.am
> @@ -91,6 +91,7 @@ OSINFO_HEADER_FILES =			\
>    osinfo_tree.h				\
>    osinfo_treelist.h			\
>    osinfo_os_variant.h			\
> +  osinfo_os_variantlist.h		\
>    $(NULL)
>  
>  libosinfo_1_0_include_HEADERS =		\
> @@ -140,6 +141,7 @@ libosinfo_1_0_la_SOURCES =		\
>    osinfo_db.c				\
>    osinfo_loader.c			\
>    osinfo_os_variant.c			\
> +  osinfo_os_variantlist.c		\
>    ignore-value.h			\
>    $(NULL)
>  
> diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms
> index 77b8eaa..9fdce6b 100644
> --- a/osinfo/libosinfo.syms
> +++ b/osinfo/libosinfo.syms
> @@ -451,6 +451,9 @@ LIBOSINFO_0.2.9 {
>  	osinfo_os_variant_get_type;
>  	osinfo_os_variant_get_name;
>  	osinfo_os_variant_new;
> +
> +	osinfo_os_variantlist_get_type;
> +	osinfo_os_variantlist_new;
>  } LIBOSINFO_0.2.8;
>  
>  /* Symbols in next release...
> diff --git a/osinfo/osinfo.h b/osinfo/osinfo.h
> index 0d1f66d..cf287f2 100644
> --- a/osinfo/osinfo.h
> +++ b/osinfo/osinfo.h
> @@ -64,6 +64,7 @@
>  #include <osinfo/osinfo_db.h>
>  #include <osinfo/osinfo_loader.h>
>  #include <osinfo/osinfo_os_variant.h>
> +#include <osinfo/osinfo_os_variantlist.h>
>  
>  #endif
>  /*
> diff --git a/osinfo/osinfo_os_variantlist.c b/osinfo/osinfo_os_variantlist.c
> new file mode 100644
> index 0000000..6b6046e
> --- /dev/null
> +++ b/osinfo/osinfo_os_variantlist.c
> @@ -0,0 +1,89 @@
> +/*
> + * libosinfo: a list of OS variants
> + *
> + * 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>
> +
> +G_DEFINE_TYPE (OsinfoOsVariantList, osinfo_os_variantlist, OSINFO_TYPE_LIST);
> +
> +#define OSINFO_OS_VARIANTLIST_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), OSINFO_TYPE_VARIANTLIST, OsinfoOsVariantListPrivate))
> +
> +/**
> + * SECTION:osinfo_os_variantlist
> + * @short_description: A list of OS variants
> + * @see_also: #OsinfoList, #OsinfoOsVariant
> + *
> + * #OsinfoOsVariantList is a list specialization that stores
> + * only #OsinfoOsVariant objects.
> + */
> +
> +struct _OsinfoOsVariantListPrivate
> +{
> +    gboolean unused;
> +};
> +
> +static void
> +osinfo_os_variantlist_finalize (GObject *object)
> +{
> +    /* Chain up to the parent class */
> +    G_OBJECT_CLASS (osinfo_os_variantlist_parent_class)->finalize (object);
> +}

You probably don't need to override it if you only chain up to the parent
class

> +
> +/* Init functions */
> +static void
> +osinfo_os_variantlist_class_init (OsinfoOsVariantListClass *klass)
> +{
> +    GObjectClass *g_klass = G_OBJECT_CLASS (klass);
> +
> +    g_klass->finalize = osinfo_os_variantlist_finalize;
> +    g_type_class_add_private (klass, sizeof (OsinfoOsVariantListPrivate));
> +}
> +
> +static void
> +osinfo_os_variantlist_init (OsinfoOsVariantList *list)
> +{
> +    list->priv = OSINFO_OS_VARIANTLIST_GET_PRIVATE(list);
> +}
> +
> +/**
> + * osinfo_os_variantlist_new:
> + *
> + * Construct a new install_variant list that is initially empty.
> + *
> + * Returns: (transfer full): an empty install_variant list
> + */
> +OsinfoOsVariantList *osinfo_os_variantlist_new(void)
> +{
> +    return g_object_new(OSINFO_TYPE_VARIANTLIST,
> +                        "element-type", OSINFO_TYPE_VARIANT,
> +                        NULL);
> +}
> +
> +/*
> + * Local variables:
> + *  indent-tabs-mode: nil
> + *  c-indent-level: 4
> + *  c-basic-offset: 4
> + * End:
> + */
> diff --git a/osinfo/osinfo_os_variantlist.h b/osinfo/osinfo_os_variantlist.h
> new file mode 100644
> index 0000000..ef4cc71
> --- /dev/null
> +++ b/osinfo/osinfo_os_variantlist.h
> @@ -0,0 +1,76 @@
> +/*
> + * libosinfo: a list of OS variants
> + *
> + * 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 <osinfo/osinfo_list.h>
> +
> +#ifndef __OSINFO_OS_VARIANTLIST_H__
> +#define __OSINFO_OS_VARIANTLIST_H__
> +
> +/*
> + * Type macros.
> + */
> +#define OSINFO_TYPE_VARIANTLIST                  (osinfo_os_variantlist_get_type ())
> +#define OSINFO_OS_VARIANTLIST(obj)                  (G_TYPE_CHECK_INSTANCE_CAST ((obj), OSINFO_TYPE_VARIANTLIST, OsinfoOsVariantList))
> +#define OSINFO_IS_VARIANTLIST(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), OSINFO_TYPE_VARIANTLIST))
> +#define OSINFO_OS_VARIANTLIST_CLASS(klass)          (G_TYPE_CHECK_CLASS_CAST ((klass), OSINFO_TYPE_VARIANTLIST, OsinfoOsVariantListClass))
> +#define OSINFO_IS_VARIANTLIST_CLASS(klass)       (G_TYPE_CHECK_CLASS_TYPE ((klass), OSINFO_TYPE_VARIANTLIST))
> +#define OSINFO_OS_VARIANTLIST_GET_CLASS(obj)        (G_TYPE_INSTANCE_GET_CLASS ((obj), OSINFO_TYPE_VARIANTLIST, OsinfoOsVariantListClass))

These macros seem to suffered during the Osinfo->OsinfoOs renaming.

> +
> +typedef struct _OsinfoOsVariantList        OsinfoOsVariantList;
> +
> +typedef struct _OsinfoOsVariantListClass   OsinfoOsVariantListClass;
> +
> +typedef struct _OsinfoOsVariantListPrivate OsinfoOsVariantListPrivate;
> +
> +/* object */
> +struct _OsinfoOsVariantList
> +{
> +    OsinfoList parent_instance;
> +
> +    /* public */
> +
> +    /* private */
> +    OsinfoOsVariantListPrivate *priv;
> +};
> +
> +/* class */
> +struct _OsinfoOsVariantListClass
> +{
> +    OsinfoListClass parent_class;
> +
> +    /* class members */
> +};
> +
> +GType osinfo_os_variantlist_get_type(void);
> +
> +OsinfoOsVariantList *osinfo_os_variantlist_new(void);
> +
> +#endif /* __OSINFO_OS_VARIANTLIST_H__ */
> +/*
> + * Local variables:
> + *  indent-tabs-mode: nil
> + *  c-indent-level: 4
> + *  c-basic-offset: 4
> + * End:
> + */
> -- 
> 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/72c3e919/attachment.sig>


More information about the Libosinfo mailing list