Eiffel Media API
Overview Cluster Class Classes Index      Previous Next      Top Features

kernel.spec.ise

Class KL_ARRAY_ROUTINES


Direct ancestors

KL_IMPORTED_ANY_ROUTINES

Features

Invariants

indexing

description

Routines that ought to be in class ARRAY

library

Gobo Eiffel Kernel Library

copyright

Copyright (c) 1999, Eric Bezault and others

license

Eiffel Forum License v2 (see forum.txt)

date

$Date: 2005/06/29 12:47:35 $

revision

$Revision: 1.10 $

class

KL_ARRAY_ROUTINES [G]

inherit

KL_IMPORTED_ANY_ROUTINES

feature -- Initialization

make_from_array (an_array: ARRAY [G]; min_index: INTEGER): ARRAY [G]

-- Create a new array and initialize it
-- with items from an_array.

require
an_array_not_void: an_array /= Void
ensure
array_not_void: Result /= Void
lower_set: Result.lower = min_index
count_set: Result.count = an_array.count

feature -- Access

any_: KL_ANY_ROUTINES

-- Routines that ought to be in class ANY

-- (From KL_IMPORTED_ANY_ROUTINES)

ensure
any_routines_not_void: Result /= Void
subarray (an_array: ARRAY [G]; start_pos, end_pos, min_index: INTEGER): ARRAY [G]

-- Array made up of items from an_array within
-- bounds start_pos and end_pos
-- Reasons why we don't use ARRAY.subarray directly:
-- * ELKS ARRAY 2000 and VE 4.1 return an 'ARRAY [G]'
-- whereas SE 1.0 and ISE 5.4/5.5 return a 'like Current'.
-- * ISE 5.4/5.5 does not allow subarrays of empty array,
-- and does not work with empty subarrays.
-- * This routine has an extra argument min_index compared
-- to the one provided by ELKS and the various compilers.

require
an_array_not_void: an_array /= Void
start_pos_large_enough: start_pos >= an_array.lower
end_pos_small_enough: end_pos <= an_array.upper
valid_bounds: start_pos <= end_pos + 1
ensure
array_not_void: Result /= Void
lower_set: Result.lower = min_index
count_set: Result.count = end_pos - start_pos + 1

feature -- Status report

has (an_array: ARRAY [G]; v: G): BOOLEAN

-- Does v appear in an_array (use '=' for item comparison).
-- Reasons why we don't use ARRAY.has directly:
-- * has is not in ELKS ARRAY 2000.
-- * ISE may change this behavior with compare_objects.
-- * SE 1.0 uses is_equal for item comparison.
-- * has is not supported in VE 4.1.

require
an_array_not_void: an_array /= Void

feature -- Element change

subcopy (an_array: ARRAY [G]; other: ARRAY [G]; start_pos, end_pos, index_pos: INTEGER)

-- Copy items of other within bounds start_pos and end_pos
-- to an_array starting at index index_pos.
-- Reasons why we don't use ARRAY.subcopy directly:
-- * subcopy is not in ELKS ARRAY 2000.
-- * subcopy is not supported in VE 4.1 and SE 1.0.

require
an_array_not_void: an_array /= Void
other_not_void: other /= Void
not_same: an_array /= other
start_pos_large_enough: start_pos >= other.lower
end_pos_small_enough: end_pos <= other.upper
valid_bounds: start_pos <= end_pos + 1
index_pos_large_enough: index_pos >= an_array.lower
enough_space: (an_array.upper - index_pos) >= (end_pos - start_pos)

feature -- Removal

clear_all (an_array: ARRAY [G])

-- Reset all items to default values.

obsolete

[040929] Use an_array.clear_all instead.

require
an_array_not_void: an_array /= Void

feature -- Resizing

resize (an_array: ARRAY [G]; min_index, max_index: INTEGER)

-- Rearrange array so that it can accommodate
-- indices down to min_index and up to max_index.
-- Do not lose any previously entered item.

require
an_array_not_void: an_array /= Void
valid_min_index: min_index <= an_array.lower
valid_max_index: max_index >= an_array.upper
ensure
lower_set: an_array.lower = min_index
upper_set: an_array.upper = max_index

feature -- Duplication

cloned_array (an_array: ARRAY [G]): ARRAY [G]

-- Clone of an_array

require
an_array_not_void: an_array /= Void
ensure
cloned_not_void: Result /= Void
same_type: ANY_.same_types (Result, an_array)
is_equal: Result.is_equal (an_array)

invariant


-- From ANY
reflexive_equality: standard_is_equal (Current)
reflexive_conformance: conforms_to (Current)

end