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]