import java.util.*; import java.io.*; public class SignalList { Vector vec; int index; SignalList() { vec = new Vector(); index = -1; } public void add(File file) { Lex lex = new Lex(file); while(lex.getTokenType() != Lex.EOF) { if(lex.getToken().equals("gtk_signal_new")) { getSignal(lex); } else { lex.gtkn(); } } } private void getSignal(Lex lex) { if(lex.gtkn() != Lex.LEFTPAREN) return; if(lex.gtkn() != Lex.STRING) return; String newSignal = "\"" + lex.getToken() + "\""; lex.skipPast('('); lex.gtkn(); newSignal = lex.getToken() + "%" + newSignal; lex.skipPast(')'); if(lex.gtkn() != lex.COMMA) return; lex.gtkn(); /************************************* It turns out that the MDI has its own set of marshalling functions. Hmph! Why?! if(!lex.getToken().startsWith("gtk_marshal")) return; *******************************************/ newSignal += "%" + lex.getToken(); while(lex.gtkn() == lex.COMMA) { lex.gtkn(); newSignal += " " + lex.getToken(); } newSignal += " void cb(GtkWidget *, gpointer data)"; for(int i=0; itype, GTK_SIGNAL_OFFSET (GtkWidgetClass, drag_data_received), gtk_marshal_NONE__POINTER_INT_INT_POINTER_UINT_UINT, GTK_TYPE_NONE, 6, GTK_TYPE_GDK_DRAG_CONTEXT, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_SELECTION_DATA, GTK_TYPE_UINT, GTK_TYPE_UINT); *************************************/