indexing
	description: "Special objects: homogeneous sequences of values, used to represent arrays and strings"

class interface
	SPECIAL [T]

feature -- Access

	conforms_to (other: SPECIAL [T]): BOOLEAN
			-- Does special object conform to other?
		require -- from GENERAL
			other_not_void: other /= void

	item (i: INTEGER): T
			-- Item at i-th position
			-- (indices begin at 0)
		require
			index_big_enough: i >= 0;
			index_small_enough: i < count
	
feature -- Measurement

	count: INTEGER
			-- Count of the special area
	
feature -- Element change

	put (v: T; i: INTEGER)
			-- Replace i-th item by v.
			-- (Indices begin at 0.)
		require
			index_big_enough: i >= 0;
			index_small_enough: i < count
	
feature -- Removal

	clear_all
			-- Reset all items to default values.
	
invariant

		-- from GENERAL
	reflexive_equality: standard_is_equal (Current);
	reflexive_conformance: conforms_to (Current);

end -- class SPECIAL