indexing
	description: "Wrapper of IEnumSTATSTG interface, used to enumerate through an array of STATSTG structures, which contains statistical information about an open storage, stream, or byte array object."
	status: "See notice at end of class"
	date: "$Date$"
	revision: "$Revision$"

class interface
	ECOM_ENUM_STATSTG

create 

	make_from_pointer (a_pointer: POINTER)
			-- Initialize
			-- (from ECOM_WRAPPER)
		require -- from ECOM_WRAPPER
			valid_pointer: a_pointer /= default_pointer
		ensure -- from ECOM_WRAPPER
			wrapper_exist: initializer /= default_pointer and then exists
			valid_item: item = a_pointer

feature -- Initialization

	make_from_pointer (a_pointer: POINTER)
			-- Initialize
			-- (from ECOM_WRAPPER)
		require -- from ECOM_WRAPPER
			valid_pointer: a_pointer /= default_pointer
		ensure -- from ECOM_WRAPPER
			wrapper_exist: initializer /= default_pointer and then exists
			valid_item: item = a_pointer
	
feature -- Access

	access_time (a_name: STRING): WEL_FILE_TIME
			-- Access time of element a_name
			-- Change position in enumeration.
		require
			non_void_name: a_name /= void
			valid_name: is_valid_name (a_name)
		ensure
			non_void_result: Result /= void

	creation_time (a_name: STRING): WEL_FILE_TIME
			-- Creation time of element a_name
			-- Change position in enumeration.
		require
			non_void_name: a_name /= void
			valid_name: is_valid_name (a_name)
		ensure
			non_void_result: Result /= void

	exists: BOOLEAN
			-- Is wrapped structure initialized?
			-- (from ECOM_WRAPPER)

	is_valid_name (name: STRING): BOOLEAN
			-- Is object with name name part of storage object?
			-- Change position in enumeration.
		require
			non_void_name: name /= void
			valid_name: not name.is_empty

	item: POINTER
			-- Pointer to COM structure
			-- (from ECOM_WRAPPER)

	modification_time (a_name: STRING): WEL_FILE_TIME
			-- Modification time of element a_name
			-- Change position in enumeration.
		require
			non_void_name: a_name /= void
			valid_name: is_valid_name (a_name)
		ensure
			non_void_result: Result /= void

	next_item: ECOM_STATSTG
			-- Next item in enumeration sequence
			-- Void if there is no next_item item
	
feature -- Basic Operations

	clone_enum: like Current
			-- Creates another enumerator that has
			-- same enumeration state as Current.
		ensure
			Result /= void

	reset
			-- Resets enumeration sequence to beginning.

	skip (n: INTEGER)
			-- Skips over n items in enumeration sequence.
		require
			valid_skip_count: n >= 0
	
invariant

		-- from ANY
	reflexive_equality: standard_is_equal (Current)
	reflexive_conformance: conforms_to (Current)
		-- from ECOM_WRAPPER
	wrapper_invariant: initializer /= default_pointer and then exists

end -- class ECOM_ENUM_STATSTG