19928/jj_containers/jj_array2.e
Jocelyn Fiat 6dde6425c2 init
2024-06-17 09:09:33 +02:00

90 lines
1.9 KiB
Plaintext

note
description: "[
A 2-d array with some additional features, including those added
by class {JJ_ARRAY}.
]"
author: "Jimmy J. Johnson"
date: "10/27/21"
copyright: "Copyright (c) 2021, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
JJ_ARRAY2 [G]
inherit
ARRAY2 [G]
JJ_ARRAY [G]
rename
make as array_make,
item as array_item,
put as array_put,
force as array_force,
resize as array_resize,
wipe_out as array_wipe_out,
make_filled as array_make_filled
export
{NONE}
array_make, array_force,
array_resize, array_wipe_out, make_from_array,
array_make_filled, make_from_special, make_from_cil,
remove_head, remove_tail, keep_head, keep_tail,
grow, conservative_resize, conservative_resize_with_default,
automatic_grow
{ARRAY2}
array_put, array_item
{ANY}
copy, is_equal, area, to_c
end
create
make,
make_filled
feature -- Query
occurrences_per_row (a_item: G; a_row: INTEGER_32): INTEGER_32
-- The number of times `a_item' appears in `a_row'.
require
row_index_big_enough: a_row >= 1
row_index_small_enough: a_row <= height
local
i: INTEGER
do
from i := 1
until i > width
loop
if a_item ~ item (a_row, i) then
Result := Result + 1
end
i := i + 1
end
ensure
result_large_enough: Result >= 0
result_small_enough: Result <= width
end
occurrences_per_column (a_item: G; a_column: INTEGER_32): INTEGER_32
-- The number of times `a_item' appears in `a_column'.
require
column_index_big_enough: a_column >= 1
column_index_small_enough: a_column <= width
local
i: INTEGER
do
from i := 1
until i > height
loop
if a_item ~ item (i, a_column) then
Result := Result + 1
end
i := i + 1
end
ensure
result_large_enough: Result >= 0
result_small_enough: Result <= height
end
end