indexing
	description: "COM generic interface."
	status: "See notice at end of class"
	date: "$Date$"
	revision: "$Revision$"

class interface
	ECOM_UNKNOWN_INTERFACE

create 

	make_from_pointer (other_pointer: POINTER)
			-- Create interface from other interface pointer.
		require -- from ECOM_QUERIABLE
			non_default_pointer: a_pointer /= default_pointer
		ensure -- from ECOM_QUERIABLE
			valid_initializer: initializer /= default_pointer
			exists: exists

	make_from_other (other: ECOM_INTERFACE)
			-- Make from other Queriable.
			-- (from ECOM_QUERIABLE)
		require -- from ECOM_QUERIABLE
			non_void_other: other /= void
		ensure -- from ECOM_QUERIABLE
			valid_initializer: initializer /= default_pointer
			exists: exists

feature -- Initialization

	make_from_pointer (other_pointer: POINTER)
			-- Create interface from other interface pointer.
		require -- from ECOM_QUERIABLE
			non_default_pointer: a_pointer /= default_pointer
		ensure -- from ECOM_QUERIABLE
			valid_initializer: initializer /= default_pointer
			exists: exists
	
feature -- Access

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

	item: POINTER
			-- Pointer to COM object wrapper.
			-- (from ECOM_QUERIABLE)
	
invariant

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

end -- class ECOM_UNKNOWN_INTERFACE