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)
			
		require  ECOM_QUERIABLE
			non_default_pointer: a_pointer /= default_pointer
		ensure  ECOM_QUERIABLE
			valid_initializer: initializer /= default_pointer
			exists: exists
	make_from_other (other: ECOM_INTERFACE)
			
			 ECOM_QUERIABLE
		require  ECOM_QUERIABLE
			non_void_other: other /= void
		ensure  ECOM_QUERIABLE
			valid_initializer: initializer /= default_pointer
			exists: exists
feature 
	make_from_pointer (other_pointer: POINTER)
			
		require  ECOM_QUERIABLE
			non_default_pointer: a_pointer /= default_pointer
		ensure  ECOM_QUERIABLE
			valid_initializer: initializer /= default_pointer
			exists: exists
	
feature 
	exists: BOOLEAN
			
			 ECOM_QUERIABLE
	item: POINTER
			
			 ECOM_QUERIABLE
	
invariant
		 ANY
	reflexive_equality: standard_is_equal (Current)
	reflexive_conformance: conforms_to (Current)
		 ECOM_QUERIABLE
	queriable_invariant: initializer /= default_pointer and then exists
end -- ECOM_UNKNOWN_INTERFACE