[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