/* AlternateSets.c generated by valac 0.56.17, the Vala compiler
 * generated from AlternateSets.vala, do not modify */

/*
Copyright (C) 2015 Johan Mattsson

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 3 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.
*/

#include "birdfont.h"
#include <glib-object.h>
#include <glib.h>
#include <gee.h>
#include <stdlib.h>
#include <string.h>

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif

enum  {
	BIRD_FONT_ALTERNATE_SETS_0_PROPERTY,
	BIRD_FONT_ALTERNATE_SETS_NUM_PROPERTIES
};
static GParamSpec* bird_font_alternate_sets_properties[BIRD_FONT_ALTERNATE_SETS_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
enum  {
	BIRD_FONT_ALTERNATE_ITEM_0_PROPERTY,
	BIRD_FONT_ALTERNATE_ITEM_NUM_PROPERTIES
};
static GParamSpec* bird_font_alternate_item_properties[BIRD_FONT_ALTERNATE_ITEM_NUM_PROPERTIES];

static gpointer bird_font_alternate_sets_parent_class = NULL;
static gpointer bird_font_alternate_item_parent_class = NULL;

static gint __lambda68_ (BirdFontAlternateSets* self,
                  const gchar* a,
                  const gchar* b);
static gint ___lambda68__gcompare_data_func (gconstpointer a,
                                      gconstpointer b,
                                      gpointer self);
static void bird_font_alternate_sets_finalize (GObject * obj);
static GType bird_font_alternate_sets_get_type_once (void);
static void bird_font_alternate_item_finalize (GObject * obj);
static GType bird_font_alternate_item_get_type_once (void);

BirdFontAlternateSets*
bird_font_alternate_sets_construct (GType object_type)
{
	BirdFontAlternateSets * self = NULL;
	GeeArrayList* _tmp0_;
	self = (BirdFontAlternateSets*) g_object_new (object_type, NULL);
	_tmp0_ = gee_array_list_new (BIRD_FONT_TYPE_ALTERNATE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
	_g_object_unref0 (self->alternates);
	self->alternates = _tmp0_;
	return self;
}

BirdFontAlternateSets*
bird_font_alternate_sets_new (void)
{
	return bird_font_alternate_sets_construct (BIRD_FONT_TYPE_ALTERNATE_SETS);
}

static gint
__lambda68_ (BirdFontAlternateSets* self,
             const gchar* a,
             const gchar* b)
{
	GCompareFunc _tmp0_;
	gint result;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	_tmp0_ = ((GCompareFunc) g_strcmp0);
	result = _tmp0_ ((const gchar*) a, (const gchar*) b);
	return result;
}

static gint
___lambda68__gcompare_data_func (gconstpointer a,
                                 gconstpointer b,
                                 gpointer self)
{
	gint result;
	result = __lambda68_ ((BirdFontAlternateSets*) self, (const gchar*) a, (const gchar*) b);
	return result;
}

GeeArrayList*
bird_font_alternate_sets_get_all_tags (BirdFontAlternateSets* self)
{
	GeeArrayList* tags = NULL;
	GeeArrayList* _tmp0_;
	GeeArrayList* _tmp15_;
	GeeArrayList* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
	_g_object_unref0 (tags);
	tags = _tmp0_;
	{
		GeeArrayList* _a_list = NULL;
		GeeArrayList* _tmp1_;
		gint _a_size = 0;
		GeeArrayList* _tmp2_;
		gint _tmp3_;
		gint _tmp4_;
		gint _a_index = 0;
		_tmp1_ = self->alternates;
		_a_list = _tmp1_;
		_tmp2_ = _a_list;
		_tmp3_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp2_);
		_tmp4_ = _tmp3_;
		_a_size = _tmp4_;
		_a_index = -1;
		while (TRUE) {
			gint _tmp5_;
			gint _tmp6_;
			BirdFontAlternate* a = NULL;
			GeeArrayList* _tmp7_;
			gpointer _tmp8_;
			GeeArrayList* _tmp9_;
			BirdFontAlternate* _tmp10_;
			const gchar* _tmp11_;
			_a_index = _a_index + 1;
			_tmp5_ = _a_index;
			_tmp6_ = _a_size;
			if (!(_tmp5_ < _tmp6_)) {
				break;
			}
			_tmp7_ = _a_list;
			_tmp8_ = gee_abstract_list_get ((GeeAbstractList*) _tmp7_, _a_index);
			a = (BirdFontAlternate*) _tmp8_;
			_tmp9_ = tags;
			_tmp10_ = a;
			_tmp11_ = _tmp10_->tag;
			if (gee_abstract_list_index_of ((GeeAbstractList*) _tmp9_, _tmp11_) == -1) {
				GeeArrayList* _tmp12_;
				BirdFontAlternate* _tmp13_;
				const gchar* _tmp14_;
				_tmp12_ = tags;
				_tmp13_ = a;
				_tmp14_ = _tmp13_->tag;
				gee_abstract_collection_add ((GeeAbstractCollection*) _tmp12_, _tmp14_);
			}
			_g_object_unref0 (a);
		}
	}
	_tmp15_ = tags;
	gee_list_sort ((GeeList*) _tmp15_, ___lambda68__gcompare_data_func, g_object_ref (self), g_object_unref);
	result = tags;
	return result;
}

GeeArrayList*
bird_font_alternate_sets_get_alt (BirdFontAlternateSets* self,
                                  const gchar* tag)
{
	GeeArrayList* alt = NULL;
	GeeArrayList* _tmp0_;
	GeeArrayList* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (tag != NULL, NULL);
	_tmp0_ = gee_array_list_new (BIRD_FONT_TYPE_ALTERNATE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
	_g_object_unref0 (alt);
	alt = _tmp0_;
	{
		GeeArrayList* _a_list = NULL;
		GeeArrayList* _tmp1_;
		gint _a_size = 0;
		GeeArrayList* _tmp2_;
		gint _tmp3_;
		gint _tmp4_;
		gint _a_index = 0;
		_tmp1_ = self->alternates;
		_a_list = _tmp1_;
		_tmp2_ = _a_list;
		_tmp3_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp2_);
		_tmp4_ = _tmp3_;
		_a_size = _tmp4_;
		_a_index = -1;
		while (TRUE) {
			gint _tmp5_;
			gint _tmp6_;
			BirdFontAlternate* a = NULL;
			GeeArrayList* _tmp7_;
			gpointer _tmp8_;
			gboolean _tmp9_ = FALSE;
			BirdFontAlternate* _tmp10_;
			const gchar* _tmp11_;
			_a_index = _a_index + 1;
			_tmp5_ = _a_index;
			_tmp6_ = _a_size;
			if (!(_tmp5_ < _tmp6_)) {
				break;
			}
			_tmp7_ = _a_list;
			_tmp8_ = gee_abstract_list_get ((GeeAbstractList*) _tmp7_, _a_index);
			a = (BirdFontAlternate*) _tmp8_;
			_tmp10_ = a;
			_tmp11_ = _tmp10_->tag;
			if (g_strcmp0 (_tmp11_, tag) == 0) {
				BirdFontAlternate* _tmp12_;
				GeeArrayList* _tmp13_;
				gint _tmp14_;
				gint _tmp15_;
				_tmp12_ = a;
				_tmp13_ = _tmp12_->alternates;
				_tmp14_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp13_);
				_tmp15_ = _tmp14_;
				_tmp9_ = _tmp15_ > 0;
			} else {
				_tmp9_ = FALSE;
			}
			if (_tmp9_) {
				GeeArrayList* _tmp16_;
				BirdFontAlternate* _tmp17_;
				_tmp16_ = alt;
				_tmp17_ = a;
				gee_abstract_collection_add ((GeeAbstractCollection*) _tmp16_, _tmp17_);
			}
			_g_object_unref0 (a);
		}
	}
	result = alt;
	return result;
}

GeeArrayList*
bird_font_alternate_sets_get_alt_with_glyph (BirdFontAlternateSets* self,
                                             const gchar* tag,
                                             BirdFontFont* font)
{
	GeeArrayList* alt = NULL;
	GeeArrayList* _tmp0_;
	GeeArrayList* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (tag != NULL, NULL);
	g_return_val_if_fail (font != NULL, NULL);
	_tmp0_ = gee_array_list_new (BIRD_FONT_TYPE_ALTERNATE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
	_g_object_unref0 (alt);
	alt = _tmp0_;
	{
		GeeArrayList* _a_list = NULL;
		GeeArrayList* _tmp1_;
		gint _a_size = 0;
		GeeArrayList* _tmp2_;
		gint _tmp3_;
		gint _tmp4_;
		gint _a_index = 0;
		_tmp1_ = self->alternates;
		_a_list = _tmp1_;
		_tmp2_ = _a_list;
		_tmp3_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp2_);
		_tmp4_ = _tmp3_;
		_a_size = _tmp4_;
		_a_index = -1;
		while (TRUE) {
			gint _tmp5_;
			gint _tmp6_;
			BirdFontAlternate* a = NULL;
			GeeArrayList* _tmp7_;
			gpointer _tmp8_;
			BirdFontAlternate* available = NULL;
			BirdFontAlternate* _tmp9_;
			const gchar* _tmp10_;
			BirdFontAlternate* _tmp11_;
			const gchar* _tmp12_;
			BirdFontAlternate* _tmp13_;
			gboolean _tmp27_ = FALSE;
			BirdFontAlternate* _tmp28_;
			const gchar* _tmp29_;
			_a_index = _a_index + 1;
			_tmp5_ = _a_index;
			_tmp6_ = _a_size;
			if (!(_tmp5_ < _tmp6_)) {
				break;
			}
			_tmp7_ = _a_list;
			_tmp8_ = gee_abstract_list_get ((GeeAbstractList*) _tmp7_, _a_index);
			a = (BirdFontAlternate*) _tmp8_;
			_tmp9_ = a;
			_tmp10_ = _tmp9_->glyph_name;
			_tmp11_ = a;
			_tmp12_ = _tmp11_->tag;
			_tmp13_ = bird_font_alternate_new (_tmp10_, _tmp12_);
			available = _tmp13_;
			{
				GeeArrayList* _substitution_list = NULL;
				BirdFontAlternate* _tmp14_;
				GeeArrayList* _tmp15_;
				gint _substitution_size = 0;
				GeeArrayList* _tmp16_;
				gint _tmp17_;
				gint _tmp18_;
				gint _substitution_index = 0;
				_tmp14_ = a;
				_tmp15_ = _tmp14_->alternates;
				_substitution_list = _tmp15_;
				_tmp16_ = _substitution_list;
				_tmp17_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp16_);
				_tmp18_ = _tmp17_;
				_substitution_size = _tmp18_;
				_substitution_index = -1;
				while (TRUE) {
					gint _tmp19_;
					gint _tmp20_;
					gchar* substitution = NULL;
					GeeArrayList* _tmp21_;
					gpointer _tmp22_;
					const gchar* _tmp23_;
					_substitution_index = _substitution_index + 1;
					_tmp19_ = _substitution_index;
					_tmp20_ = _substitution_size;
					if (!(_tmp19_ < _tmp20_)) {
						break;
					}
					_tmp21_ = _substitution_list;
					_tmp22_ = gee_abstract_list_get ((GeeAbstractList*) _tmp21_, _substitution_index);
					substitution = (gchar*) _tmp22_;
					_tmp23_ = substitution;
					if (bird_font_font_has_glyph (font, _tmp23_)) {
						BirdFontAlternate* _tmp24_;
						GeeArrayList* _tmp25_;
						const gchar* _tmp26_;
						_tmp24_ = available;
						_tmp25_ = _tmp24_->alternates;
						_tmp26_ = substitution;
						gee_abstract_collection_add ((GeeAbstractCollection*) _tmp25_, _tmp26_);
					}
					_g_free0 (substitution);
				}
			}
			_tmp28_ = available;
			_tmp29_ = _tmp28_->tag;
			if (g_strcmp0 (_tmp29_, tag) == 0) {
				BirdFontAlternate* _tmp30_;
				GeeArrayList* _tmp31_;
				gint _tmp32_;
				gint _tmp33_;
				_tmp30_ = available;
				_tmp31_ = _tmp30_->alternates;
				_tmp32_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp31_);
				_tmp33_ = _tmp32_;
				_tmp27_ = _tmp33_ > 0;
			} else {
				_tmp27_ = FALSE;
			}
			if (_tmp27_) {
				BirdFontAlternate* _tmp34_;
				const gchar* _tmp35_;
				_tmp34_ = available;
				_tmp35_ = _tmp34_->glyph_name;
				if (bird_font_font_has_glyph (font, _tmp35_)) {
					GeeArrayList* _tmp36_;
					BirdFontAlternate* _tmp37_;
					_tmp36_ = alt;
					_tmp37_ = available;
					gee_abstract_collection_add ((GeeAbstractCollection*) _tmp36_, _tmp37_);
				}
			}
			_g_object_unref0 (available);
			_g_object_unref0 (a);
		}
	}
	result = alt;
	return result;
}

void
bird_font_alternate_sets_remove_empty_sets (BirdFontAlternateSets* self)
{
	gint i = 0;
	g_return_if_fail (self != NULL);
	i = 0;
	{
		GeeArrayList* _a_list = NULL;
		GeeArrayList* _tmp0_;
		gint _a_size = 0;
		GeeArrayList* _tmp1_;
		gint _tmp2_;
		gint _tmp3_;
		gint _a_index = 0;
		_tmp0_ = self->alternates;
		_a_list = _tmp0_;
		_tmp1_ = _a_list;
		_tmp2_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp1_);
		_tmp3_ = _tmp2_;
		_a_size = _tmp3_;
		_a_index = -1;
		while (TRUE) {
			gint _tmp4_;
			gint _tmp5_;
			BirdFontAlternate* a = NULL;
			GeeArrayList* _tmp6_;
			gpointer _tmp7_;
			BirdFontAlternate* _tmp8_;
			gint _tmp12_;
			_a_index = _a_index + 1;
			_tmp4_ = _a_index;
			_tmp5_ = _a_size;
			if (!(_tmp4_ < _tmp5_)) {
				break;
			}
			_tmp6_ = _a_list;
			_tmp7_ = gee_abstract_list_get ((GeeAbstractList*) _tmp6_, _a_index);
			a = (BirdFontAlternate*) _tmp7_;
			_tmp8_ = a;
			if (bird_font_alternate_is_empty (_tmp8_)) {
				GeeArrayList* _tmp9_;
				gpointer _tmp10_;
				BirdFontAlternate* _tmp11_;
				_tmp9_ = self->alternates;
				_tmp10_ = gee_abstract_list_remove_at ((GeeAbstractList*) _tmp9_, i);
				_tmp11_ = (BirdFontAlternate*) _tmp10_;
				_g_object_unref0 (_tmp11_);
				bird_font_alternate_sets_remove_empty_sets (self);
				_g_object_unref0 (a);
				return;
			}
			_tmp12_ = i;
			i = _tmp12_ + 1;
			_g_object_unref0 (a);
		}
	}
}

void
bird_font_alternate_sets_add (BirdFontAlternateSets* self,
                              BirdFontAlternate* alternate)
{
	GeeArrayList* _tmp0_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (alternate != NULL);
	_tmp0_ = self->alternates;
	gee_abstract_collection_add ((GeeAbstractCollection*) _tmp0_, alternate);
}

BirdFontAlternateSets*
bird_font_alternate_sets_copy (BirdFontAlternateSets* self)
{
	BirdFontAlternateSets* n = NULL;
	BirdFontAlternateSets* _tmp0_;
	BirdFontAlternateSets* result;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = bird_font_alternate_sets_new ();
	n = _tmp0_;
	{
		GeeArrayList* _a_list = NULL;
		GeeArrayList* _tmp1_;
		gint _a_size = 0;
		GeeArrayList* _tmp2_;
		gint _tmp3_;
		gint _tmp4_;
		gint _a_index = 0;
		_tmp1_ = self->alternates;
		_a_list = _tmp1_;
		_tmp2_ = _a_list;
		_tmp3_ = gee_abstract_collection_get_size ((GeeAbstractCollection*) _tmp2_);
		_tmp4_ = _tmp3_;
		_a_size = _tmp4_;
		_a_index = -1;
		while (TRUE) {
			gint _tmp5_;
			gint _tmp6_;
			BirdFontAlternate* a = NULL;
			GeeArrayList* _tmp7_;
			gpointer _tmp8_;
			BirdFontAlternateSets* _tmp9_;
			GeeArrayList* _tmp10_;
			BirdFontAlternate* _tmp11_;
			BirdFontAlternate* _tmp12_;
			BirdFontAlternate* _tmp13_;
			_a_index = _a_index + 1;
			_tmp5_ = _a_index;
			_tmp6_ = _a_size;
			if (!(_tmp5_ < _tmp6_)) {
				break;
			}
			_tmp7_ = _a_list;
			_tmp8_ = gee_abstract_list_get ((GeeAbstractList*) _tmp7_, _a_index);
			a = (BirdFontAlternate*) _tmp8_;
			_tmp9_ = n;
			_tmp10_ = _tmp9_->alternates;
			_tmp11_ = a;
			_tmp12_ = bird_font_alternate_copy (_tmp11_);
			_tmp13_ = _tmp12_;
			gee_abstract_collection_add ((GeeAbstractCollection*) _tmp10_, _tmp13_);
			_g_object_unref0 (_tmp13_);
			_g_object_unref0 (a);
		}
	}
	result = n;
	return result;
}

static void
bird_font_alternate_sets_class_init (BirdFontAlternateSetsClass * klass,
                                     gpointer klass_data)
{
	bird_font_alternate_sets_parent_class = g_type_class_peek_parent (klass);
	G_OBJECT_CLASS (klass)->finalize = bird_font_alternate_sets_finalize;
}

static void
bird_font_alternate_sets_instance_init (BirdFontAlternateSets * self,
                                        gpointer klass)
{
}

static void
bird_font_alternate_sets_finalize (GObject * obj)
{
	BirdFontAlternateSets * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, BIRD_FONT_TYPE_ALTERNATE_SETS, BirdFontAlternateSets);
	_g_object_unref0 (self->alternates);
	G_OBJECT_CLASS (bird_font_alternate_sets_parent_class)->finalize (obj);
}

static GType
bird_font_alternate_sets_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (BirdFontAlternateSetsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) bird_font_alternate_sets_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (BirdFontAlternateSets), 0, (GInstanceInitFunc) bird_font_alternate_sets_instance_init, NULL };
	GType bird_font_alternate_sets_type_id;
	bird_font_alternate_sets_type_id = g_type_register_static (G_TYPE_OBJECT, "BirdFontAlternateSets", &g_define_type_info, 0);
	return bird_font_alternate_sets_type_id;
}

GType
bird_font_alternate_sets_get_type (void)
{
	static volatile gsize bird_font_alternate_sets_type_id__once = 0;
	if (g_once_init_enter (&bird_font_alternate_sets_type_id__once)) {
		GType bird_font_alternate_sets_type_id;
		bird_font_alternate_sets_type_id = bird_font_alternate_sets_get_type_once ();
		g_once_init_leave (&bird_font_alternate_sets_type_id__once, bird_font_alternate_sets_type_id);
	}
	return bird_font_alternate_sets_type_id__once;
}

static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

BirdFontAlternateItem*
bird_font_alternate_item_construct (GType object_type,
                                    BirdFontAlternate* alternate_list,
                                    const gchar* alternate)
{
	BirdFontAlternateItem * self = NULL;
	BirdFontAlternate* _tmp0_;
	gchar* _tmp1_;
	g_return_val_if_fail (alternate_list != NULL, NULL);
	g_return_val_if_fail (alternate != NULL, NULL);
	self = (BirdFontAlternateItem*) g_object_new (object_type, NULL);
	_tmp0_ = _g_object_ref0 (alternate_list);
	_g_object_unref0 (self->alternate_list);
	self->alternate_list = _tmp0_;
	_tmp1_ = g_strdup (alternate);
	_g_free0 (self->alternate);
	self->alternate = _tmp1_;
	return self;
}

BirdFontAlternateItem*
bird_font_alternate_item_new (BirdFontAlternate* alternate_list,
                              const gchar* alternate)
{
	return bird_font_alternate_item_construct (BIRD_FONT_TYPE_ALTERNATE_ITEM, alternate_list, alternate);
}

void
bird_font_alternate_item_delete_item_from_list (BirdFontAlternateItem* self)
{
	BirdFontAlternate* _tmp0_;
	const gchar* _tmp1_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->alternate_list;
	_tmp1_ = self->alternate;
	bird_font_alternate_remove_alternate (_tmp0_, _tmp1_);
}

static void
bird_font_alternate_item_class_init (BirdFontAlternateItemClass * klass,
                                     gpointer klass_data)
{
	bird_font_alternate_item_parent_class = g_type_class_peek_parent (klass);
	G_OBJECT_CLASS (klass)->finalize = bird_font_alternate_item_finalize;
}

static void
bird_font_alternate_item_instance_init (BirdFontAlternateItem * self,
                                        gpointer klass)
{
}

static void
bird_font_alternate_item_finalize (GObject * obj)
{
	BirdFontAlternateItem * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, BIRD_FONT_TYPE_ALTERNATE_ITEM, BirdFontAlternateItem);
	_g_object_unref0 (self->alternate_list);
	_g_free0 (self->alternate);
	G_OBJECT_CLASS (bird_font_alternate_item_parent_class)->finalize (obj);
}

static GType
bird_font_alternate_item_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (BirdFontAlternateItemClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) bird_font_alternate_item_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (BirdFontAlternateItem), 0, (GInstanceInitFunc) bird_font_alternate_item_instance_init, NULL };
	GType bird_font_alternate_item_type_id;
	bird_font_alternate_item_type_id = g_type_register_static (G_TYPE_OBJECT, "BirdFontAlternateItem", &g_define_type_info, 0);
	return bird_font_alternate_item_type_id;
}

GType
bird_font_alternate_item_get_type (void)
{
	static volatile gsize bird_font_alternate_item_type_id__once = 0;
	if (g_once_init_enter (&bird_font_alternate_item_type_id__once)) {
		GType bird_font_alternate_item_type_id;
		bird_font_alternate_item_type_id = bird_font_alternate_item_get_type_once ();
		g_once_init_leave (&bird_font_alternate_item_type_id__once, bird_font_alternate_item_type_id);
	}
	return bird_font_alternate_item_type_id__once;
}

