Author:admin

Date:2008-09-19T07:54:43.000000Z


git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@25 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
jfiat
2008-09-19 07:54:43 +00:00
parent c0aba35d72
commit 8a46c5d793
247 changed files with 1257 additions and 47 deletions

View File

@@ -1,5 +1,6 @@
[[Property:title|EiffelBase, Abstract Container Structures: The Taxonomy]]
[[Property:weight|0]]
[[Property:uuid|15ec3e87-45c6-ab53-ddad-d1348a9d8d75]]
A container data structure (or container in the sequel) is an object which serves to store and access collections of objects, called the '''items''' of the container. All classes describing containers are descendants of the deferred class [[ref:libraries/base/reference/container_chart|CONTAINER]] .
A container can be studied from three viewpoints: access, storage and traversal.

View File

@@ -1,5 +1,6 @@
[[Property:title|EiffelBase Data Structures, Lists]]
[[Property:weight|1]]
[[Property:uuid|23f540e0-16d5-807c-30af-74d3416a5709]]
Many applications need sequential structures, also called linear structures, in particular lists and circular chains. Apart from three classes describing individual list cells, all the classes involved are descendants of class [[ref:/libraries/base/reference/linear_chart|LINEAR]] , one of the deferred classes describing general traversal properties and introduced in the chapter that described the general data structure taxonomy. More precisely, all but one of the classes of interest for the present discussion are descendants, direct or indirect, from a class called [[ref:/libraries/base/reference/chain_chart|CHAIN]] which describes general sequential structures possessing a cursor as well as insertion properties. The exception is class [[ref:/libraries/base/reference/countable_sequence_chart|COUNTABLE_SEQUENCE]] , which describes infinite structures; all the others describe finite structures. <br/>
[[ref:/libraries/base/reference/chain_chart|CHAIN]] is an heir of [[ref:/libraries/base/reference/sequence_chart|SEQUENCE]] , which describes a more general notion of sequence. [[ref:/libraries/base/reference/sequence_chart|SEQUENCE]] is a descendant of [[ref:/libraries/base/reference/linear_chart|LINEAR]] . There are two main categories of sequential structures: some, called circular chains, are cyclic; others, called lists, are not. Another distinction exists between dynamic structures, which may be extended at will, and fixed ones, which have a bounded capacity. <br/>
In all of the structures under review you may insert two or more occurrences of a given item in such a way that the occurrences are distinguishable. In other words, the structures are bags rather than just sets, although it is possible to use them to implement sets.

View File

@@ -1,5 +1,6 @@
[[Property:title|EiffelBase, Dispensers]]
[[Property:weight|2]]
[[Property:uuid|4f65d62b-940b-c3c2-557e-d709a2a1bcaf]]
A dispenser is called that way because of the image of a vending machine (a dispenser) of a rather primitive nature, in which there is only one button. If you press the button and the dispenser is not empty, you get one of its items in the exit tray at the bottom, but you do not choose that item: the machine does. There is also an input slot at the top, into which you may deposit new items; but you have no control over the order in which successive button press operations will retrieve these items.
The deferred class [[ref:/libraries/base/reference/dispenser_chart|DISPENSER]] provides the facilities which will be shared by all specialized classes. In fact, the interface of all dispenser classes is nearly identical, with the exception of a few extra possibilities offered by priority queues. Many kinds of dispenser are possible, each defined by the relation that the machine defines between the order in which items are inserted and the order in which they arereturned. The Base libraries support three important categories - stacks, queues, and priority queues:

View File

@@ -1,5 +1,6 @@
[[Property:title|EiffelBase, Iteration]]
[[Property:weight|6]]
[[Property:uuid|9c0313bf-571d-0c8d-5c49-8bd99f86bed5]]
The classes of the Iteration cluster encapsulate control structures representing common traversal operations.
=Iterators and Agents=

View File

@@ -1,5 +1,6 @@
[[Property:title|EiffelBase, Sets]]
[[Property:weight|4]]
[[Property:uuid|44d33f46-cfa9-2aca-6b4f-2d9d91723d85]]
Sets are containers where successive occurrences of the same item are not distinguished: inserting the same item twice has the same observable effect as inserting it once.
==Deferred classes==

View File

@@ -1,5 +1,6 @@
[[Property:title|EiffelBase, Tables]]
[[Property:weight|5]]
[[Property:uuid|194a63a2-e440-18dc-c9d5-6959dbe169fb]]
Hash tables are a convenient mechanism tostore and retrieve objects identified by unique keys.
==Why use hash tables?==
The main advantage of hash tables is the efficiency of the basic operations: store ( [[ref:libraries/base/reference/hash_table_chart|put]] ) and retrieve ( [[ref:libraries/base/reference/hash_table_chart|item]] , [[ref:libraries/base/reference/hash_table_chart|remove]] ). <br/>

View File

@@ -1,5 +1,6 @@
[[Property:title|EiffelBase, Trees]]
[[Property:weight|3]]
[[Property:uuid|8357fc1a-a089-c846-aee8-18b8fb26c288]]
Trees and their immediate generalization, forests, are useful for any system that manipulates hierarchically organized information. The range of applications is broad, from abstract syntax trees in compilers through document structures in text processing systems to company organization charts in business software. <br/>
Trees, in particular binary trees and their variants, also provide convenient implementations of container data structures.

View File

@@ -1,5 +1,6 @@
[[Property:title|EiffelBase Data Structures Overview]]
[[Property:weight|1]]
[[Property:uuid|195085fd-0b2f-8211-3d70-81c32cc13566]]
The data structures cluster of EiffelBase includes classes that cover a wide range of data structures classes for you to reuse in your systems. The cluster is divided into a number of subclusters. Each subcluster contains one or more '''deferred''' classes, which provide the general high-level abstractions; other classes in the cluster inherit from the deferred ones.
The highest-level class is [[ref:libraries/base/reference/container_chart| CONTAINER]] , with the following heirs:

View File

@@ -1,5 +1,6 @@
[[Property:title|EiffelBase, The Kernel]]
[[Property:weight|0]]
[[Property:uuid|f6229125-dd7e-a50d-5b97-3ad7cd6071d5]]
In addition to basic concepts close to the language level, the Kernel covers such common needs as '''input''' and '''output''', '''storage''' and '''retrieval''' of objects on persistent storage, fine control over '''exception handling''' and '''memory management''', and access to '''operating system facilities'''. The kernel can be divided into 5 logical clusters of classes:
* The first cluster contains the universal class defining facilities accessible to all other classes: [[ref:/libraries/base/reference/any_chart|ANY]] . Every developer-defined class is a descendant of this class.
* The second cluster includes classes whose facilities are directly related to language concepts:

View File

@@ -1,5 +1,6 @@
[[Property:title|EiffelBase Support Cluster]]
[[Property:weight|2]]
[[Property:uuid|f9c2a003-9836-6688-db1f-5aa31313b317]]
The support cluster offers some commonly needed functionality that do not belong to the kernel.
==Conversions, mathematical properties and ASCII characters==