|
||||
Table of Contents Previous Chapter 0 INTRODUCTION[This introduction is not part of the Standard.] 0.1To favor the interoperability between implementations of Eiffel, it is necessary, along with a precise definition of the language, to have a well-defined set of libraries covering needs that are likely to arise in most applications. This library is known in Eiffel as the Kernel Library. 0.2The present document defines a standard for the Kernel Library. If an Eiffel implementation satisfies this Standard --- under the precise definition of Kernel Compatibility given in section 2.2 --- it will be able to handle properly any Eiffel system whose use of the Kernel Library only assumes the library properties defined in this Standard. 0.3The Eiffel Library standardization process, as described in
Appendix A
of the present document, is based on a dynamic view which, in the spirit of Eiffel's own "feature obsolescence" mechanism, recognizes the need to support evolution while preserving the technology investment of Eiffel users. One of the consequences of this dynamic view is to define vintages corresponding to successive improvements of the Standard. The present document describes Vintage 95, valid for the calendar year 1995.
The Eiffel Kernel Library Kernel Standard, denoted in the present document by the phrase "this Standard", is made up of the contents of sections 1 to 5 of the present document, with the exception of elements appearing between square brackets [...] which are comments. [As a result of the preceding definition the following elements are not part of this Standard: section 0, the table of contents, Appendix A in section 6 (the Kernel Library Standardization process), Appendix B in section 7 (list of differences), the Index (currently removed from the Web version), and elements playing a pure typesetting role such as page headers.] 1.2 Scope of this StandardThis Standard defines a number of library-related conditions that an Eiffel implementation must satisfy. These conditions affect a set of classes known as the kernel library. An implementation that satisfies the conditions described in this Standard will be said to be kernel-compatible, a phrase that is abbreviated in this Standard as just "compatible". [In other contexts it may be preferable to use the full phrase, since the compatibility of an Eiffel implementation also involves other aspects, such as language compatibility.] [The terms "compatibility" and "compatible" may be felt to be less clear than "conformance" and "conformant". The former are used here, however, since talking about conformance might cause confusions with the Eiffel notion of a type conforming to another.] 1.3 Other documentsThe phrase Eiffel: The Language as used in this Standard refers to the second printing of the book Eiffel: The Language, Prentice Hall, 1992, ISBN 0-13-245-925-7. For the purposes of this Standard, the definition of the Eiffel language is the definition given by Eiffel: The Language. In case of contradictions between the library specifications given by Eiffel: The Language and those given in this Standard, the latter shall take precedence. 2 COMPATIBILITY CONDITIONS2.1 Definitions2.1.1 Required ClassesIn this Standard, the phrase "Required Classes" denotes a set of classes whose names are those listed in section 3. 2.1.2 Required Flatshort FormIn this Standard, the phrase "Required Flatshort Forms" denotes the flatshort forms given for the Required Classes in section 3. 2.1.3 Flatshort CompatibilityIn this Standard, a class is said to be Flatshort-Compatible with one of the short forms given in this Standard if it satisfies the conditions given in section 2 of this Standard. 2.1.4 Required Ancestry LinksIn this Standard, the expression "Required Ancestry Links" denotes the inheritance links specified in section 4 of this Standard. [The term "Ancestry" is used rather than "Inheritance" because the required links may be implemented by indirect rather than direct inheritance, except for ANY which must be a direct heir of GENERAL as per rule 4.2, given on page 10.] 2.2 Kernel compatibility2.2.1 DefinitionAn Eiffel implementation will be said to be kernel-compatible if and only if it includes a set of classes satisfying the following five conditions:
[These conditions allow a kernel-compatible implementation to include inheritance links other than the ones described in this Standard; condition 2.2.1.4 indicates that for any such link the additional proper ancestors must also be provided by the implementors, since the dependents of a class include its parents.] [Condition 2.2.1.4 guarantees that if a feature name appears in this Standard both in the Flatshort form of a Required Class and in the flatshort form of one of its proper ancestors, it corresponds to the same feature or to a redefinition of it.] 2.3 Flatshort Conventions2.3.1 DefinitionIn the process of assessing for Flatshort Compatibility a class C from a candidate implementation, the following ten conventions, which have been applied to the Required Flatshort Forms as they appear in this Standard, shall be applied:
[As a consequence of the last two rules the specification of a creation procedure that is also generally exported will appear twice: in the Creation clause and in a Feature clause. Also note that the "features of a class" include inherited as well as immediate features, so that all features inherited from an ancestor other than GENERAL must appear in the flatshort form.]
-- (From A.)
-- (From x in A.) [The comments defined in the last two rules are applicable regardless of whether C redeclares the feature.]
2.4 Flatshort Compatibility2.4.1 DefinitionA class appearing in an Eiffel implementation is said to be Flatshort-Compatible with a class of the same name listed in this Standard if and only if any difference that may exist between its flatshort form ic and the flatshort form sc of the corresponding class as it appears in section 5, where both flatshort forms follow the conventions of section 2.3, belongs to one of the following eleven categories:
-- (Feature not in Kernel Library Kernel Standard.)
[As a consequence of section 2.4.1.11, the division of classes into one Feature_clause or more, and the labels of these clauses, appear in this document for the sole purpose of readability and ease of opdreference, but are not part of this Standard.] [The goal pursued by the preceding definition is to make sure that an Eiffel system that follows this Standard will be correctly processed by any compatible implementation, without limiting the implementors' freedom to provide more ambitious facilities.] 3 REQUIRED CLASSESThe Required Classes are the following twenty-six classes [ordered from the general to the specific, as in section 5]:
[The classes appear in this section and section and section 5 in the following order: universal classes; deferred classes for basic classes; basic classes; arrays and strings; operating system interface; auxiliary reference classes for the definition of basic classes.] 4 REQUIRED ANCESTRY LINKSThe following constitute the required ancestry links [ordered alphabetically, after the first rule, by the name of the applicable descendant class]:
[4.1 follows from Eiffel: The Language; the language description is considered to be amended in such a way that PLATFORM is a class without privileges, to be inherited explicitly by classes which need access to its features.] Table of Contents Next Chapter
|