================================================================================
README
--------------------------------------------------------------------------------
The GOTE converter. It converts GTK+ Objects To Eiffel. REL0_1
--------------------------------------------------------------------------------
Copyright Sam O'Connor 1999. Sam@OConnor.net
$Id: README,v 1.3 1999/11/19 21:21:30 sam Exp $
================================================================================

This is very pre release, I'm putting it in CVS now because I hope some of it
may be useful. Expect to see it change a fair bit soon and please send me your
ideas for changes.

================================================================================
FILES:
================================================================================

GOTE converter source is in this directory.
Files that become part of the output library are in "static".
The generated output plus the static files end up in "gel".
NOTE: externals not in a gtk class go in gel/c_orphans.e
      enums go in gel/gtk_enums.e
Test program is in "test".
eman is small hack that is like man but for eiffel classes. (try "eman STRING")


================================================================================
CURRENT STATE:
================================================================================

-	Only works on ISE eiffel as far as I know

-	Many problems both with the generated code and the gote converter itself

-	To compile: have gelex & geyacc in your path
                    check the Ace file for local paths etc
                    make finalize

-	To run: gote /usr/local/include/gtk/gtk.h
                go away for coffee
                you should get a gel directory full of classes after a while

-	To test: In the test directory compile gel.c (gcc -c gel.c)
                 Check the Ace file to make sure it will find everything ok
                 run the compiler


================================================================================
TODO:
================================================================================

-	Run this stuff through ispell :)

-	Find a way to get rid of the nasty hack in STRING_EDITOR that calls sed
	OR come up with a rationale along the lines of: this is a unix program,
	unix programs should call other unix programs to get stuff done, i have
	to call gcc anyway, anyone who hasn't got sed should upgrage thier OS

-	Have all creation procedures register the c_pointer eif_reference pair
	in the gel_environment hash table.

-	Have a nice way to ask for an eiffel object based on a c pointer.
	It should: Return the existing object from the hash table 
	or if there isn't one make a new object using gel_X_new_from_c_pointer 

-	s/nasty_hacked_code/elegant_engineered_code/

-	Use gobo for everything to make small e people happy
	(Or ask a gobo guru to port my code for me)

-	Parse out information about events from gtk source.
	Determine what slots each widget should have and provide
	features to add commands to slots, order them etc.
	Build a drop in mashaler that passes the gtk signals to
	the appropriate slots when event happen.

-	parse variables out of _Gtk[ClassName] structs (not hard, parser is already there)
	for each variable add features to the GEL_ class to get and set its value.
	This allows users to stuff things up if they change something the shouldn't.
	This is the same if you use gtk from C. You must rely on the manual to tell you 
	what you should and shouldn't modify. (Should suggest a standard commenting of
	private members to the gtk people.)

-	load macros names, put them in a c file each wrapped in a c function.
	run the preprocessor to get the expanded code. Analyse the code to determine
	the return type and or argument type (a bit tricky). Mabey a "works mostly"
	heuristic would be better that a full blown C scanner/parser. Mabey we can just
	pull the full blown C scanner/parser out of something else. (gcc?)

-	Review code and find more things to do.

================================================================================
 End of file
================================================================================
