#include typedef long CleanInt; extern CleanInt handleSignal (CleanInt,CleanInt*); static void clean_g_signal_handler_void (GtkWidget *target,gpointer data) { CleanInt args[2]; args[0]=0; handleSignal ((CleanInt)data,&args[2]); } static gboolean clean_g_signal_handler_int_int_bool (GtkWidget *target,gint i1,gint i2,gpointer data) { CleanInt args[4]; args[0]=4; args[2]=i1; args[3]=i2; return (gboolean) handleSignal ((CleanInt)data,&args[2]); } static gboolean clean_g_signal_handler_pointer_bool (GtkWidget *target,gpointer p,gpointer data) { CleanInt args[3]; args[0]=1; args[2]=(CleanInt)p; return (gboolean) handleSignal ((CleanInt)data,&args[2]); } static gboolean clean_g_signal_handler_int_int_pointer_pointer_bool (GtkWidget *target,gint i1,gint i2,gpointer p1,gpointer p2,gpointer data) { CleanInt args[6]; args[0]=4; args[2]=i1; args[3]=i2; args[4]=(CleanInt)p1; args[5]=(CleanInt)p2; return (gboolean) handleSignal ((CleanInt)data,&args[2]); } void clean_g_signal_connect (int type,GtkWidget *widget,char *signal,CleanInt id) { void *callback=NULL; switch (type) { case 1: callback=&clean_g_signal_handler_void; break; case 2: callback=&clean_g_signal_handler_int_int_bool; break; case 3: callback=&clean_g_signal_handler_pointer_bool; break; case 4: callback=&clean_g_signal_handler_int_int_pointer_pointer_bool; break; default: fprintf (stderr,"clean_g_signal_connect: illegal type %d\n",type); return; } g_signal_connect (widget,signal,G_CALLBACK (callback),(gpointer)id); }