[ Home Page ] [ Eiffel Archive ] [ Tools for Eiffel Developers ]

Arc de Triomphe clipart (2486 bytes)Eon Eiffel v3122p4 beta


Written by Ian Leonard.

eon3122p4.zip (1,087,399 bytes) - DOS version
eon3122p3.linux.taz (535,647 bytes) - Linux version
eon.faq (11,351 bytes) - Eon Eiffel FAQ
ftp://ftp.demon.co.uk/pub/eiffel/eon-eiffel/ (for downloads)
http://hepunx.rl.ac.uk/atlas/oo/eiffel/eon_compiler.html (for information)


Installation under DOS

Unzip the distribution into a convenient directory, for example c:\eon.

If you use a directory other than c:\eon, edit your autoexec.bat file to add the line

set EON=drive:\directory\eon

and reboot.

Select a C++ compiler. You may set up a compiler by either:

Add "\eon\bin" to your PATH environment variable.

Make sure that you have at least 50 files set in your CONFIG.SYS file.

You may want to set the USER environment variable. This allows the compiler to add an identifier to database records. For example:

set USER=ANAME

Change to the "eon\demos\hello" and build the database with the command

eon -v1 hello

If all goes well you will build a program called "hello.exe". When you run "hello.exe" you should get a greeting message. This indicates that the system is ready to use.

Installation under Linux

Change to /usr directory and run the following command:

gzip -r -c | tar xvf -

This will create a directory called "eon31XX" in your "/usr" directory.

If you want to place the "eon" directory elsewhere, do so, and then add the EON variable to your environment. For example, to put "eon31XX" in /u/compilers:

cd to /u/compilers
gzip -r -c | tar xvf -
EON=/u/compilers/eon31XX ; export EON             (Bourne shell)

Select a C++ compiler. You may set up a compiler by either:

Add "$EON/bin" to your PATH environment variable.

Change to the "$EON/demos/hello" and build the database with the command

eon -v1 hello

If all goes well you will build a program called "hello". When you run "hello" you should get a greeting message. This indicates that the system is ready to use.

Limitations

MSDOS systems are limited to 506 classes. This odd limit is imposed by problems implementing Unique constants on a machines with a 16 bit integer size. It is a compromise figure that may change in the future.

There is a limitation on the number of Unique constants on MSDOS systems. This is due to the 16 bit integer size. You are limited to 65 Unique constants per class.

Implementation Differences

Eon/Eiffel differs from the standard described in only a few small ways. However a number of features have not yet been implemented. These are described in the README file.

It is only possible to have one class per file.

The %U, NUL special character doesn't work. This is because the C printf() used by Eon/Eiffel cannot output a \0.

Strip only includes ancestors up to ANY. This keeps the size of the generated C++ code down.

C++ Compiler Problems

The currently supported version of DJGPP does not support C signal(). Until a ^C handler is included temporary files will not be tidied up after a keyboard interrupt.

Troubleshooting - DOS

This has been seen to occur on a machine with limited memory and has
"SHARE" installed. Share allocates buffers which consume a large
amount of memory. Either use the /F:xxxx switch to allocate a different
amount of memory or, if possible, don't use it at all.

NOTE. Microsoft recommend running "SHARE" with /F:5100 and /L:512

This has been observed a number of times. Removing "SHARE" from the system can cure the problem.

NOTE. Microsoft recommend running "SHARE" with /F:5100 and /L:512

This has been seen when running a machine without EMM386 loaded. Add DEVICE=C:\DOS\EMM386.exe 4096 to your config.sys file. Vary the number 4096 according to how much memory you have.

The browser should use the CFTIME environment variable but this is only supported in Unix at the moment. CFTIME is used to set the format of the time and date when displayed.

Troubleshooting - Linux

If the EON environment variable is set to a different name to that produced by C's getcwd() function, problems will occur.

You will see a message complaining about duplicate classes. One of the path names printed will *not* be that of the EON variable, note this down.

Take the following action:

  1. Change to $EON
  2. delete the database with "rm -r class.edb"
  3. set EON to point to the path name you noted
  4. Change to the "hello" directory
  5. Rebuild the database with "eon -v1 hello"

This problem will be corrected in a later release

Troubleshooting - General

Re-run "eon" specifying the -R flag.

When classes are being compiled, the C++ compiler may complain about prototype inconsistencies. Eon generates C++ prototypes based on Eiffel's "external" declaration. There is no way that these can be guaranteed to match those in a compilers header files.

The most common problem seems to be the addition of the "const" declaration.

eg. for atoi() Eon generates atoi (char *).
        gcc expects atoi(const char *).

Currently the only way to resolve this is to change the compilers header file or to make a call to a matching C function call which can act as a wrapper.

This is due to a new C++ type called "bool". By default Eon/Eiffel assumes that this is implemented in you compiler. This message will result if this is not the case.

You should add:

#define NEEDS_BOOL

to "eon/bibt/ert.H

If you are using a gcc compiler with a version number of less than 2.6.0, you will need to do this.

This is the reverse of the above "bool" type problem. Your compiler supports the "bool" type but you still have NEEDS_BOOL defined. You should track down the offending "#define NEEDS_BOOL" line in "eon/bibt/ert.H" and remove it.

Technical Support

The shareware version of Eon/Eiffel comes with no warranty and no obligatory support.

Online Documentation

Run the program "vdoc". Use CURSOR UP/DOWN and PAGE UP/DOWN to browse or CURSOR LEFT/RIGHT followed by ENTER to select a topic.

There is a help facility and a hardcopy print option.


[ Home Page ] [ Eiffel Archive ] [ Tools for Eiffel Developers ]