Automatic generation produced by ISE Eiffel

Classes Clusters Cluster hierarchy Chart Relations Flat contracts Go to:
note description: "[ Sequences of values, all of the same type or of a conforming one, accessible through integer indices in a contiguous interval. ]" library: "Free implementation of ELKS library" status: "See notice at end of class." legal: "See notice at end of class." date: "$Date: 2018-05-23 06:35:05 -0800 (Wed, 23 May 2018) $" revision: "$Revision: 101778 $" class interface ARRAY [G] create make_empty -- Allocate empty array starting at 1. ensure lower_set: lower = 1 upper_set: upper = 0 items_set: all_default make (min_index, max_index: INTEGER_32) -- Allocate array; set index interval to -- min_index .. max_index; set all values to default. -- (Make array empty if min_index = max_index + 1). require valid_bounds: min_index <= max_index + 1 has_default: min_index <= max_index implies ({G}).has_default ensure lower_set: lower = min_index upper_set: upper = max_index items_set: all_default make_filled (a_default_value: G; min_index, max_index: INTEGER_32) -- Allocate array; set index interval to -- min_index .. max_index; set all values to default. -- (Make array empty if min_index = max_index + 1). require valid_bounds: min_index <= max_index + 1 ensure lower_set: lower = min_index upper_set: upper = max_index items_set: filled_with (a_default_value) make_from_array (a: ARRAY [G]) -- Initialize from the items of a. -- (Useful in proper descendants of class ARRAY, -- to initialize an array-like object from a manifest array.) require array_exists: a /= Void ensure shared: area = a.area lower_set: lower = a.lower upper_set: upper = a.upper make_from_special (a: SPECIAL [G]) -- Initialize Current from items of a. require special_attached: a /= Void ensure shared: area = a lower_set: lower = 1 upper_set: upper = a.count make_from_cil (na: NATIVE_ARRAY [like item]) -- Initialize array from na. require is_dotnet: {PLATFORM}.is_dotnet na_not_void: na /= Void convert make_from_cil: {NATIVE_ARRAY [G]}, make_from_cil: {SPECIAL [G]}, make_from_cil ({NATIVE_ARRAY [G]}) feature -- Initialization make_empty -- Allocate empty array starting at 1. ensure lower_set: lower = 1 upper_set: upper = 0 items_set: all_default make_filled (a_default_value: G; min_index, max_index: INTEGER_32) -- Allocate array; set index interval to -- min_index .. max_index; set all values to default. -- (Make array empty if min_index = max_index + 1). require valid_bounds: min_index <= max_index + 1 ensure lower_set: lower = min_index upper_set: upper = max_index items_set: filled_with (a_default_value) make_from_array (a: ARRAY [G]) -- Initialize from the items of a. -- (Useful in proper descendants of class ARRAY, -- to initialize an array-like object from a manifest array.) require array_exists: a /= Void ensure shared: area = a.area lower_set: lower = a.lower upper_set: upper = a.upper make_from_cil (na: NATIVE_ARRAY [like item]) -- Initialize array from na. require is_dotnet: {PLATFORM}.is_dotnet na_not_void: na /= Void make_from_special (a: SPECIAL [G]) -- Initialize Current from items of a. require special_attached: a /= Void ensure shared: area = a lower_set: lower = 1 upper_set: upper = a.count feature -- Access area: SPECIAL [G] -- Special data zone. -- (from TO_SPECIAL) at alias "@" (i: INTEGER_32): G assign put -- Entry at index i, if in index interval. -- Was declared in ARRAY as synonym of item. require -- from TABLE valid_key: valid_index (i) require -- from TO_SPECIAL valid_index: valid_index (i) entry (i: INTEGER_32): G -- Entry at index i, if in index interval. require valid_key: valid_index (i) generating_type: TYPE [detachable ARRAY [G]] -- Type of current object -- (type of which it is a direct instance) -- (from ANY) ensure -- from ANY generating_type_not_void: Result /= Void generator: STRING_8 -- Name of current object's generating class -- (base class of the type of which it is a direct instance) -- (from ANY) ensure -- from ANY generator_not_void: Result /= Void generator_not_empty: not Result.is_empty has (v: G): BOOLEAN -- Does v appear in array? -- (Reference or object equality, -- based on object_comparison.) ensure -- from CONTAINER not_found_in_empty: Result implies not is_empty item alias "[]" (i: INTEGER_32): G assign put -- Entry at index i, if in index interval. -- Was declared in ARRAY as synonym of at. require -- from TABLE valid_key: valid_index (i) require -- from READABLE_INDEXABLE valid_index: valid_index (i) require -- from TO_SPECIAL valid_index: valid_index (i) new_cursor: ARRAY_ITERATION_CURSOR [G] -- Fresh cursor associated with current structure require -- from ITERABLE True ensure -- from ITERABLE result_attached: Result /= Void feature -- Measurement additional_space: INTEGER_32 -- Proposed number of additional items -- (from RESIZABLE) ensure -- from RESIZABLE at_least_one: Result >= 1 capacity: INTEGER_32 -- Number of available indices. -- Was declared in ARRAY as synonym of count. require -- from BOUNDED True ensure -- from BOUNDED capacity_non_negative: Result >= 0 ensure then consistent_with_bounds: Result = upper - lower + 1 count: INTEGER_32 -- Number of available indices. -- Was declared in ARRAY as synonym of capacity. require -- from FINITE True ensure -- from FINITE count_non_negative: Result >= 0 ensure then consistent_with_bounds: Result = upper - lower + 1 Growth_percentage: INTEGER_32 = 50 -- Percentage by which structure will grow automatically -- (from RESIZABLE) lower: INTEGER_32 -- Minimum index. Minimal_increase: INTEGER_32 = 5 -- Minimal number of additional items -- (from RESIZABLE) occurrences (v: G): INTEGER_32 -- Number of times v appears in structure. ensure -- from BAG non_negative_occurrences: Result >= 0 upper: INTEGER_32 -- Maximum index. feature -- Comparison frozen deep_equal (a: detachable ANY; b: like arg #1): BOOLEAN -- Are a and b either both void -- or attached to isomorphic object structures? -- (from ANY) ensure -- from ANY instance_free: class shallow_implies_deep: standard_equal (a, b) implies Result both_or_none_void: (a = Void) implies (Result = (b = Void)) same_type: (Result and (a /= Void)) implies (b /= Void and then a.same_type (b)) symmetric: Result implies deep_equal (b, a) frozen equal (a: detachable ANY; b: like arg #1): BOOLEAN -- Are a and b either both void or attached -- to objects considered equal? -- (from ANY) ensure -- from ANY instance_free: class definition: Result = (a = Void and b = Void) or else ((a /= Void and b /= Void) and then a.is_equal (b)) frozen is_deep_equal (other: ARRAY [G]): BOOLEAN -- Are Current and other attached to isomorphic object structures? -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY shallow_implies_deep: standard_is_equal (other) implies Result same_type: Result implies same_type (other) symmetric: Result implies other.is_deep_equal (Current) is_equal (other: like Current): BOOLEAN -- Is array made of the same items as other? require -- from ANY other_not_void: other /= Void ensure -- from ANY symmetric: Result implies other ~ Current consistent: standard_is_equal (other) implies Result frozen standard_equal (a: detachable ANY; b: like arg #1): BOOLEAN -- Are a and b either both void or attached to -- field-by-field identical objects of the same type? -- Always uses default object comparison criterion. -- (from ANY) ensure -- from ANY instance_free: class definition: Result = (a = Void and b = Void) or else ((a /= Void and b /= Void) and then a.standard_is_equal (b)) frozen standard_is_equal (other: ARRAY [G]): BOOLEAN -- Is other attached to an object of the same type -- as current object, and field-by-field identical to it? -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY same_type: Result implies same_type (other) symmetric: Result implies other.standard_is_equal (Current) feature -- Status report all_default: BOOLEAN -- Are all items set to default values? ensure definition: Result = (count = 0 or else ((not attached item (upper) as i or else i = ({G}).default) and subarray (lower, upper - 1).all_default)) changeable_comparison_criterion: BOOLEAN -- May object_comparison be changed? -- (Answer: yes by default.) -- (from CONTAINER) conforms_to (other: ANY): BOOLEAN -- Does type of current object conform to type -- of other (as per Eiffel: The Language, chapter 13)? -- (from ANY) require -- from ANY other_not_void: other /= Void extendible: BOOLEAN -- May items be added? -- (Answer: no, although array may be resized.) filled_with (v: G): BOOLEAN -- Are all items set to v? ensure definition: Result = (count = 0 or else (item (upper) = v and subarray (lower, upper - 1).filled_with (v))) full: BOOLEAN -- Is structure filled to capacity? -- (Answer: yes) require -- from BOX True is_empty: BOOLEAN -- Is structure empty? -- (from FINITE) require -- from CONTAINER True is_inserted (v: G): BOOLEAN -- Has v been inserted by the most recent insertion? -- (By default, the value returned is equivalent to calling -- has (v). However, descendants might be able to provide more -- efficient implementations.) -- (from COLLECTION) object_comparison: BOOLEAN -- Must search operations use equal rather than = -- for comparing references? (Default: no, use =.) -- (from CONTAINER) prunable: BOOLEAN -- May items be removed? -- (Answer: no.) resizable: BOOLEAN -- Can array be resized automatically? require -- from BOUNDED True same_items (other: like Current): BOOLEAN -- Do other and Current have same items? require other_not_void: other /= Void ensure definition: Result = ((count = other.count) and then (count = 0 or else (item (upper) = other.item (other.upper) and subarray (lower, upper - 1).same_items (other.subarray (other.lower, other.upper - 1))))) same_type (other: ANY): BOOLEAN -- Is type of current object identical to type of other? -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY definition: Result = (conforms_to (other) and other.conforms_to (Current)) valid_index (i: INTEGER_32): BOOLEAN -- Is i within the bounds of the array? require -- from READABLE_INDEXABLE True require -- from TABLE True require -- from TO_SPECIAL True ensure -- from READABLE_INDEXABLE only_if_in_index_set: Result implies (lower <= i and i <= upper) feature -- Status setting compare_objects -- Ensure that future search operations will use equal -- rather than = for comparing references. -- (from CONTAINER) require -- from CONTAINER changeable_comparison_criterion: changeable_comparison_criterion ensure -- from CONTAINER object_comparison compare_references -- Ensure that future search operations will use = -- rather than equal for comparing references. -- (from CONTAINER) require -- from CONTAINER changeable_comparison_criterion: changeable_comparison_criterion ensure -- from CONTAINER reference_comparison: not object_comparison feature -- Element change enter (v: like item; i: INTEGER_32) -- Replace i-th entry, if in index interval, by v. require valid_key: valid_index (i) fill (other: CONTAINER [G]) -- Fill with as many items of other as possible. -- The representations of other and current structure -- need not be the same. -- (from COLLECTION) require -- from COLLECTION other_not_void: other /= Void extendible: extendible fill_with (v: G) -- Set items between lower and upper with v. ensure same_capacity: capacity = old capacity count_definition: count = old count filled: filled_with (v) force (v: like item; i: INTEGER_32) -- Assign item v to i-th entry. -- Resize the array if i falls out of currently defined bounds; preserve existing items. -- In void-safe mode, if ({G}).has_default does not hold, then you can only insert between -- lower - 1 and upper + 1 positions in the ARRAY. require has_default_if_too_low: (i < lower - 1 and lower /= {like lower}.min_value) implies ({G}).has_default has_default_if_too_high: (i > upper + 1 and upper /= {like upper}.max_value) implies ({G}).has_default ensure inserted: item (i) = v higher_count: count >= old count lower_set: lower = (old lower).min (i) upper_set: upper = (old upper).max (i) force_and_fill (v: like item; i: INTEGER_32) -- Assign item v to i-th entry. -- If i falls out of currently defined bounds: -- - Resize array as needed. -- - Fill in any new entry (in addition to the one at position i with value v). -- - Preserve existing items. ensure inserted: item (i) = v filled_below_lower: across i |..| old lower as c all c.item < old lower implies item (c.item) = v end filled_above_upper: across old upper |..| i as c all c.item > old upper implies item (c.item) = v end higher_count: count >= old count lower_set: lower = (old lower).min (i) upper_set: upper = (old upper).max (i) put (v: like item; i: INTEGER_32) -- Replace i-th entry, if in index interval, by v. require -- from TABLE valid_key: valid_index (i) require -- from TABLE valid_key: valid_index (i) require -- from TO_SPECIAL valid_index: valid_index (i) ensure -- from TABLE inserted: item (i) = v ensure -- from TO_SPECIAL inserted: item (i) = v subcopy (other: ARRAY [like item]; start_pos, end_pos, index_pos: INTEGER_32) -- Copy items of other within bounds start_pos and end_pos -- to current array starting at index index_pos. require other_not_void: other /= Void valid_start_pos: start_pos >= other.lower valid_end_pos: end_pos <= other.upper valid_bounds: start_pos <= end_pos + 1 valid_index_pos: index_pos >= lower enough_space: (upper - index_pos) >= (end_pos - start_pos) feature -- Removal clear_all -- Reset all items to default values. require has_default: ({G}).has_default ensure stable_lower: lower = old lower stable_upper: upper = old upper default_items: all_default discard_items -- Reset all items to default values with reallocation. require has_default: ({G}).has_default ensure default_items: all_default keep_head (n: INTEGER_32) -- Remove all items except for the first n; -- do nothing if n >= count. require non_negative_argument: n >= 0 ensure new_count: count = n.min (old count) same_lower: lower = old lower keep_tail (n: INTEGER_32) -- Remove all items except for the last n; -- do nothing if n >= count. require non_negative_argument: n >= 0 ensure new_count: count = n.min (old count) same_upper: upper = old upper prune_all (v: G) -- Remove all occurrences of v. -- (Reference or object equality, -- based on object_comparison.) -- (from COLLECTION) require -- from COLLECTION prunable: prunable ensure -- from COLLECTION no_more_occurrences: not has (v) remove_head (n: INTEGER_32) -- Remove first n items; -- if n > count, remove all. require n_non_negative: n >= 0 ensure new_count: count = (old count - n).max (0) same_upper: upper = old upper remove_tail (n: INTEGER_32) -- Remove last n items; -- if n > count, remove all. require n_non_negative: n >= 0 ensure new_count: count = (old count - n).max (0) same_lower: lower = old lower feature -- Resizing automatic_grow -- Change the capacity to accommodate at least -- Growth_percentage more items. -- (from RESIZABLE) require -- from RESIZABLE resizable: resizable ensure -- from RESIZABLE increased_capacity: capacity >= old capacity + old additional_space conservative_resize_with_default (a_default_value: G; min_index, max_index: INTEGER_32) -- 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 good_indices: min_index <= max_index ensure no_low_lost: lower = min_index or else lower = old lower no_high_lost: upper = max_index or else upper = old upper grow (i: INTEGER_32) -- Change the capacity to at least i. require -- from RESIZABLE resizable: resizable ensure -- from RESIZABLE new_capacity: capacity >= i rebase (a_lower: like lower) -- Without changing the actual content of Current we set lower to a_lower -- and upper accordingly to a_lower + count - 1. ensure lower_set: lower = a_lower upper_set: upper = a_lower + old count - 1 trim -- Decrease capacity to the minimum value. -- Apply to reduce allocated storage. require -- from RESIZABLE True ensure -- from RESIZABLE same_count: count = old count minimal_capacity: capacity = count ensure then same_items: same_items (old twin) feature -- Conversion linear_representation: LINEAR [G] -- Representation as a linear structure. to_c: ANY -- Address of actual sequence of values, -- for passing to external (non-Eiffel) routines. require not_is_dotnet: not {PLATFORM}.is_dotnet to_cil: NATIVE_ARRAY [G] -- Address of actual sequence of values, -- for passing to external (non-Eiffel) routines. require is_dotnet: {PLATFORM}.is_dotnet ensure to_cil_not_void: Result /= Void to_special: SPECIAL [G] -- 'area'. ensure to_special_not_void: Result /= Void feature -- Duplication copy (other: like Current) -- Reinitialize by copying all the items of other. -- (This is also used by clone.) require -- from ANY other_not_void: other /= Void type_identity: same_type (other) ensure -- from ANY is_equal: Current ~ other ensure then equal_areas: area ~ other.area frozen deep_copy (other: ARRAY [G]) -- Effect equivalent to that of: -- copy (other . deep_twin) -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY deep_equal: deep_equal (Current, other) frozen deep_twin: ARRAY [G] -- New object structure recursively duplicated from Current. -- (from ANY) ensure -- from ANY deep_twin_not_void: Result /= Void deep_equal: deep_equal (Current, Result) frozen standard_copy (other: ARRAY [G]) -- Copy every field of other onto corresponding field -- of current object. -- (from ANY) require -- from ANY other_not_void: other /= Void type_identity: same_type (other) ensure -- from ANY is_standard_equal: standard_is_equal (other) frozen standard_twin: ARRAY [G] -- New object field-by-field identical to other. -- Always uses default copying semantics. -- (from ANY) ensure -- from ANY standard_twin_not_void: Result /= Void equal: standard_equal (Result, Current) subarray (start_pos, end_pos: INTEGER_32): ARRAY [G] -- Array made of items of current array within -- bounds start_pos and end_pos. require valid_start_pos: lower <= start_pos valid_end_pos: end_pos <= upper valid_bounds: (start_pos <= end_pos) or (start_pos = end_pos + 1) ensure lower: Result.lower = start_pos upper: Result.upper = end_pos frozen twin: ARRAY [G] -- New object equal to Current -- twin calls copy; to change copying/twinning semantics, redefine copy. -- (from ANY) ensure -- from ANY twin_not_void: Result /= Void is_equal: Result ~ Current feature -- Basic operations frozen default: detachable ARRAY [G] -- Default value of object's type -- (from ANY) frozen default_pointer: POINTER -- Default value of type POINTER -- (Avoid the need to write p.default for -- some p of type POINTER.) -- (from ANY) ensure -- from ANY instance_free: class default_rescue -- Process exception for routines with no Rescue clause. -- (Default: do nothing.) -- (from ANY) frozen do_nothing -- Execute a null action. -- (from ANY) ensure -- from ANY instance_free: class feature -- Inapplicable bag_put (v: G) -- Ensure that structure includes v. -- (from TABLE) require -- from COLLECTION extendible: extendible ensure -- from COLLECTION item_inserted: is_inserted (v) extend (v: G) -- Add v to structure. -- (Precondition is False.) require -- from COLLECTION extendible: extendible ensure -- from COLLECTION item_inserted: is_inserted (v) prune (v: G) -- Remove first occurrence of v if any. -- (Precondition is False.) require -- from COLLECTION prunable: prunable feature -- Iteration do_all (action: PROCEDURE [G]) -- Apply action to every item, from first to last. -- Semantics not guaranteed if action changes the structure; -- in such a case, apply iterator to clone of structure instead. require action_not_void: action /= Void do_all_with_index (action: PROCEDURE [G, INTEGER_32]) -- Apply action to every item, from first to last. -- action receives item and its index. -- Semantics not guaranteed if action changes the structure; -- in such a case, apply iterator to clone of structure instead. do_if (action: PROCEDURE [G]; test: FUNCTION [G, BOOLEAN]) -- Apply action to every item that satisfies test, from first to last. -- Semantics not guaranteed if action or test changes the structure; -- in such a case, apply iterator to clone of structure instead. require action_not_void: action /= Void test_not_void: test /= Void do_if_with_index (action: PROCEDURE [G, INTEGER_32]; test: FUNCTION [G, INTEGER_32, BOOLEAN]) -- Apply action to every item that satisfies test, from first to last. -- action and test receive the item and its index. -- Semantics not guaranteed if action or test changes the structure; -- in such a case, apply iterator to clone of structure instead. for_all (test: FUNCTION [G, BOOLEAN]): BOOLEAN -- Is test true for all items? require test_not_void: test /= Void there_exists (test: FUNCTION [G, BOOLEAN]): BOOLEAN -- Is test true for at least one item? require test_not_void: test /= Void feature -- Output Io: STD_FILES -- Handle to standard file setup -- (from ANY) ensure -- from ANY instance_free: class io_not_void: Result /= Void out: STRING_8 -- New string containing terse printable representation -- of current object -- (from ANY) ensure -- from ANY out_not_void: Result /= Void print (o: detachable ANY) -- Write terse external representation of o -- on standard output. -- (from ANY) ensure -- from ANY instance_free: class frozen tagged_out: STRING_8 -- New string containing terse printable representation -- of current object -- (from ANY) ensure -- from ANY tagged_out_not_void: Result /= Void feature -- Platform Operating_environment: OPERATING_ENVIRONMENT -- Objects available from the operating system -- (from ANY) ensure -- from ANY instance_free: class operating_environment_not_void: Result /= Void invariant area_exists: area /= Void consistent_size: capacity = upper - lower + 1 non_negative_count: count >= 0 -- from RESIZABLE increase_by_at_least_one: Minimal_increase >= 1 -- from BOUNDED valid_count: count <= capacity full_definition: full = (count = capacity) -- from FINITE empty_definition: is_empty = (count = 0) -- from ANY reflexive_equality: standard_is_equal (Current) reflexive_conformance: conforms_to (Current) -- from READABLE_INDEXABLE consistent_boundaries: lower <= upper or else lower = upper + 1 note copyright: "Copyright (c) 1984-2018, Eiffel Software and others" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" source: "[ Eiffel Software 5949 Hollister Ave., Goleta, CA 93117 USA Telephone 805-685-1006, Fax 805-685-6869 Website http://www.eiffel.com Customer support http://support.eiffel.com ]" end -- class ARRAY
Classes Clusters Cluster hierarchy Chart Relations Flat contracts Go to:

-- Generated by Eiffel Studio --
For more details: eiffel.org