/* cute-thing.c */

/* insert (c)/licensing information) */

#include "cute-thing.h"
/* include other impl specific header files */

/* 'private'/'protected' functions */
static void cute_thing_class_init (CuteThingClass *klass);
static void cute_thing_init       (CuteThing *obj);
static void cute_thing_finalize   (GObject *obj);
/* list my signals  */
enum {
	/* MY_SIGNAL_1, */
	/* MY_SIGNAL_2, */
	LAST_SIGNAL
};

typedef struct _CuteThingPrivate CuteThingPrivate;
struct _CuteThingPrivate {
	/* my private members go here, eg. */
	/* gboolean frobnicate_mode; */
};
#define CUTE_THING_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
                                        CUTE_TYPE_THING, \
                                        CuteThingPrivate))
/* globals */
static GObjectClass *parent_class = NULL;

/* uncomment the following if you have defined any signals */
/* static guint signals[LAST_SIGNAL] = {0}; */

GType
cute_thing_get_type (void)
{
	static GType my_type = 0;
	if (!my_type) {
		static const GTypeInfo my_info = {
			sizeof(CuteThingClass),
			NULL,		/* base init */
			NULL,		/* base finalize */
			(GClassInitFunc) cute_thing_class_init,
			NULL,		/* class finalize */
			NULL,		/* class data */
			sizeof(CuteThing),
			1,		/* n_preallocs */
			(GInstanceInitFunc) cute_thing_init,
			NULL
		};
		my_type = g_type_register_static (G_TYPE_OBJECT,
		                                  "CuteThing",
		                                  &my_info, 0);
	}
	return my_type;
}

static void
cute_thing_class_init (CuteThingClass *klass)
{
	GObjectClass *gobject_class;
	gobject_class = (GObjectClass*) klass;

	parent_class            = g_type_class_peek_parent (klass);
	gobject_class->finalize = cute_thing_finalize;

	g_type_class_add_private (gobject_class, sizeof(CuteThingPrivate));

	/* signal definitions go here, e.g.: */
/* 	signals[MY_SIGNAL_1] = */
/* 		g_signal_new ("my_signal_1",....); */
/* 	signals[MY_SIGNAL_2] = */
/* 		g_signal_new ("my_signal_2",....); */
/* 	etc. */
}

static void
cute_thing_init (CuteThing *obj)
{
/* uncomment the following if you init any of the private data */
/* 	CuteThingPrivate *priv = CUTE_THING_GET_PRIVATE(obj); */

/* 	initialize this object, eg.: */
/* 	priv->frobnicate_mode = FALSE; */
}

static void
cute_thing_finalize (GObject *obj)
{
/* 	free/unref instance resources here */
	G_OBJECT_CLASS(parent_class)->finalize (obj);
}

CuteThing*
cute_thing_new (void)
{
	return CUTE_THING(g_object_new(CUTE_TYPE_THING, NULL));
}

/* insert many other interesting function implementations */
/* such as cute_thing_do_something, or cute_thing_has_foo */

