1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
|
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage 2.0">
<title>EiffelBase Containers</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%">
<tr>
<td><font size="6"><strong>EiffelBase Containers</strong></font></td>
<td align="right"><a href="dispenser.html"><img
src="../image/previous.gif" alt="Previous" border="0"
width="40" height="40"></a><a href="flatshort/index.html"><img
src="../image/next.gif" alt="Next" border="0" width="40"
height="40"></a></td>
</tr>
</table>
<hr size="1">
<p align="center"><img src="image/base.gif" width="600"
height="772"></p>
<p align="left"><a href="see_also.html#EiffelBase"><em>EiffelBase</em></a>
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 <a
href="see_also.html#reusable_software"><em>Reusable Software</em></a>.
In August 1998 ISE has released the source of <em>EiffelBase</em>
under the IFELL (ISE Free Eiffel Library License). This was a
great news since there was a hope to see the code of <em>EiffelBase</em>
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 <em>EiffelBase</em>.
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 <em>EiffelBase</em>
to the Eiffel community was received as a first step toward
Eiffel libraries portability. Unfortunately, because of the fact
that the code of <em>EiffelBase</em> relies too closely ISE
Eiffel, it was deemed nearly impossible to port <em>EiffelBase</em>
to <em>SmallEiffel</em>, the GNU Eiffel compiler. Early attempts
to port <em>EiffelBase</em> did not go to completion or failed,
the hopes for Eiffel libraries portability turned back to
projects such as the <a href="../index.html"><em>Gobo Eiffel
Project</em></a>.</p>
<p align="left">Of course I can only encourage Eiffel programmers
to use the <em>Gobo</em> libraries and in particular the <em>Gobo
Eiffel Structure Library</em> in order to develop portable Eiffel
applications and libraries. But it would be a shame if the
numerous third-party Eiffel libraries based on <em>EiffelBase</em>
were not reusable with Eiffel compilers not supporting <em>EiffelBase</em>.
To address this problem the <em>Gobo Eiffel Structure Library</em>
has been extended with a new cluster <font color="#800000"><tt>base</tt></font>.
This cluster contains the main <em>EiffelBase</em> classes such
as <font color="#008080"><em><tt>LINKED_LIST</tt></em></font>, <font
color="#008080"><em><tt>ARRAYED_LIST</tt></em></font> or <font
color="#008080"><em><tt>HASH_TABLE</tt></em></font>. Since the <em>EiffelBase</em>
library, and therefore its interface, has been made open source,
the classes in the <font color="#800000"><tt>base </tt></font>cluster
have the same flat-short form as their original versions in <em>EiffelBase</em>,
but their features have been implemented by inheriting from the <em>Gobo</em>
container classes. But although it works with all Eiffel
compilers supported by <em>Gobo</em>, the <font color="#800000"><tt>base
</tt></font>cluster is not a port of <em>EiffelBase</em>. Only a
small subset of <em>EiffelBase</em> 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 <font color="#800000"><tt>base </tt></font>cluster
can be used in place of the <em>EiffelBase</em> 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 <em>EiffelBase</em> but rather a temporary means to use
legacy Eiffel libraries based on <em>EiffelBase</em>. In any
case, the classes of the <font color="#800000"><tt>base </tt></font>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 <em>Gobo Eiffel Structure Library</em>.</p>
<p align="left">The classes that are part of the <font
color="#800000"><tt>base </tt></font>cluster are represented in
green in the above picture (note that the class <font
color="#008080"><em><tt>CONTAINER</tt></em></font> appears
several times to avoid cluttering too much the graph). The <font
color="#800000"><tt>base </tt></font>cluster from the <em>Gobo
Eiffel Structure Library </em>is supposed to replace the <font
color="#800000"><tt>structure</tt></font> clusters of the <em>EiffelBase</em>
library. However some of the classes in the ISE's <font
color="#800000"><tt>kernel</tt></font> and <font color="#800000"><tt>support</tt></font>
clusters rely on some other classes from the <font
color="#800000"><tt>structure</tt></font> clusters. These classes
appear in white in the inheritance graph and are not part of the <font
color="#800000"><tt>base </tt></font>cluster. In order to make
these classes compile without the <font color="#800000"><tt>structure</tt></font>
clusters of <em>EiffelBase</em>, new classes have been added to <em>Gobo</em>'s
<font color="#800000"><tt>base </tt></font>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 <font
color="#800000"><tt>kernel</tt></font> and <font color="#800000"><tt>support</tt></font>
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.</p>
<p align="left">It is not the purpose of this documentation to
explain how to use the <em>EiffelBase</em> classes. Should you
need such information please refer to the <a
href="see_also.html#EiffelBase"><em>EiffelBase</em></a>
documentation or the book <a
href="see_also.html#reusable_software"><em>Reusable Software</em></a><em>
</em>directly.</p>
<p align="left">In order to use <em>Gobo</em>'s <font
color="#800000"><tt>base </tt></font>cluster instead of <em>EiffelBase</em>,
proceed as follows:</p>
<ol>
<li><p align="left">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:</p>
<div align="left"><pre><font color="#800000"> $EIFFEL4\library\base\structures\*</font></pre>
</div></li>
<li><p align="left">Keep the following clusters if you use
ISE Eiffel or Halstenbach:</p>
<div align="left"><pre><font color="#800000"> $EIFFEL4\library\base\structures\kernel
$EIFFEL4\library\base\structures\support</font></pre>
</div></li>
<li><p align="left">Add the following line:</p>
<div align="left"><pre><font color="#800000"> $GOBO\library\structure\base</font></pre>
</div><p align="left">along with the other <em>Gobo
Eiffel Structure Library </em>clusters.</p>
</li>
</ol>
<p align="left">The cluster pathnames specified in this paragraph
may slightly differ depending on the platform and the Eiffel
compiler you are using.</p>
<p align="left">Note that if you use SmallEiffel you will have a
classname clash with class <font color="#008080"><em><tt>LINKED_LIST</tt></em></font>.
If you don't use SmallEiffel's version of <font color="#008080"><em><tt>LINKED_LIST
</tt></em></font>in your program, then this will not be a
problem. You would just have to make sure that <em>Gobo</em>'s <font
color="#800000"><tt>base</tt></font> cluster is listed before
SmallEiffel's <font color="#800000"><tt>lib_std</tt></font>
cluster in your loadpath file.</p>
<hr size="1">
<table border="0" width="100%">
<tr>
<td><address>
<font size="2"><b>Copyright 1999</b></font><font
size="1"><b>, </b></font><font size="2"><strong>Eric
Bezault</strong></font><strong> </strong><font
size="2"><br>
<strong>mailto:</strong></font><a
href="mailto:ericb@gobosoft.com"><font size="2">ericb@gobosoft.com</font></a><font
size="2"><br>
<strong>http:</strong></font><a
href="http://www.gobosoft.com"><font size="2">//www.gobosoft.com</font></a><font
size="2"><br>
<strong>Last Updated:</strong> 30 August 1999</font><br>
<!--webbot bot="PurpleText"
preview="
$Date: 1999/10/02 11:54:07 $
$Revision: 1.2 $"
-->
</address>
</td>
<td align="right" valign="top"><a
href="http://www.gobosoft.com"><img
src="../image/home.gif" alt="Home" border="0" width="40"
height="40"></a><a href="index.html"><img
src="../image/toc.gif" alt="Toc" border="0" width="40"
height="40"></a><a href="dispenser.html"><img
src="../image/previous.gif" alt="Previous" border="0"
width="40" height="40"></a><a href="flatshort/index.html"><img
src="../image/next.gif" alt="Next" border="0" width="40"
height="40"></a></td>
</tr>
</table>
</body>
</html>
|