REFERENCE SECTION: 

CLUSTERS:

A cluster is a group of clusters that have some commonality. It is physicaly
represented by a directory that contains the source code of the classes plus
other files required to make the cluster usable.

Example:

.../eon/intrinsic/
		COMMENT        comparab.e     general.e      numeric.e
		std_files.e	any.e          core.e         in_stream.e    
		out_stream.e   string.e 		array.e        file.e         
		io_stream.e    platform.e    

This directory structure shows the "intrinsic" cluster similar to that
shipped with Eon/Eiffel.


* The clusters name is taken from the name of the directory.

* The class source code (.e files) are create and edited in the cluster
  diretcory.

* The cluster may be commented by including the (optional) "COMMENT" text
  file. (SEE REF-CLUSTCOMMENT)


After the cluster has been compiled it will look something like this.
The file extensions will, of course, vary for different C++ compilers.

.../eon/intrinsic/
	COMMENT         comparable.t    general.H       numeric.C       std_files.H
	any.C           core.C          general.e       numeric.H       std_files.e
	any.H           core.H          general.o       numeric.e       std_files.o
	any.e           core.e          general.t       numeric.t       std_files.t
	any.o           core.o          in_stream.C     out_stream.C    string.C
	any.t           core.t          in_stream.H     out_stream.H    string.H
	array.C         eiffel_rt.C     in_stream.e     out_stream.e    string.e
	array.H         eiffel_rt.H     in_stream.o     out_stream.o    string.o
	                eiffel_rt.o     in_stream.t     out_stream.t    string.t
	array.e         file.C          io_stream.C     platform.C      tracb.C
	array.o         file.H          io_stream.H     platform.H      tracb.H
	array.t         file.e          io_stream.e     platform.e      tracb.o
	comparable.C    file.o          io_stream.o     platform.o  
	comparable.H    file.t          io_stream.t     platform.t
	comparable.e    general.C       libintrinsic.a  std_files.C


Not all of these are directly related to class files. A cluster can
contain C or C++ files, although this is unusual. In this case they form
part of the Eon/Eiffel runtime system. The file types are detailed below:

.e	 class source code
.t	 AST file produced by the Eiffel compiler
.C    C++ source code. This may me produced by the Eiffel compiler or
       may be written by the programmer
.H    C++ header file associated with the corrisponding .C file
.o	 Object file producted by the C compiler. MSDOS users are more likely
	  to see a ".obj" extension
.a    A library archive of all the object files. MSDOS users are more likely
       to see a ".lib" extension 


If a cluster contains root classes, it may look something like this

.../test/
	_test.C 
	test.e 
	test.l 
	test.o
	test.t
	test.C
	test.H
	libtest.a
	test

Here we have several other files added:

test.l		The system description file (Lace)
_test.C 		The programs root stub. This is generated when a root class is
			 compiled. It contains the C main() routine and will create the
			 root object and call a creation routine. The program will run
    			 from this point.
test			The exectable file ( MSDOS users will see test.exe)

Note that there is still a library archive even though the only class is a
root. This is simply because the class "test.e" may be used by another program
as an ordinary class so it must be treated as such when it is compiled.


It can be seen from this example that clusters are not just for libraries,
the classes that produce exeutable programs are also in clusters. The above
example shows a class that produces a program in a cluster that are all
called "test". A slightly more realistic example would be:

.../accounts/
	purchase.e
	purchase.l
	sales.e
	sales.l
	stock.e
	stock.l

This is the basis for an accounts system with three programs, "sales", "stock"
and purchase.


When a program's C code is compiled, the cluster directory is
specified with the compilers -I option so header files can be located. When
the program is linked, the library acrchive in the cluster directory is
specified.


Clusters may be created anywhere in a file system and any programs produced
need not be located in the cluster. This sort of control is given by the
system description file ("LACE").

A cluster directory may be created and referred to in upper or lower case. 
However, the compiler will always convert them to upper case internaly.
Mixing cases in a name may lead to confusion.



MSDOS.

If a cluster name is greater than 8 characters it is still valid, and will
access a directory with the name truncated. This will, of course, give problems
if two clusters are similarly named where the first 8 characters are the
same.




