indexing
	description: "Base class for Eiffel Vision interface.Eiffel Vision uses the bridge pattern.(See bridge pattern notes below.)Descendents of this class are coupled to descendents of EV_ANY_I(the base class for Eiffel Vision implementation classes).EV_ANY's descendants provide a common interface across allplatforms while EV_ANY_I's descendants provide any necessaryplatform specific implementation."
	status: "See notice at end of class"
	keywords: "interface, base, root, any"
	date: "$Date$"
	revision: "$Revision$"

deferred class interface
	EV_ANY

feature -- Access

	data: ANY
			-- Arbitrary user data may be stored here.
	
feature -- Element change

	set_data (some_data: like data)
			-- Assign some_data to data.
		require
			not_destroyed: not is_destroyed
		ensure
			data_assigned: data = some_data
	
feature -- Duplication

	copy (other: like Current)
			-- Update current object using fields of object attached
			-- to other, so as to yield equal objects.
		require -- from ANY
			other_not_void: other /= void
			type_identity: same_type (other)
		ensure -- from ANY
			is_equal: is_equal (other)
	
feature -- Command

	destroy
			-- Destroy underlying native toolkit object.
			-- Render Current unusable.
		ensure
			is_destroyed: is_destroyed
	
feature -- Status Report

	is_destroyed: BOOLEAN
			-- Is Current no longer usable?
		ensure
			bridge_ok: Result = implementation.is_destroyed
	
invariant

	is_initialized: is_initialized
	is_coupled: implementation /= void and then implementation.interface = Current
	default_create_called: default_create_called
		-- from ANY
	reflexive_equality: standard_is_equal (Current)
	reflexive_conformance: conforms_to (Current)

end -- class EV_ANY