// SDB-CGEN V2.6.2
#include <ctype.h>
#include <stdio.h>
#include <string.h>

struct kv { const char *name; const char *value; };
static const struct kv kvs[] = {
// gcc -DMAIN=1 types_gobject.c ; ./a.out > types_gobject.h
	{"GCallback", "typedef"},
	{"GClosure", "typedef"},
	{"GClosureNotify", "typedef"},
	{"GConnectFlags", "enum"},
	{"GObject", "typedef"},
	{"GParamSpec", "typedef"},
	{"GType", "typedef"},
	{"GValue", "typedef"},
	{"GWeakNotify", "typedef"},
	{"enum.GConnectFlags", "G_CONNECT_DEFAULT,G_CONNECT_AFTER,G_CONNECT_SWAPPED"},
	{"enum.GConnectFlags.0x0", "G_CONNECT_DEFAULT"},
	{"enum.GConnectFlags.0x1", "G_CONNECT_AFTER"},
	{"enum.GConnectFlags.0x2", "G_CONNECT_SWAPPED"},
	{"enum.GConnectFlags.G_CONNECT_AFTER", "0x1"},
	{"enum.GConnectFlags.G_CONNECT_DEFAULT", "0x0"},
	{"enum.GConnectFlags.G_CONNECT_SWAPPED", "0x2"},
	{"func.g_object_add_weak_pointer.arg.0", "GObject *,object"},
	{"func.g_object_add_weak_pointer.arg.1", "gpointer *,weak_pointer_location"},
	{"func.g_object_add_weak_pointer.args", "2"},
	{"func.g_object_add_weak_pointer.ret", "void"},
	{"func.g_object_dup_data.arg.0", "GObject *,object"},
	{"func.g_object_dup_data.arg.1", "const gchar *,key"},
	{"func.g_object_dup_data.arg.2", "GDuplicateFunc,dup_func"},
	{"func.g_object_dup_data.arg.3", "gpointer,user_data"},
	{"func.g_object_dup_data.args", "4"},
	{"func.g_object_dup_data.ret", "gpointer"},
	{"func.g_object_dup_qdata.arg.0", "GObject *,object"},
	{"func.g_object_dup_qdata.arg.1", "GQuark,quark"},
	{"func.g_object_dup_qdata.arg.2", "GDuplicateFunc,dup_func"},
	{"func.g_object_dup_qdata.arg.3", "gpointer,user_data"},
	{"func.g_object_dup_qdata.args", "4"},
	{"func.g_object_dup_qdata.ret", "gpointer"},
	{"func.g_object_force_floating.arg.0", "GObject *,object"},
	{"func.g_object_force_floating.args", "1"},
	{"func.g_object_force_floating.ret", "void"},
	{"func.g_object_freeze_notify.arg.0", "GObject *,object"},
	{"func.g_object_freeze_notify.args", "1"},
	{"func.g_object_freeze_notify.ret", "void"},
	{"func.g_object_get.arg.0", "gpointer,object"},
	{"func.g_object_get.arg.1", "const gchar *,first_property_name"},
	{"func.g_object_get.arg.2", ",..."},
	{"func.g_object_get.args", "3"},
	{"func.g_object_get.ret", "void"},
	{"func.g_object_get_data.arg.0", "GObject *,object"},
	{"func.g_object_get_data.arg.1", "const gchar *,key"},
	{"func.g_object_get_data.args", "2"},
	{"func.g_object_get_data.ret", "gpointer"},
	{"func.g_object_get_property.arg.0", "GObject *,object"},
	{"func.g_object_get_property.arg.1", "const gchar *,property_name"},
	{"func.g_object_get_property.arg.2", "GValue *,value"},
	{"func.g_object_get_property.args", "3"},
	{"func.g_object_get_property.ret", "void"},
	{"func.g_object_get_qdata.arg.0", "GObject *,object"},
	{"func.g_object_get_qdata.arg.1", "GQuark,quark"},
	{"func.g_object_get_qdata.args", "2"},
	{"func.g_object_get_qdata.ret", "gpointer"},
	{"func.g_object_is_floating.arg.0", "gpointer,object"},
	{"func.g_object_is_floating.args", "1"},
	{"func.g_object_is_floating.ret", "gboolean"},
	{"func.g_object_new.arg.0", "GType,object_type"},
	{"func.g_object_new.arg.1", "const gchar *,first_property_name"},
	{"func.g_object_new.arg.2", ",..."},
	{"func.g_object_new.args", "3"},
	{"func.g_object_new.ret", "gpointer"},
	{"func.g_object_new_valist.arg.0", "GType,object_type"},
	{"func.g_object_new_valist.arg.1", "const gchar *,first_property_name"},
	{"func.g_object_new_valist.arg.2", "va_list,var_args"},
	{"func.g_object_new_valist.args", "3"},
	{"func.g_object_new_valist.ret", "GObject *"},
	{"func.g_object_new_with_properties.arg.0", "GType,object_type"},
	{"func.g_object_new_with_properties.arg.1", "guint,n_properties"},
	{"func.g_object_new_with_properties.arg.2", "const char **,names"},
	{"func.g_object_new_with_properties.arg.3", "const GValue *,values"},
	{"func.g_object_new_with_properties.args", "4"},
	{"func.g_object_new_with_properties.ret", "GObject *"},
	{"func.g_object_notify.arg.0", "GObject *,object"},
	{"func.g_object_notify.arg.1", "const gchar *,property_name"},
	{"func.g_object_notify.args", "2"},
	{"func.g_object_notify.ret", "void"},
	{"func.g_object_notify_by_pspec.arg.0", "GObject *,object"},
	{"func.g_object_notify_by_pspec.arg.1", "GParamSpec *,pspec"},
	{"func.g_object_notify_by_pspec.args", "2"},
	{"func.g_object_notify_by_pspec.ret", "void"},
	{"func.g_object_ref.arg.0", "gpointer,object"},
	{"func.g_object_ref.args", "1"},
	{"func.g_object_ref.ret", "gpointer"},
	{"func.g_object_ref_sink.arg.0", "gpointer,object"},
	{"func.g_object_ref_sink.args", "1"},
	{"func.g_object_ref_sink.ret", "gpointer"},
	{"func.g_object_remove_weak_pointer.arg.0", "GObject *,object"},
	{"func.g_object_remove_weak_pointer.arg.1", "gpointer *,weak_pointer_location"},
	{"func.g_object_remove_weak_pointer.args", "2"},
	{"func.g_object_remove_weak_pointer.ret", "void"},
	{"func.g_object_replace_data.arg.0", "GObject *,object"},
	{"func.g_object_replace_data.arg.1", "const gchar *,key"},
	{"func.g_object_replace_data.arg.2", "gpointer,oldval"},
	{"func.g_object_replace_data.arg.3", "gpointer,newval"},
	{"func.g_object_replace_data.arg.4", "GDestroyNotify,destroy"},
	{"func.g_object_replace_data.arg.5", "GDestroyNotify *,old_destroy"},
	{"func.g_object_replace_data.args", "6"},
	{"func.g_object_replace_data.ret", "gboolean"},
	{"func.g_object_replace_qdata.arg.0", "GObject *,object"},
	{"func.g_object_replace_qdata.arg.1", "GQuark,quark"},
	{"func.g_object_replace_qdata.arg.2", "gpointer,oldval"},
	{"func.g_object_replace_qdata.arg.3", "gpointer,newval"},
	{"func.g_object_replace_qdata.arg.4", "GDestroyNotify,destroy"},
	{"func.g_object_replace_qdata.arg.5", "GDestroyNotify *,old_destroy"},
	{"func.g_object_replace_qdata.args", "6"},
	{"func.g_object_replace_qdata.ret", "gboolean"},
	{"func.g_object_run_dispose.arg.0", "GObject *,object"},
	{"func.g_object_run_dispose.args", "1"},
	{"func.g_object_run_dispose.ret", "void"},
	{"func.g_object_set.arg.0", "gpointer,object"},
	{"func.g_object_set.arg.1", "const gchar *,first_property_name"},
	{"func.g_object_set.arg.2", ",..."},
	{"func.g_object_set.args", "3"},
	{"func.g_object_set.ret", "void"},
	{"func.g_object_set_data.arg.0", "GObject *,object"},
	{"func.g_object_set_data.arg.1", "const gchar *,key"},
	{"func.g_object_set_data.arg.2", "gpointer,data"},
	{"func.g_object_set_data.args", "3"},
	{"func.g_object_set_data.ret", "void"},
	{"func.g_object_set_data_full.arg.0", "GObject *,object"},
	{"func.g_object_set_data_full.arg.1", "const gchar *,key"},
	{"func.g_object_set_data_full.arg.2", "gpointer,data"},
	{"func.g_object_set_data_full.arg.3", "GDestroyNotify,destroy"},
	{"func.g_object_set_data_full.args", "4"},
	{"func.g_object_set_data_full.ret", "void"},
	{"func.g_object_set_property.arg.0", "GObject *,object"},
	{"func.g_object_set_property.arg.1", "const gchar *,property_name"},
	{"func.g_object_set_property.arg.2", "const GValue *,value"},
	{"func.g_object_set_property.args", "3"},
	{"func.g_object_set_property.ret", "void"},
	{"func.g_object_set_qdata.arg.0", "GObject *,object"},
	{"func.g_object_set_qdata.arg.1", "GQuark,quark"},
	{"func.g_object_set_qdata.arg.2", "gpointer,data"},
	{"func.g_object_set_qdata.args", "3"},
	{"func.g_object_set_qdata.ret", "void"},
	{"func.g_object_set_qdata_full.arg.0", "GObject *,object"},
	{"func.g_object_set_qdata_full.arg.1", "GQuark,quark"},
	{"func.g_object_set_qdata_full.arg.2", "gpointer,data"},
	{"func.g_object_set_qdata_full.arg.3", "GDestroyNotify,destroy"},
	{"func.g_object_set_qdata_full.args", "4"},
	{"func.g_object_set_qdata_full.ret", "void"},
	{"func.g_object_steal_data.arg.0", "GObject *,object"},
	{"func.g_object_steal_data.arg.1", "const gchar *,key"},
	{"func.g_object_steal_data.args", "2"},
	{"func.g_object_steal_data.ret", "gpointer"},
	{"func.g_object_steal_qdata.arg.0", "GObject *,object"},
	{"func.g_object_steal_qdata.arg.1", "GQuark,quark"},
	{"func.g_object_steal_qdata.args", "2"},
	{"func.g_object_steal_qdata.ret", "gpointer"},
	{"func.g_object_take_ref.arg.0", "gpointer,object"},
	{"func.g_object_take_ref.args", "1"},
	{"func.g_object_take_ref.ret", "gpointer"},
	{"func.g_object_thaw_notify.arg.0", "GObject *,object"},
	{"func.g_object_thaw_notify.args", "1"},
	{"func.g_object_thaw_notify.ret", "void"},
	{"func.g_object_unref.arg.0", "gpointer,object"},
	{"func.g_object_unref.args", "1"},
	{"func.g_object_unref.ret", "void"},
	{"func.g_object_weak_ref.arg.0", "GObject *,object"},
	{"func.g_object_weak_ref.arg.1", "GWeakNotify,notify"},
	{"func.g_object_weak_ref.arg.2", "gpointer,data"},
	{"func.g_object_weak_ref.args", "3"},
	{"func.g_object_weak_ref.ret", "void"},
	{"func.g_object_weak_unref.arg.0", "GObject *,object"},
	{"func.g_object_weak_unref.arg.1", "GWeakNotify,notify"},
	{"func.g_object_weak_unref.arg.2", "gpointer,data"},
	{"func.g_object_weak_unref.args", "3"},
	{"func.g_object_weak_unref.ret", "void"},
	{"func.g_signal_connect_data.arg.0", "gpointer,instance"},
	{"func.g_signal_connect_data.arg.1", "const gchar *,detailed_signal"},
	{"func.g_signal_connect_data.arg.2", "GCallback,c_handler"},
	{"func.g_signal_connect_data.arg.3", "gpointer,data"},
	{"func.g_signal_connect_data.arg.4", "GClosureNotify,destroy_data"},
	{"func.g_signal_connect_data.arg.5", "GConnectFlags,connect_flags"},
	{"func.g_signal_connect_data.args", "6"},
	{"func.g_signal_connect_data.ret", "gulong"},
	{"func.g_signal_connect_object.arg.0", "gpointer,instance"},
	{"func.g_signal_connect_object.arg.1", "const gchar *,detailed_signal"},
	{"func.g_signal_connect_object.arg.2", "GCallback,c_handler"},
	{"func.g_signal_connect_object.arg.3", "gpointer,gobject"},
	{"func.g_signal_connect_object.arg.4", "GConnectFlags,connect_flags"},
	{"func.g_signal_connect_object.args", "5"},
	{"func.g_signal_connect_object.ret", "gulong"},
	{"func.g_signal_emit.arg.0", "gpointer,instance"},
	{"func.g_signal_emit.arg.1", "guint,signal_id"},
	{"func.g_signal_emit.arg.2", "GQuark,detail"},
	{"func.g_signal_emit.arg.3", ",..."},
	{"func.g_signal_emit.args", "4"},
	{"func.g_signal_emit.ret", "void"},
	{"func.g_signal_emit_by_name.arg.0", "gpointer,instance"},
	{"func.g_signal_emit_by_name.arg.1", "const gchar *,detailed_signal"},
	{"func.g_signal_emit_by_name.arg.2", ",..."},
	{"func.g_signal_emit_by_name.args", "3"},
	{"func.g_signal_emit_by_name.ret", "void"},
	{"func.g_signal_handler_block.arg.0", "gpointer,instance"},
	{"func.g_signal_handler_block.arg.1", "gulong,handler_id"},
	{"func.g_signal_handler_block.args", "2"},
	{"func.g_signal_handler_block.ret", "void"},
	{"func.g_signal_handler_disconnect.arg.0", "gpointer,instance"},
	{"func.g_signal_handler_disconnect.arg.1", "gulong,handler_id"},
	{"func.g_signal_handler_disconnect.args", "2"},
	{"func.g_signal_handler_disconnect.ret", "void"},
	{"func.g_signal_handler_is_connected.arg.0", "gpointer,instance"},
	{"func.g_signal_handler_is_connected.arg.1", "gulong,handler_id"},
	{"func.g_signal_handler_is_connected.args", "2"},
	{"func.g_signal_handler_is_connected.ret", "gboolean"},
	{"func.g_signal_handler_unblock.arg.0", "gpointer,instance"},
	{"func.g_signal_handler_unblock.arg.1", "gulong,handler_id"},
	{"func.g_signal_handler_unblock.args", "2"},
	{"func.g_signal_handler_unblock.ret", "void"},
	{"g_object_add_weak_pointer", "func"},
	{"g_object_dup_data", "func"},
	{"g_object_dup_qdata", "func"},
	{"g_object_force_floating", "func"},
	{"g_object_freeze_notify", "func"},
	{"g_object_get", "func"},
	{"g_object_get_data", "func"},
	{"g_object_get_property", "func"},
	{"g_object_get_qdata", "func"},
	{"g_object_is_floating", "func"},
	{"g_object_new", "func"},
	{"g_object_new_valist", "func"},
	{"g_object_new_with_properties", "func"},
	{"g_object_notify", "func"},
	{"g_object_notify_by_pspec", "func"},
	{"g_object_ref", "func"},
	{"g_object_ref_sink", "func"},
	{"g_object_remove_weak_pointer", "func"},
	{"g_object_replace_data", "func"},
	{"g_object_replace_qdata", "func"},
	{"g_object_run_dispose", "func"},
	{"g_object_set", "func"},
	{"g_object_set_data", "func"},
	{"g_object_set_data_full", "func"},
	{"g_object_set_property", "func"},
	{"g_object_set_qdata", "func"},
	{"g_object_set_qdata_full", "func"},
	{"g_object_steal_data", "func"},
	{"g_object_steal_qdata", "func"},
	{"g_object_take_ref", "func"},
	{"g_object_thaw_notify", "func"},
	{"g_object_unref", "func"},
	{"g_object_weak_ref", "func"},
	{"g_object_weak_unref", "func"},
	{"g_signal_connect_data", "func"},
	{"g_signal_connect_object", "func"},
	{"g_signal_emit", "func"},
	{"g_signal_emit_by_name", "func"},
	{"g_signal_handler_block", "func"},
	{"g_signal_handler_disconnect", "func"},
	{"g_signal_handler_is_connected", "func"},
	{"g_signal_handler_unblock", "func"},
	{"typedef.GCallback", "void (*)(void)"},
	{"typedef.GClosure", "struct _GClosure"},
	{"typedef.GClosureNotify", "void (*)(gpointer, GClosure *)"},
	{"typedef.GObject", "struct _GObject"},
	{"typedef.GParamSpec", "struct _GParamSpec"},
	{"typedef.GType", "gsize"},
	{"typedef.GValue", "struct _GValue"},
	{"typedef.GWeakNotify", "void (*)(gpointer, GObject *)"},
  {NULL, NULL}
};
typedef int (*GperfForeachCallback)(void *user, const char *k, const char *v);
int gperf_types_gobject_foreach(GperfForeachCallback cb, void *user) {
  int i = 0; while (kvs[i].name) {
  cb (user, kvs[i].name, kvs[i].value);
  i++;}
  return 0;
}
const char *gperf_types_gobject_get(const char *s) {
  int i = 0; while (kvs[i].name) {
  if (!strcmp (s, kvs[i].name)) return kvs[i].value;
  i++;}
  return NULL;
}
#define sdb_hash_c_types_gobject(x,y) gperf_types_gobject_hash(x)
const unsigned int gperf_types_gobject_hash(const char *s) {
  int sum = strlen (s);
  while (*s) { sum += *s; s++; }
  return sum;
}
struct {const char *name;void *get;void *hash;void *foreach;} gperf_types_gobject = {
  .name = "types-gobject",
  .get = &gperf_types_gobject_get,
  .hash = &gperf_types_gobject_hash,
  .foreach = &gperf_types_gobject_foreach
};

#if MAIN
int main () {
	const char *s = ((char*(*)(char*))gperf_types_gobject.get)("foo");
	printf ("%s\n", s);
}
#endif
