Lisaac prototype interface

Section Header
+ name := ARRAY2[E];
- comment :=" General prurpose, resizable, two dimensional array.";
Section Inherit
+ parent_collection2:Expanded COLLECTION2[E];
Section Public
+ lower1:INTEGER;
+ lower2:INTEGER;
+ upper1:INTEGER;
+ upper2:INTEGER;
Section ARRAY2
+ storage:NATIVE_ARRAY[E];
To store elements line by line.
+ capacity:INTEGER;
Number of elements in `storage'.
Section Public
Creation / modification:
- create (line_min, column_min:INTEGER) to (line_max, column_max:INTEGER) :SELF <-
Reset all bounds `line_minimum' / `line_maximum' / `column_minimum' and
`column_maximum' using arguments as new values.
All elements are set to the default value of type E.
- make (line_min, column_min:INTEGER) to (line_max, column_max:INTEGER) <-
Reset all bounds `line_minimum' / `line_maximum' / `column_minimum' and
`column_maximum' using arguments as new values.
All elements are set to the default value of type E.
- from_collection2 model:COLLECTION2[E] <-
- from_collection contents:COLLECTION[E] size (line_min,column_min:INTEGER) to (line_max,column_max:INTEGER) <-
Reset all bounds using `line_min', `line_max', `column_min',
and `column_max' .
Copy all elements of `contents', line by line into Current.
- from_model model:COLLECTION[COLLECTION[E]] <-
The `model' is used to fill line by line the COLLECTION2.
Assume all sub-collections of `model' have the same indexing.
Resizing:
- resize (line_min, column_min:INTEGER) to (line_max, column_max:INTEGER) <-
Resize bounds of the Current array
Implementation of others feature from COLLECTION2:
- item (line,column:INTEGER) :E <-
- put element:E to (line,column:INTEGER) <-
- count1:INTEGER <-
- count2:INTEGER <-
- count:INTEGER <-
- force x:E to (line, column:INTEGER) <-
- set_all_with element:E <-
- replace_all old_value:E with new_value:E <-
- fast_replace_all old_value:E with new_value:E <-
- sub_collection2 (line_min, column_min:INTEGER) to (line_max, column_max:INTEGER) :SELF <-
Looking and comparison:
- occurrences elt:E :INTEGER <-
- fast_occurrences elt:E :INTEGER <-
- has x:E :BOOLEAN <-
Search if a element x is in the array using `equal'.
See also `fast_has' to chose the apropriate one.
- fast_has x:E :BOOLEAN <-
Search if a element x is in the array using `='.
- all_default:BOOLEAN <-
- swap (line1, column1:INTEGER) with (line2, column2:INTEGER) <-
- copy other:SELF <-
- '==' Right 60 other:SELF :BOOLEAN <-
Other features:
- transpose <-
Transpose the Current array
- to_external:POINTER <-
Gives C access to the internal `storage' (may be dangerous).
Invariant.
[ ...
-? { count2 = upper2 - lower2 + 1 };
-? { capacity >= count }
];