Patches for ET++ version 1.0 to compile with G++ 1.35.1-.

This is version 1.0 of the patches, dated 25 June 1989.

The environment in which they seem to work is a Sun 3/280; SunOS 3.5
and either SunWindows or X11R3. Your mileage may vary if you have a
different system.

How to get ET++ to work
=======================

First, apply the patches. They were created with the command
"diff -c -r dist-src src"

Then, type "make". Simple, isn't it?

I probably left out something important. However, you should now have
a very large binary, and, after setting ET_DIR and installing the
fonts, you should get a window with "micky" and three buttons in it.

Even if this doesn't work, you shoule be able to get the collection
classes to work. You can make a library for these by typing "make
libcol.a".


Overall Changes
===============

The ET++ authors have hacked and patched cfront a bit, and written
their own munch/link script. This does little good for G++. I have put
in some changes to the makefile to build the micky-mouse application.
I'm no make expert, so I may have got this wrong. 

ET++'s munch program used a file called "order" to arrange the static
constructors in the required sequence. I made a file called
"revorder", which is basically the same file backwards.  I use the
fact that static constructors are called in the order the .o files
appear in the link command. This was a quick-and-dirty solution; I
don't know what the right thing to do is.


The Patches
===========

Any of the changes that appear odd may well be wrong; some were hacked
in at great speed. If you find a problem with my patches, or fix
another problem in the code, please let me know. All of the changes
should have some sort of explanatory comment. Some, but not all, are
bracketed by #ifdef __GNUG__.

Some common changes are:

     1) Added some #pragma once's. If I put them in every header, the
	pre-processor complained about "too many open files".

     2) Constants in header files are changed from "const" to
	"static const"; they turn up multiply defined in the link if
	this is not done.

     3) G++ has some kind of bug where it thinks there is ambiguous
	multiple inheritance, and in fact there is only single
	inheritance. I have changed "foo" to "this->foo" in several
	places.

     4) Changes to macros for ANSI concatenation and stringising.
	Added a __STRING macro.

     5) Some #ifdefs to guard against clashes when I was using the
	ET++ collections and the InterViews windows.

     6) I moved #include "Port.h" out of System.h; I don't remember
	why, but I think I found all the places it was required.

Remaining problems:

     1) You need some streams classes that work like the AT&T ones. I
	use the Zortech ones, to which we have the source. Maybe
	someone can work on libg++ to get it to believe in streambufs.

     2) The programs don't yet work perfectly. The main problem I know
	about is pullright menus in X windows.

     3) If all the files are compiled "-g", the micky program is 17
	megabytes. Currently, I compile most files without "-g", and
	work with a 7.5 megabyte binary. With a lot of optimisation,
	the micky program ends up about 1 megabyte, stripped, with X11
	and SunWindow support and the whole programming enviromnment.


Great thanks are due to Tom Viljbrief, who did the SunWindows changes,
and pointed out the -fno-defer-pop fix. His address is:

===============================================================================
Tom Vijlbrief
TNO Institute for Perception
P.O. Box 23				Phone: +31 34 63 562 11
3769 ZG  Soesterberg			E-mail: tnosoes!tom@mcvax.cwi.nl
The Netherlands				    or:	uunet!mcvax!tnosoes!tom
===============================================================================

Enjoy!

Bryan Boreham			bryan@kewill.uucp
Kewill Systems PLC		kewill!bryan@uunet.UU.NET
Ashley House			bryan%kewill.uucp%ukc.ac.uk@nsfnet-relay.ac.uk
20-32 Church Street		{Atlantic}  ... mcvax!ukc!kewill!bryan
Walton-on-Thames
Surrey, KT12 2QS		Phone: +44 932 248 328
England
