EiffelBase Containers PreviousNext

EiffelBase is a library of fundamental structures and algorithms covering the basics of computing, and resulting from a "Linnaean" effort at a general-purpose taxonomy of computing structures. The library and its design principles are described in detail in the book Reusable Software. In August 1998 ISE has released the source of EiffelBase under the IFELL (ISE Free Eiffel Library License). This was a great news since there was a hope to see the code of EiffelBase ported to other Eiffel compilers. The reason of the excitement was not due to the fact that Eiffel programmers would now be able to use this container library in a portable way across various Eiffel compilers but rather due to the consequence of that. Indeed many third-party Eiffel libraries are based on EiffelBase. This meant that unless a great amount of effort was provided to port these libraries to another Eiffel compiler, they would only work with ISE Eiffel. So releasing the source of EiffelBase to the Eiffel community was received as a first step toward Eiffel libraries portability. Unfortunately, because of the fact that the code of EiffelBase relies too closely ISE Eiffel, it was deemed nearly impossible to port EiffelBase to SmallEiffel, the GNU Eiffel compiler. Early attempts to port EiffelBase did not go to completion or failed, the hopes for Eiffel libraries portability turned back to projects such as the Gobo Eiffel Project.

Of course I can only encourage Eiffel programmers to use the Gobo libraries and in particular the Gobo Eiffel Structure Library in order to develop portable Eiffel applications and libraries. But it would be a shame if the numerous third-party Eiffel libraries based on EiffelBase were not reusable with Eiffel compilers not supporting EiffelBase. To address this problem the Gobo Eiffel Structure Library has been extended with a new cluster EiffelBase in $GOBO/library/other. This cluster contains the main EiffelBase classes such as LINKED_LIST, ARRAYED_LIST or HASH_TABLE. Since the EiffelBase library, and therefore its interface, has been made open source, the classes in the EiffelBase cluster have the same flat-short form as their original versions in EiffelBase, but their features have been implemented by inheriting from the Gobo container classes. But although it works with all Eiffel compilers supported by Gobo, the EiffelBase cluster is not a port of EiffelBase. Only a small subset of EiffelBase classes is available and although the interface and semantics of the classes are the same as their original versions, the internal implementation and inheritance hierarchy are different. This means that the classes provided in the EiffelBase cluster can be used in place of the EiffelBase classes when used by client classes, but there is no guarantee that inheriting from these classes will work. Please keep in mind that it is not a port of EiffelBase but rather a temporary means to use legacy Eiffel libraries based on EiffelBase. In any case, the classes of the EiffelBase cluster should be considered as obsolete (in the Eiffel terminology meaning), that is they are useful to make existing code still work with various Eiffel compilers but should not be used to develop new Eiffel software. To develop new Eiffel software one should rather use the Gobo Eiffel Structure Library.

The classes that are part of the EiffelBase cluster are represented in green in the above picture (note that the class CONTAINER appears several times to avoid cluttering too much the graph). The EiffelBase cluster from the Gobo Eiffel Structure Library is supposed to replace the structures clusters of the EiffelBase library. However some of the classes in the ISE's kernel and support clusters rely on some other classes from the structures clusters. These classes appear in white in the inheritance graph and are not part of the EiffelBase cluster. In order to make these classes compile without the structures clusters of EiffelBase, new classes have been added to Gobo's EiffelBase cluster. They are represented in light-grey. These classes are not really part of abstraction but are only there to make it work with ISE's kernel and support clusters. You should not rely on these light-grey classes to compile other Eiffel libraries. Only green classes can be use without too much troubles.

It is not the purpose of this documentation to explain how to use the EiffelBase classes. Should you need such information please refer to the EiffelBase documentation or the book Reusable Software directly.

In order to use Gobo's EiffelBase cluster instead of EiffelBase, proceed as follows:

  1. Comment out the following clusters in your Ace file (ISE Eiffel, Halstenbach), your ESD file (Visual Eiffel) or your loadpath file (SmallEiffel) depending on the Eiffel compiler you are using:

        $EIFFEL4/library/base/structures/*
  2. Keep the following clusters if you use ISE Eiffel or Halstenbach:

        $EIFFEL4/library/base/structures/kernel
        $EIFFEL4/library/base/structures/support
  3. Add the following line:

        $GOBO/library/other/EiffelBase

    along with the other Gobo Eiffel Structure Library clusters.

The cluster pathnames specified in this paragraph may slightly differ depending on the platform and the Eiffel compiler you are using.

Note that if you use SmallEiffel you will have a classname clash with class LINKED_LIST. If you don't use SmallEiffel's version of LINKED_LIST in your program, then this will not be a problem. You would just have to make sure that Gobo's EiffelBase cluster is listed before SmallEiffel's lib_std cluster in your loadpath file.


Copyright © 1999-2001, Eric Bezault
mailto:
ericb@gobosoft.com
http:
//www.gobosoft.com
Last Updated: 31 March 2001

HomeTocPreviousNext