/* raw-gamepad-interface.c generated by valac 0.56.18, the Vala compiler
 * generated from raw-gamepad-interface.vala, do not modify */

/*
 * Copyright 2016 Megh Parikh
 *
 * This file is part of LibGamepad.
 *
 * LibGamepad 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.
 *
 * LibGamepad 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 Foobar.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <float.h>
#include <math.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
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define LIB_GAMEPAD_TYPE_RAW_GAMEPAD (lib_gamepad_raw_gamepad_get_type ())
#define LIB_GAMEPAD_RAW_GAMEPAD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LIB_GAMEPAD_TYPE_RAW_GAMEPAD, LibGamepadRawGamepad))
#define LIB_GAMEPAD_IS_RAW_GAMEPAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LIB_GAMEPAD_TYPE_RAW_GAMEPAD))
#define LIB_GAMEPAD_RAW_GAMEPAD_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), LIB_GAMEPAD_TYPE_RAW_GAMEPAD, LibGamepadRawGamepadIface))

typedef struct _LibGamepadRawGamepad LibGamepadRawGamepad;
typedef struct _LibGamepadRawGamepadIface LibGamepadRawGamepadIface;
enum  {
	LIB_GAMEPAD_RAW_GAMEPAD_BUTTON_EVENT_SIGNAL,
	LIB_GAMEPAD_RAW_GAMEPAD_AXIS_EVENT_SIGNAL,
	LIB_GAMEPAD_RAW_GAMEPAD_DPAD_EVENT_SIGNAL,
	LIB_GAMEPAD_RAW_GAMEPAD_UNPLUGGED_SIGNAL,
	LIB_GAMEPAD_RAW_GAMEPAD_NUM_SIGNALS
};
static guint lib_gamepad_raw_gamepad_signals[LIB_GAMEPAD_RAW_GAMEPAD_NUM_SIGNALS] = {0};

struct _LibGamepadRawGamepadIface {
	GTypeInterface parent_iface;
	const gchar* (*get_identifier) (LibGamepadRawGamepad* self);
	const gchar* (*get_name) (LibGamepadRawGamepad* self);
	const gchar* (*get_guid) (LibGamepadRawGamepad* self);
	guint8 (*get_axes_number) (LibGamepadRawGamepad* self);
	guint8 (*get_buttons_number) (LibGamepadRawGamepad* self);
	guint8 (*get_dpads_number) (LibGamepadRawGamepad* self);
};

VALA_EXTERN GType lib_gamepad_raw_gamepad_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (LibGamepadRawGamepad, g_object_unref)
VALA_EXTERN const gchar* lib_gamepad_raw_gamepad_get_identifier (LibGamepadRawGamepad* self);
VALA_EXTERN const gchar* lib_gamepad_raw_gamepad_get_name (LibGamepadRawGamepad* self);
VALA_EXTERN const gchar* lib_gamepad_raw_gamepad_get_guid (LibGamepadRawGamepad* self);
VALA_EXTERN guint8 lib_gamepad_raw_gamepad_get_axes_number (LibGamepadRawGamepad* self);
VALA_EXTERN guint8 lib_gamepad_raw_gamepad_get_buttons_number (LibGamepadRawGamepad* self);
VALA_EXTERN guint8 lib_gamepad_raw_gamepad_get_dpads_number (LibGamepadRawGamepad* self);
static void g_cclosure_user_marshal_VOID__INT_BOOLEAN (GClosure * closure,
                                                GValue * return_value,
                                                guint n_param_values,
                                                const GValue * param_values,
                                                gpointer invocation_hint,
                                                gpointer marshal_data);
static void g_cclosure_user_marshal_VOID__INT_DOUBLE (GClosure * closure,
                                               GValue * return_value,
                                               guint n_param_values,
                                               const GValue * param_values,
                                               gpointer invocation_hint,
                                               gpointer marshal_data);
static void g_cclosure_user_marshal_VOID__INT_INT_INT (GClosure * closure,
                                                GValue * return_value,
                                                guint n_param_values,
                                                const GValue * param_values,
                                                gpointer invocation_hint,
                                                gpointer marshal_data);
static GType lib_gamepad_raw_gamepad_get_type_once (void);

const gchar*
lib_gamepad_raw_gamepad_get_identifier (LibGamepadRawGamepad* self)
{
	LibGamepadRawGamepadIface* _iface_;
#line 58 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 58 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	_iface_ = LIB_GAMEPAD_RAW_GAMEPAD_GET_INTERFACE (self);
#line 58 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	if (_iface_->get_identifier) {
#line 58 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		return _iface_->get_identifier (self);
#line 115 "raw-gamepad-interface.c"
	}
#line 58 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	return NULL;
#line 119 "raw-gamepad-interface.c"
}

const gchar*
lib_gamepad_raw_gamepad_get_name (LibGamepadRawGamepad* self)
{
	LibGamepadRawGamepadIface* _iface_;
#line 59 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 59 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	_iface_ = LIB_GAMEPAD_RAW_GAMEPAD_GET_INTERFACE (self);
#line 59 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	if (_iface_->get_name) {
#line 59 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		return _iface_->get_name (self);
#line 134 "raw-gamepad-interface.c"
	}
#line 59 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	return NULL;
#line 138 "raw-gamepad-interface.c"
}

const gchar*
lib_gamepad_raw_gamepad_get_guid (LibGamepadRawGamepad* self)
{
	LibGamepadRawGamepadIface* _iface_;
#line 60 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 60 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	_iface_ = LIB_GAMEPAD_RAW_GAMEPAD_GET_INTERFACE (self);
#line 60 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	if (_iface_->get_guid) {
#line 60 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		return _iface_->get_guid (self);
#line 153 "raw-gamepad-interface.c"
	}
#line 60 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	return NULL;
#line 157 "raw-gamepad-interface.c"
}

guint8
lib_gamepad_raw_gamepad_get_axes_number (LibGamepadRawGamepad* self)
{
	LibGamepadRawGamepadIface* _iface_;
#line 65 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_return_val_if_fail (self != NULL, 0U);
#line 65 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	_iface_ = LIB_GAMEPAD_RAW_GAMEPAD_GET_INTERFACE (self);
#line 65 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	if (_iface_->get_axes_number) {
#line 65 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		return _iface_->get_axes_number (self);
#line 172 "raw-gamepad-interface.c"
	}
#line 65 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	return 0U;
#line 176 "raw-gamepad-interface.c"
}

guint8
lib_gamepad_raw_gamepad_get_buttons_number (LibGamepadRawGamepad* self)
{
	LibGamepadRawGamepadIface* _iface_;
#line 70 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_return_val_if_fail (self != NULL, 0U);
#line 70 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	_iface_ = LIB_GAMEPAD_RAW_GAMEPAD_GET_INTERFACE (self);
#line 70 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	if (_iface_->get_buttons_number) {
#line 70 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		return _iface_->get_buttons_number (self);
#line 191 "raw-gamepad-interface.c"
	}
#line 70 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	return 0U;
#line 195 "raw-gamepad-interface.c"
}

guint8
lib_gamepad_raw_gamepad_get_dpads_number (LibGamepadRawGamepad* self)
{
	LibGamepadRawGamepadIface* _iface_;
#line 75 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_return_val_if_fail (self != NULL, 0U);
#line 75 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	_iface_ = LIB_GAMEPAD_RAW_GAMEPAD_GET_INTERFACE (self);
#line 75 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	if (_iface_->get_dpads_number) {
#line 75 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		return _iface_->get_dpads_number (self);
#line 210 "raw-gamepad-interface.c"
	}
#line 75 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	return 0U;
#line 214 "raw-gamepad-interface.c"
}

static void
g_cclosure_user_marshal_VOID__INT_BOOLEAN (GClosure * closure,
                                           GValue * return_value,
                                           guint n_param_values,
                                           const GValue * param_values,
                                           gpointer invocation_hint,
                                           gpointer marshal_data)
{
	typedef void (*GMarshalFunc_VOID__INT_BOOLEAN) (gpointer data1, gint arg_1, gboolean arg_2, gpointer data2);
	register GMarshalFunc_VOID__INT_BOOLEAN callback;
	register GCClosure * cc;
	register gpointer data1;
	register gpointer data2;
	cc = (GCClosure *) closure;
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_return_if_fail (n_param_values == 3);
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	if (G_CCLOSURE_SWAP_DATA (closure)) {
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		data1 = closure->data;
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		data2 = param_values->data[0].v_pointer;
#line 239 "raw-gamepad-interface.c"
	} else {
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		data1 = param_values->data[0].v_pointer;
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		data2 = closure->data;
#line 245 "raw-gamepad-interface.c"
	}
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	callback = (GMarshalFunc_VOID__INT_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	callback (data1, g_value_get_int (param_values + 1), g_value_get_boolean (param_values + 2), data2);
#line 251 "raw-gamepad-interface.c"
}

static void
g_cclosure_user_marshal_VOID__INT_DOUBLE (GClosure * closure,
                                          GValue * return_value,
                                          guint n_param_values,
                                          const GValue * param_values,
                                          gpointer invocation_hint,
                                          gpointer marshal_data)
{
	typedef void (*GMarshalFunc_VOID__INT_DOUBLE) (gpointer data1, gint arg_1, gdouble arg_2, gpointer data2);
	register GMarshalFunc_VOID__INT_DOUBLE callback;
	register GCClosure * cc;
	register gpointer data1;
	register gpointer data2;
	cc = (GCClosure *) closure;
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_return_if_fail (n_param_values == 3);
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	if (G_CCLOSURE_SWAP_DATA (closure)) {
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		data1 = closure->data;
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		data2 = param_values->data[0].v_pointer;
#line 276 "raw-gamepad-interface.c"
	} else {
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		data1 = param_values->data[0].v_pointer;
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		data2 = closure->data;
#line 282 "raw-gamepad-interface.c"
	}
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	callback = (GMarshalFunc_VOID__INT_DOUBLE) (marshal_data ? marshal_data : cc->callback);
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	callback (data1, g_value_get_int (param_values + 1), g_value_get_double (param_values + 2), data2);
#line 288 "raw-gamepad-interface.c"
}

static void
g_cclosure_user_marshal_VOID__INT_INT_INT (GClosure * closure,
                                           GValue * return_value,
                                           guint n_param_values,
                                           const GValue * param_values,
                                           gpointer invocation_hint,
                                           gpointer marshal_data)
{
	typedef void (*GMarshalFunc_VOID__INT_INT_INT) (gpointer data1, gint arg_1, gint arg_2, gint arg_3, gpointer data2);
	register GMarshalFunc_VOID__INT_INT_INT callback;
	register GCClosure * cc;
	register gpointer data1;
	register gpointer data2;
	cc = (GCClosure *) closure;
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_return_if_fail (n_param_values == 4);
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	if (G_CCLOSURE_SWAP_DATA (closure)) {
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		data1 = closure->data;
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		data2 = param_values->data[0].v_pointer;
#line 313 "raw-gamepad-interface.c"
	} else {
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		data1 = param_values->data[0].v_pointer;
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
		data2 = closure->data;
#line 319 "raw-gamepad-interface.c"
	}
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	callback = (GMarshalFunc_VOID__INT_INT_INT) (marshal_data ? marshal_data : cc->callback);
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	callback (data1, g_value_get_int (param_values + 1), g_value_get_int (param_values + 2), g_value_get_int (param_values + 3), data2);
#line 325 "raw-gamepad-interface.c"
}

static void
lib_gamepad_raw_gamepad_default_init (LibGamepadRawGamepadIface * iface,
                                      gpointer iface_data)
{
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_object_interface_install_property (iface, g_param_spec_string ("identifier", "identifier", "identifier", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_object_interface_install_property (iface, g_param_spec_string ("name", "name", "name", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_object_interface_install_property (iface, g_param_spec_string ("guid", "guid", "guid", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 338 "raw-gamepad-interface.c"
	/**
	 * Number of axes of the gamepad
	 */
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_object_interface_install_property (iface, g_param_spec_uchar ("axes-number", "axes-number", "axes-number", 0, G_MAXUINT8, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 344 "raw-gamepad-interface.c"
	/**
	 * Number of buttons of the gamepad
	 */
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_object_interface_install_property (iface, g_param_spec_uchar ("buttons-number", "buttons-number", "buttons-number", 0, G_MAXUINT8, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 350 "raw-gamepad-interface.c"
	/**
	 * Number of dpads of the gamepad`
	 */
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	g_object_interface_install_property (iface, g_param_spec_uchar ("dpads-number", "dpads-number", "dpads-number", 0, G_MAXUINT8, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
#line 356 "raw-gamepad-interface.c"
	/**
	 * Emitted when a button is pressed/released
	 * @param  code          The button code from 0 to buttons_number
	 * @param  value         True if pressed, False if released
	 */
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	lib_gamepad_raw_gamepad_signals[LIB_GAMEPAD_RAW_GAMEPAD_BUTTON_EVENT_SIGNAL] = g_signal_new ("button-event", LIB_GAMEPAD_TYPE_RAW_GAMEPAD, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT_BOOLEAN, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_BOOLEAN);
#line 364 "raw-gamepad-interface.c"
	/**
	 * Emitted when an axis's value changes
	 * @param  axis          The axis number from 0 to axes_number
	 * @param  value         The value of the axis ranging from -1 to 1
	 */
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	lib_gamepad_raw_gamepad_signals[LIB_GAMEPAD_RAW_GAMEPAD_AXIS_EVENT_SIGNAL] = g_signal_new ("axis-event", LIB_GAMEPAD_TYPE_RAW_GAMEPAD, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT_DOUBLE, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_DOUBLE);
#line 372 "raw-gamepad-interface.c"
	/**
	 * Emitted when a dpad's axis's value changes
	 * @param  dpad          The dpad number from 0 to
	 * @param  axis          The axis: 0 for X, 1 for Y
	 * @param  value         The value of the axis ranging from -1 to 1
	 */
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	lib_gamepad_raw_gamepad_signals[LIB_GAMEPAD_RAW_GAMEPAD_DPAD_EVENT_SIGNAL] = g_signal_new ("dpad-event", LIB_GAMEPAD_TYPE_RAW_GAMEPAD, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT_INT_INT, G_TYPE_NONE, 3, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
#line 381 "raw-gamepad-interface.c"
	/**
	 * Emitted when the gamepad is unplugged
	 */
#line 30 "../Spice-up-1.9.1/src/Services/libgamepad/raw-gamepad-interface.vala"
	lib_gamepad_raw_gamepad_signals[LIB_GAMEPAD_RAW_GAMEPAD_UNPLUGGED_SIGNAL] = g_signal_new ("unplugged", LIB_GAMEPAD_TYPE_RAW_GAMEPAD, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
#line 387 "raw-gamepad-interface.c"
}

/**
 * This is one of the interfaces that needs to be implemented by the driver.
 *
 * This interface represents a gamepad and deals with handling events that are
 * emitted by a gamepad and also provide properties like name and guid along
 * with number of buttons, axes and dpads.
 *
 * The constructor takes a identifier as a parameter.
 * @see RawGamepadMonitor
 */
static GType
lib_gamepad_raw_gamepad_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (LibGamepadRawGamepadIface), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) lib_gamepad_raw_gamepad_default_init, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
	GType lib_gamepad_raw_gamepad_type_id;
	lib_gamepad_raw_gamepad_type_id = g_type_register_static (G_TYPE_INTERFACE, "LibGamepadRawGamepad", &g_define_type_info, 0);
	g_type_interface_add_prerequisite (lib_gamepad_raw_gamepad_type_id, G_TYPE_OBJECT);
	return lib_gamepad_raw_gamepad_type_id;
}

GType
lib_gamepad_raw_gamepad_get_type (void)
{
	static volatile gsize lib_gamepad_raw_gamepad_type_id__once = 0;
	if (g_once_init_enter (&lib_gamepad_raw_gamepad_type_id__once)) {
		GType lib_gamepad_raw_gamepad_type_id;
		lib_gamepad_raw_gamepad_type_id = lib_gamepad_raw_gamepad_get_type_once ();
		g_once_init_leave (&lib_gamepad_raw_gamepad_type_id__once, lib_gamepad_raw_gamepad_type_id);
	}
	return lib_gamepad_raw_gamepad_type_id__once;
}

