/*** BEGIN file-header ***/
/*
Enums from the dbusmenu headers

Copyright 2011 Canonical Ltd.

Authors:
    Ted Gould <ted@canonical.com>

This program is free software: you can redistribute it and/or modify it 
under the terms of either or both of the following licenses:

1) the GNU Lesser General Public License version 3, as published by the 
   Free Software Foundation; and/or
2) the GNU Lesser General Public License version 2.1, as published by 
   the Free Software Foundation.

This program is distributed in the hope that it will be useful, but 
WITHOUT ANY WARRANTY; without even the implied warranties of 
MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR 
PURPOSE.  See the applicable version of the GNU Lesser General Public 
License for more details.

You should have received a copy of both the GNU Lesser General Public 
License version 3 and version 2.1 along with this program.  If not, see 
<http://www.gnu.org/licenses/>
*/

#include "genericmenuitem-enum-types.h"

/*** END file-header ***/

/*** BEGIN file-production ***/
#include "@basename@"
/*** END file-production ***/

/*** BEGIN value-header ***/
/**
	@enum_name@_get_type:

	Builds a GLib type for the #@EnumName@ enumeration.

	Return value: A unique #GType for the #@EnumName@ enum.
*/
GType
@enum_name@_get_type (void)
{
	static GType etype = 0;
	if (G_UNLIKELY(etype == 0)) {
		static const G@Type@Value values[] = {
/*** END value-header ***/

/*** BEGIN value-production ***/
			{ @VALUENAME@,  "@VALUENAME@", "@valuenick@" },
/*** END value-production ***/

/*** BEGIN value-tail ***/
			{ 0, NULL, NULL}
		};
		
		etype = g_@type@_register_static (g_intern_static_string("@EnumName@"), values);
	}

	return etype;
}

/**
	@enum_name@_get_nick:
	@value: The value of @EnumName@ to get the nick of

	Looks up in the enum table for the nick of @value.

	Return value: The nick for the given value or #NULL on error
*/
const gchar *
@enum_name@_get_nick (@EnumName@ value)
{
	GEnumClass * class = G_ENUM_CLASS(g_type_class_ref(@enum_name@_get_type()));
	g_return_val_if_fail(class != NULL, NULL);

	const gchar * ret = NULL;
	GEnumValue * val = g_enum_get_value(class, value);
	if (val != NULL) {
		ret = val->value_nick;
	}

	g_type_class_unref(class);
	return ret;
}

/**
	@enum_name@_get_value_from_nick:
	@nick: The enum nick to lookup

	Looks up in the enum table for the value of @nick.

	Return value: The value for the given @nick
*/
@EnumName@
@enum_name@_get_value_from_nick (const gchar * nick)
{
	GEnumClass * class = G_ENUM_CLASS(g_type_class_ref(@enum_name@_get_type()));
	g_return_val_if_fail(class != NULL, 0);

	@EnumName@ ret = 0;
	GEnumValue * val = g_enum_get_value_by_nick(class, nick);
	if (val != NULL) {
		ret = val->value;
	}

	g_type_class_unref(class);
	return ret;
}


/*** END value-tail ***/
