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: 2012-05-23 21:13:10 -0700 (Wed, 23 May 2012) $" revision: "$Revision: 559 $" 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: INDEXABLE_ITERATION_CURSOR [G] -- Fresh cursor associated with current structure -- (from READABLE_INDEXABLE) 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) index_set: INTEGER_INTERVAL -- Range of acceptable indexes require -- from READABLE_INDEXABLE True ensure -- from READABLE_INDEXABLE not_void: Result /= Void ensure then same_count: Result.count = count same_bounds: ((Result.lower = lower) and (Result.upper = upper)) 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 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 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: attached 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 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: attached 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 itms 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 ((i >= index_set.lower) and (i <= index_set.upper)) valid_index_set: BOOLEAN 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' or `upper + 1' position 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) 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: attached 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: attached 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: attached 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: attached 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: valid_index (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: attached ARRAY [G] -- New object equal to `Current' -- twin calls copy; to change copying/twining semantics, redefine copy. -- (from ANY) ensure -- from ANY twin_not_void: Result /= Void is_equal: Result ~ Current feature -- Basic operations frozen as_attached: attached ARRAY [G] -- Attached version of Current -- (Can be used during transitional period to convert -- non-void-safe classes to void-safe ones.) -- (from ANY) 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) default_rescue -- Process exception for routines with no Rescue clause. -- (Default: do nothing.) -- (from ANY) frozen do_nothing -- Execute a null action. -- (from ANY) feature -- Iteration do_all (action: PROCEDURE [ANY, TUPLE [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 [ANY, TUPLE [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 [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [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 [ANY, TUPLE [G, INTEGER_32]]; test: FUNCTION [ANY, TUPLE [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 [ANY, TUPLE [G], BOOLEAN]): BOOLEAN -- Is `test' true for all items? require test_not_void: test /= Void there_exists (test: FUNCTION [ANY, TUPLE [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 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) 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 operating_environment_not_void: Result /= Void invariant area_exists: area /= Void consistent_size: capacity = upper - lower + 1 non_negative_count: count >= 0 index_set_has_same_count: valid_index_set -- 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) note copyright: "Copyright (c) 1984-2012, 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: docs.eiffel.com