expanded class interface NATIVE_ARRAY[E]
--
-- This class gives access to the lowest level for arrays both
-- for the C language and Java language.
--
-- Warning : using this class makes your Eiffel code non
-- portable on other Eiffel systems.
-- This class may also be modified in further release for a better
-- interoperability between Java and C low level arrays.
--
feature(s) from NATIVE_ARRAY
-- Basic features :
element_sizeof: INTEGER
-- The size in number of bytes for type E.
calloc (nb_elements: INTEGER): like Current
-- Allocate a new array of nb_elements of type E.
-- The new array is initialized with default values.
item (index: INTEGER): E
-- To read an item.
-- Assume that calloc is already done and that index
-- is the range [0 .. nb_elements-1].
put (element: E; index: INTEGER)
-- To write an item.
-- Assume that calloc is already done and that index
-- is the range [0 .. nb_elements-1].
feature(s) from NATIVE_ARRAY
realloc (old_nb_elts, new_nb_elts: INTEGER): like Current
-- Assume Current is a valid NATIVE_ARRAY in range
-- [0 .. old_nb_elts-1]. Allocate a bigger new array in
-- range [0 .. new_nb_elts-1].
-- Old range is copied in the new allocated array.
-- No initialization done for new items in C.
-- Initialization is done for Java.
--
require
is_not_null;
old_nb_elts < new_nb_elts
feature(s) from NATIVE_ARRAY
-- Comparison :
memcmp (other: like Current; capacity: INTEGER): BOOLEAN
-- True if all elements in range [0..capacity-1] are
-- identical using equal. Assume Current and other
-- are big enough.
-- See also fast_memcmp.
require
capacity > 0 implies other.is_not_null
fast_memcmp (other: like Current; capacity: INTEGER): BOOLEAN
-- Same jobs as memcmp but uses infix "=" instead equal.
require
capacity > 0 implies other.is_not_null
feature(s) from NATIVE_ARRAY
-- Searching :
index_of (element: like item; upper: INTEGER): INTEGER
-- Give the index of the first occurrence of element using
-- is_equal for comparison.
-- Answer upper + 1 when element is not inside.
require
upper >= - 1
fast_index_of (element: like item; upper: INTEGER): INTEGER
-- Same as index_of but use basic = for comparison.
require
upper >= - 1
has (element: like item; upper: INTEGER): BOOLEAN
-- Look for element using is_equal for comparison.
-- Also consider has to choose the most appropriate.
require
upper >= - 1
fast_has (element: like item; upper: INTEGER): BOOLEAN
-- Look for element using basic = for comparison.
-- Also consider has to choose the most appropriate.
require
upper >= - 1
feature(s) from NATIVE_ARRAY
-- Removing :
remove_first (upper: INTEGER)
-- Assume upper is a valid index.
-- Move range [1 .. upper] by 1 position left.
require
upper >= 0
remove (index, upper: INTEGER)
-- Assume upper is a valid index.
-- Move range [index + 1 .. upper] by 1 position left.
require
index >= 0;
index <= upper
feature(s) from NATIVE_ARRAY
-- Replacing :
replace_all (old_value, new_value: like item; upper: INTEGER)
-- Replace all occurences of the element old_value by new_value
-- using is_equal for comparison.
-- See also fast_replace_all to choose the apropriate one.
require
upper >= - 1
fast_replace_all (old_value, new_value: like item; upper: INTEGER)
-- Replace all occurences of the element old_value by new_value
-- using basic = for comparison.
-- See also replace_all to choose the apropriate one.
require
upper >= - 1
feature(s) from NATIVE_ARRAY
-- Adding :
copy_at (start_index: INTEGER; model: like Current; model_capacity: INTEGER)
-- Copy range [0 .. model_capacity-1] of model starting to
-- write at start_index of Current.
-- Range [start_index .. start_index+model_capacity] of
-- Current is affected (assume Current is large enough).
require
start_index >= 0;
model_capacity >= 0;
model_capacity > 0 implies model.is_not_null
feature(s) from NATIVE_ARRAY
-- Other :
set_all_with (v: like item; upper: INTEGER)
-- Set all elements in range [0 .. upper] with
-- value v.
clear_all (upper: INTEGER)
-- Set all elements in range [0 .. upper] with
-- the default value.
clear (lower, upper: INTEGER)
-- Set all elements in range [lower .. upper] with
-- the default value
require
lower >= 0;
upper >= lower
copy_from (model: like Current; upper: INTEGER)
-- Assume upper is a valid index both in Current and model.
move (lower, upper, offset: INTEGER)
-- Move range [lower .. upper] by offset positions.
-- Freed positions are not initialized to default values.
require
lower >= 0;
upper >= lower;
lower + offset >= 0
nb_occurrences (element: like item; upper: INTEGER): INTEGER
-- Number of occurrences of element in range [0..upper]
-- using equal for comparison.
-- See also fast_nb_occurrences to chose the apropriate one.
fast_nb_occurrences (element: like item; upper: INTEGER): INTEGER
-- Number of occurrences of element in range [0..upper]
-- using basic "=" for comparison.
-- See also fast_nb_occurrences to chose the apropriate one.
all_cleared (upper: INTEGER): BOOLEAN
-- Are all items in range [0..upper] set to default
-- values?
require
upper >= - 1
feature(s) from NATIVE_ARRAY
-- Interfacing with C :
to_external: POINTER
-- Gives access to the C pointer on the area of storage.
from_pointer (pointer: POINTER): like Current
-- Convert pointer into Current type.
is_not_null: BOOLEAN
end of expanded NATIVE_ARRAY[E]