Banner showing base of Eiffel tower

Github

Download version 1.4.8: Windows or Linux

Base Library: Data Structure

This library cluster has 95 classes.

ECF: base.ecf

Source code: directory list

Various hash-table, array, list, chain and linear types

Hash Tables

HASH_TABLE [G, K -> HASHABLE]
   EL_COUNTER_TABLE [K -> HASHABLE]
   EL_STRING_ESCAPER [S -> STRING_GENERAL create make end]
   EL_FUNCTION_RESULT_TABLE [TARGET, R]
   EL_HTTP_COOKIE_TABLE
   EL_CODE_TABLE [K -> HASHABLE]
      EL_UNIQUE_CODE_TABLE [K -> HASHABLE]
   EL_ESCAPE_TABLE
   EL_IMMUTABLE_STRING_TABLE* [GENERAL -> STRING_GENERAL create make end, IMMUTABLE ->
                                                                                   IMMUTABLE_STRING_GENERAL]
         EL_TUPLE_FIELD_TABLE
   EL_STRING_GENERAL_UNESCAPER* [R -> READABLE_STRING_GENERAL, G -> STRING_GENERAL]
   EL_GROUP_TABLE [G, K -> HASHABLE]
      EL_FUNCTION_GROUP_TABLE [G, K -> HASHABLE]
   ECD_INDEX_TABLE* [G -> EL_STORABLE create make_default end, K -> HASHABLE]
      ECD_REFLECTIVE_INDEX_TABLE [G -> EL_REFLECTIVELY_SETTABLE_STORABLE create make_default end, K ->
                                                                                                   HASHABLE]
   EL_CACHE_TABLE* [G, K -> HASHABLE]
      EL_INITIALIZED_OBJECT_FACTORY [F -> EL_FACTORY [G], G]
         EL_INITIALIZED_FIELD_FACTORY
      EL_AGENT_CACHE_TABLE [G, K -> HASHABLE]
   EL_HASH_TABLE [G, K -> HASHABLE]
      EL_STRING_GENERAL_TABLE [G]
      EL_CONFORMING_INSTANCE_TABLE [G]
      EL_STRING_HASH_TABLE [G, K -> STRING_GENERAL create make end]
      EL_STRING_CONVERSION_TABLE
      EL_TYPE_TABLE [G]
      EL_IMMUTABLE_KEY_8_TABLE [G]
   EL_FUNCTION_CACHE_TABLE [G, OPEN_ARGS -> TUPLE create default_create end]
      EL_FILLED_STRING_8_TABLE
      EL_FILLED_STRING_TABLE* [STR -> READABLE_STRING_GENERAL]

Linear Chains

EL_LINEAR* [G]
   EL_FILE_GENERAL_LINE_SOURCE* [S -> STRING_GENERAL create make end]
      EL_STRING_8_IO_MEDIUM_LINE_SOURCE
      EL_PLAIN_TEXT_LINE_SOURCE
         EL_ENCRYPTED_PLAIN_TEXT_LINE_SOURCE
      EL_ZSTRING_IO_MEDIUM_LINE_SOURCE
   EL_LINEAR_STRINGS* [S -> STRING_GENERAL create make end]
      EL_SPLIT_STRING_LIST [S -> STRING_GENERAL create make end]
      EL_STRING_CHAIN* [S -> STRING_GENERAL create make end]
         EL_LINKED_STRING_LIST [S -> STRING_GENERAL create make, make_empty end]
         EL_STRING_LIST [S -> STRING_GENERAL create make end]
   EL_CHAIN* [G]
      EL_QUERYABLE_CHAIN* [G]
         EL_QUERYABLE_ARRAYED_LIST [G]
            ECD_ARRAYED_LIST [G -> EL_STORABLE create make_default end]
               ECD_STORABLE_ARRAYED_LIST [G -> EL_STORABLE create make_default end]
      EL_ARRAYED_LIST [G]
         EL_NAMEABLES_LIST [G -> EL_NAMEABLE [READABLE_STRING_GENERAL]]
         EL_UNIQUE_ARRAYED_LIST [G -> HASHABLE]
         EL_ARRAYED_COMPACT_INTERVAL_LIST
         EL_CALL_SEQUENCE [CALL_ARGS -> TUPLE create default_create end]
         EL_DISCARDING_ARRAYED_LIST [G]
         EL_DIRECTORY_LIST
         EL_SORTABLE_ARRAYED_LIST [G -> COMPARABLE]
         EL_ARRAYED_RESULT_LIST [G, R]
         EL_SPLIT_READABLE_STRING_LIST [S -> READABLE_STRING_GENERAL create make end]
         EL_TRANSLATION_ITEMS_LIST
         EL_ARRAYED_INTERVAL_LIST
            EL_SEQUENTIAL_INTERVALS
               EL_OCCURRENCE_INTERVALS
         EL_ARRAYED_MAP_LIST [K, G]
            EL_KEY_INDEXED_ARRAYED_MAP_LIST [K -> COMPARABLE, G]
            EL_CONFORMING_INSTANCE_TYPE_MAP [G]
            EL_HASHABLE_KEY_ARRAYED_MAP_LIST [K -> HASHABLE, G]
            EL_STYLED_TEXT_LIST* [S -> STRING_GENERAL]
      EL_STRING_CHAIN* [S -> STRING_GENERAL create make end]

Container Structure Extensions

This EL_CONTAINER_STRUCTURE [G] abstraction provides many extra facilities for classes that implement the CONTAINER [G] base class. It inherits class EL_CONTAINER_NUMERIC_CALCULATER [G].

EL_CONTAINER_STRUCTURE* [G]
   EL_HASH_SET [H -> HASHABLE]
      EL_MEMBER_SET [G -> EL_SET_MEMBER [G]]
      EL_FIELD_NAME_SET
   EL_CONTAINER_WRAPPER [G]
      EL_SAVED_CURSOR [G]
   EL_RESULT_SUMMATOR [G, N -> NUMERIC]
   EL_CONTAINER_ITEM [G]
   EL_RESULT_MAXIMUM [G, N -> (NUMERIC, COMPARABLE)]
   EL_LINEAR* [G]
      EL_CHAIN* [G]
         EL_QUERYABLE_CHAIN* [G]
            EL_QUERYABLE_ARRAYED_LIST [G]
         EL_ARRAYED_LIST [G]

Other Classes

Directory: library/base/data_structure

[ . ]

. /arrays

. /hash_table

. /hash_table/code

. /hash_table/field

. /hash_table/function

. /hash_table/group

. /hash_table/support

. /list

. /list/arrayed

. /list/queryable

. /list/queryable/condition

. /list/support

. /map/list

. /pool

. /set

[ . ]

EL_CHOICE

Allows expression like: choose [48, 24] #? Executable.is_finalized

Further Information

Click on class link to see client examples.

EL_CONTAINER_HANDLER

Provide access to container internals like area: SPECIAL [G]

EL_DEFERRED_CELL

A data cell with deferred initialization of the item

Further Information

Click on class link to see client examples.

EL_MODULO_INDEXABLE

Abstraction for indexing a data array with

EL_SHARED_CELL

Shared cell

Further Information

Click on class link to see client examples.

EL_STATE_MACHINE

State machine

arrays

EL_BOOLEAN_INDEXABLE

Array that is indexable by a BOOLEAN value

Further Information

Click on class link to see client examples.

EL_BYTE_ARRAY

Array of 8 bit bytes: TO_SPECIAL [NATURAL_8]

Further Information

Click on class link to see descendants and client examples.

EL_EXTENDABLE_AREA

Abstraction with extendible area of type SPECIAL [G] area. It can be implemented with the aid of class EL_EXTENDABLE_AREA_IMP [G]

Further Information

Click on class link to see descendants.

EL_EXTENDABLE_AREA_IMP

Class to make descendants of abstract class EL_EXTENDABLE_AREA createable.

EL_PADDED_BYTE_ARRAY

bytes with a count equal to muliple of a_block_size. Creation area arguments that do not fit exactly are padded with bytes of value equal to the padding count.

EL_SLICEABLE_SPECIAL

Slicing of a SPECIAL [G] array using zero based modulo indexing so that item (0, 1) is a special array containing the first two items and item (-2, -1) the last two.

Further Information

Click on class link to see notes.

EL_SUBARRAY

Sub arrays implemented using shared memory areas rather than copied memory area. For large arrays, subarray memory copies can incurr a significant performance overhead. Using shared memory subarrays can in some applications reduce execution time by as much as 50%. (hard to believe I know)

Sub array can be referenced using either lower to upper indexes of parent array or 1 based index.

Further Information

Click on class link to see client examples.

EL_VERSION_ARRAY

An array of decimal version numbers that can be compacted into a NATURAL_32 number

Further Information

Click on class link to see notes and client examples.

hash_table

EL_AGENT_CACHE_TABLE

EL_CACHE_TABLE with new_item calling a supplied agent function

Further Information

Click on class link to see client examples.

EL_CACHE_TABLE

Table to cache results of new_item creation procedure

EL_CONFORMING_INSTANCE_TABLE

Map an array of base types to associated shared objects to function as an alternative to the following kind of **elseif* branching:

if attached {TYPE_A} obj then
   Result := thing_for_type_a

elseif attached {TYPE_B} obj then
   Result := thing_for_type_b

elseif attached {TYPE_C} obj then
   Result := thing_for_type_c
end

Further Information

Click on class link to see notes and client examples.

EL_COUNTER_TABLE

Table to count number of attempts to insert key with put routine

Further Information

Click on class link to see client examples.

EL_HASH_TABLE

Extended version of base class HASH_TABLE

Further Information

Click on class link to see descendants and client examples.

EL_IMMUTABLE_KEY_8_TABLE

Hash table conforming to EL_HASH_TABLE [G, IMMUTABLE_STRING_8]

Further Information

Click on class link to see descendants.

EL_OBJECTS_BY_TYPE

Lookup objects by type_id

Further Information

Click on class link to see client examples.

EL_PROCEDURE_TABLE

Table of procedures with latin-1 encoded keys

Further Information

Click on class link to see client examples.

EL_STRING_32_TABLE

Table with keys conforming to READABLE_STRING_32

Further Information

Click on class link to see client examples.

EL_STRING_8_TABLE

Table with keys conforming to READABLE_STRING_8

Further Information

Click on class link to see descendants and client examples.

EL_TYPE_TABLE

Caches objects associated with a type

hash_table/code

EL_CODE_TABLE

Code table

EL_UNIQUE_CODE_TABLE

Unique code table

EL_ZSTRING_TOKEN_TABLE

A table of unique words used to create tokenized strings that can be reassembled into the original string.

Further Information

Click on class link to see client examples.

hash_table/field

EL_FIELD_TYPE_QUERY

Query an object conforming to type EL_REFLECTIVE for fields of parameter type G or optionally conforming to type G

Further Information

Click on class link to see client examples.

EL_FIELD_VALUE_TABLE

Table of field values of type G from an object conforming to EL_REFLECTIVE

Further Information

Click on class link to see client examples.

hash_table/function

EL_FUNCTION_CACHE_TABLE

Table to cache results of a function with multiple hashable arguments

Further Information

Click on class link to see descendants.

EL_FUNCTION_RESULT_TABLE

Object for caching the result of a call to function new_item for each generating type of the generic parameter TARGET.

hash_table/group

EL_FUNCTION_GROUPED_LIST_TABLE

Table for grouping items of type G into lists of type EL_ARRAYED_LIST [G] according to the result of applying a function agent of type FUNCTION [G, K] where K conforms to HASHABLE.

EL_FUNCTION_GROUPED_SET_TABLE

Table for grouping items of type G into sets of type EL_ARRAYED_LIST [G] according to the result of applying a function agent of type FUNCTION [G, K] where K conforms to HASHABLE.

Further Information

Click on class link to see client examples.

EL_GROUPED_LIST_TABLE

Table for grouping items into lists according to a hashable key. The lists items are implemented as EL_ARRAYED_LIST [G].

Further Information

Click on class link to see notes, descendants and client examples.

EL_GROUPED_SET_TABLE

Table for grouping items into sets according to a hashable key. The set items are implemented as EL_ARRAYED_LIST [G].

Further Information

Click on class link to see notes and client examples.

hash_table/support

EL_GROUPED_LIST_TABLE_ITERATION_CURSOR

HASH_TABLE_ITERATION_CURSOR for EL_GROUPED_LIST_TABLE

EL_HASH_TABLE_ITERATION_CURSOR

Iteration cursor for EL_HASH_TABLE [ANY, HASHABLE] to fix problem with cursor_index when items have been deleted

EL_IMMUTABLE_KEY_8_LOOKUP

Abstraction for looking up tables with keys of type IMMUTABLE_STRING_8 with a key conforming to READABLE_STRING_GENERAL

EL_SHAREABLE_CACHE_TABLE

Base class for shared singleton cache table

list

EL_CHAIN

Sequence of items

Further Information

Click on class link to see tests and descendants.

EL_CODE_VALUE_LIST

Code value list

Further Information

Click on class link to see client examples.

EL_LINEAR

Extension to LINEAR [G] abstract structure whose items may be accessed sequentially, one-way

Further Information

Click on class link to see descendants.

EL_REPEATED_NUMERIC_LIST

Object that uses run length encoding to data compress a sequence of numeric values that tend to repeat a lot.

Further Information

Click on class link to see client examples.

list/arrayed

EL_ARRAYED_COMPACT_INTERVAL_LIST

Alternative implementation of EL_ARRAYED_INTERVAL_LIST by bit-shifting each 32-bit upper and lower into a INTEGER_64. Turns out to be not as efficient as using a SPECIAL [INTEGER_32] with twice as many items.

Further Information

Click on class link to see client examples.

EL_ARRAYED_INTERVALS_CURSOR

Iteration cursor for EL_ARRAYED_INTERVAL_LIST

EL_ARRAYED_INTERVAL_LIST

Sequence of INTEGER_32 intervals (compressed as INTEGER_64's for better performance)

Further Information

Click on class link to see descendants and client examples.

EL_ARRAYED_LIST

ARRAYED_LIST [G] with extra features

Further Information

Click on class link to see notes, tests, descendants and client examples.

EL_ARRAYED_REPRESENTATION_LIST

An arrayed list abstraction of objects of type R, that are representations of a seed object of type N. Only the seed objects are actually stored and the representations are created on the fly during iteration. More often that not, the seed object will conform to type NUMERIC.

Further Information

Click on class link to see client examples.

EL_ARRAYED_RESULT_LIST

An EL_ARRAYED_LIST [R] that is the result of applying a function to all the items in a container conforming to CONTAINER [G] where R is the result type, and G is the function operand type.

Further Information

Click on class link to see client examples.

EL_CALL_SEQUENCE

Call sequence

Further Information

Click on class link to see client examples.

EL_DISCARDING_ARRAYED_LIST

EL_ARRAYED_LIST that starts discarding items from the head once the capacity has been reached

Further Information

Click on class link to see client examples.

EL_SEQUENTIAL_INTERVALS

Sequence of consecutive INTEGER_32 intervals (compressed as INTEGER_64's for better performance)

<< a1..b1, a2..b2, .. >>

such that b(n) < a(n + 1)

Further Information

Click on class link to see descendants and client examples.

EL_SORTABLE_ARRAYED_LIST

Sortable arrayed list

Further Information

Click on class link to see descendants and client examples.

EL_UNIQUE_ARRAYED_LIST

List of unique hashable items

Further Information

Click on class link to see client examples.

list/queryable

EL_QUERYABLE_ARRAYED_LIST

An arrayed list implementation of EL_QUERYABLE_CHAIN

Further Information

Click on class link to see descendants and client examples.

EL_QUERYABLE_CHAIN

A chain that is queryable using query condition objects that can be combined using the Eiffel logical operators: and, or, not.

Further Information

Click on class link to see notes.

EL_QUERY_CONDITION_FACTORY

Supporting class for lists implementing EL_QUERYABLE_CHAIN Use it to create various compound query conditions and derive a query condition object from an agent predicate.

Further Information

Click on class link to see client examples.

list/queryable/condition

EL_ALL_OF_QUERY_CONDITION

All of query condition

EL_AND_QUERY_CONDITION

And query condition

EL_ANY_QUERY_CONDITION

Query condition that returns True for every item if type G

Further Information

Click on class link to see tests and client examples.

EL_CONTAINER_HAS_QUERY_CONDITION

A query condition to test if a container has an item

EL_FUNCTION_VALUE_QUERY_CONDITION

Query condition to test if value of function with target G is equal to a specified value

EL_IS_DELETED_CONDITION

Condition is met if EL_STORABLE item is deleted

Further Information

Click on class link to see client examples.

EL_NOT_QUERY_CONDITION

Not query condition

EL_ONE_OF_QUERY_CONDITION

One of query condition

EL_OR_QUERY_CONDITION

Or query condition

EL_PREDICATE_QUERY_CONDITION

Predicate query condition

Further Information

Click on class link to see tests and client examples.

EL_QUERY_CONDITION

Query condition

Further Information

Click on class link to see tests and client examples.

EL_ROUTINE_QUERY_CONDITION

A query condition that involves applying a routine agent to determine condition

list/support

EL_ARRAYED_REPRESENTATION_LIST_ITERATION_CURSOR

Iteration cursor for EL_ARRAYED_REPRESENTATION_LIST

EL_CONTAINER_ARITHMETIC

Object to add together the NUMERIC results of a function applied to a CONTAINER [G] list of items filtered by an optional query condition EL_QUERY_CONDITION [G].

Further Information

Click on class link to see tests and client examples.

EL_CONTAINER_CONVERSION

Convert CONTAINER [G] to type conforming to EL_CONTAINER_STRUCTURE [G]

EL_CONTAINER_STRUCTURE

Routines that can be applied to current object if it conforms to CONTAINER [G]. Inherits routines from class EL_CUMULATIVE_CONTAINER_ARITHMETIC.

Further Information

Click on class link to see descendants.

EL_CONTAINER_WRAPPER

Createable version of class EL_CONTAINER_STRUCTURE

EL_CUMULATIVE_CONTAINER_ARITHMETIC

Numeric calculations that can be applied across container items

Further Information

Click on class link to see descendants.

EL_INTERVAL_LIST

Routines acting on array of type SPECIAL [INTEGER_32] containing substring interval indices. The current item is determined by the implementation of index.

EL_REPEATED_NUMERIC

Repeated numeric

EL_SORTED_INDEX_LIST

List of sorted indices for SPECIAL [COMPARABLE] array

map/list

EL_ARRAYED_MAP_ITERATION_CURSOR

Iteration cursor for EL_ARRAYED_MAP_LIST

EL_ARRAYED_MAP_LIST

Arrayed list of key-value pair tuples

Further Information

Click on class link to see descendants and client examples.

EL_CONFORMING_INSTANCE_TYPE_MAP

Map an array of base types to associated shared objects to function as an alternative to the following kind of **elseif* branching:

if attached {TYPE_A} obj then
   Result := thing_for_type_a

elseif attached {TYPE_B} obj then
   Result := thing_for_type_b

elseif attached {TYPE_C} obj then
   Result := thing_for_type_c
end

Further Information

Click on class link to see notes and client examples.

EL_KEY_INDEXED_ARRAYED_MAP_LIST

A EL_ARRAYED_MAP_LIST indexed by key conforming to COMPARABLE

Further Information

Click on class link to see client examples.

pool

EL_AGENT_FACTORY_POOL

Implementation of EL_FACTORY_POOL [G] using a supplied agent to create new items

Further Information

Click on class link to see client examples.

EL_BORROWED_OBJECT_CURSOR

Iteration cursor defining a scope in which a single item can be borrowed from a factory pool and then returned when across loop exits after first iteration. See class EL_BORROWED_OBJECT_SCOPE

Further Information

Click on class link to see client examples.

EL_BORROWED_OBJECT_SCOPE

Defines an across-loop scope in which a resource can be borrowed from a factory pool and then automatically returned after the first and only iteration of the cursor.

EL_FACTORY_POOL

Pool of reuseable objects that are either created or lent to client

Further Information

Click on class link to see client examples.

EL_ITERABLE_POOL_SCOPE

Iterable across loop scope during which a object can be borrowed from a pool factory and then automatically returned after the first and only iteration.

Further Information

Click on class link to see client examples.

EL_POOL_SCOPE_CURSOR

Iteration cursor defining a scope in which multiple items can be borrowed from a factory pool and then all returned when across loop exits after first iteration. See class EL_ITERABLE_POOL_SCOPE

Further Information

Click on class link to see client examples.

set

EL_HASH_SET

Hash set implementing EL_SET [H]

Further Information

Click on class link to see descendants and client examples.

EL_HASH_SET_IMPLEMENTATION

Implementation of EL_HASH_SET [HASHABLE]

EL_HASH_SET_ITERATION_CURSOR

ITERATION_CURSOR for EL_HASH_SET.

EL_MEMBER_SET

Set of objects conforming to EL_SET_MEMBER [HASHABLE]

Further Information

Click on class link to see client examples.

EL_SET

Abstract set of objects with membership test

Further Information

Click on class link to see descendants and client examples.

EL_SET_MEMBER

Object that is a member of a set of type EL_MEMBER_SET [EL_SET_MEMBER]