indexing
--------------------------------------------------------------------
-- Class: FUNCTOR_CLIENT
--------------------------------------------------------------------
-- Original Author: Justin Finnerty
-- Original Date:
-- Current Date: $Date: 2005/09/03 11:10:33 $
-- Current Author: $Author: finnerty $
-- Revision: $Revision: 2.1 $
-- Log: $Log: functor_client.e,v $
-- Log: Revision 2.1  2005/09/03 11:10:33  finnerty
-- Log: Changed to work with VE
-- Log:
-- Log: Revision 2.0  2005/08/26 23:32:02  finnerty
-- Log: == alpha version ==
-- Log:
-- Log: Revision 1.2  2005/08/01 09:33:00  finnerty
-- Log: Changed access to feature set_client
-- Log:
-- Log: Revision 1.1.1.1  2005/07/28 05:28:34  finnerty
-- Log: Imported eiffel sources
-- Log:
-- File Format: no files
--------------------------------------------------------------------
	-----------------------------------------------------------------
	-- Class categorising information
	-----------------------------------------------------------------
	cluster: "demangler"
	namespace: "candidate"
	pattern: "Command"
	-----------------------------------------------------------------
	-- Description of class
	-----------------------------------------------------------------
	description: "This class provides a generic base-class for functional %
	% objects that can be called with an argument. It inherits from  %
	% `FUNCTOR' so can hide the type of the client from the supplier."
deferred class FUNCTOR_CLIENT[T_ARG, T_CLIENT]
	-- This class specialises the `FUNCTOR' class by allowing a client
	-- object, of type `T_CLIENT', to be attached. This allows a client
	-- class to have several associated `FUNCTOR[T_ARG]' types,
	-- something not possible for a client class that inherits from
	-- `FUNCTOR'. For example if a client class has several features
	-- that accept `T_ARG' arguments then each feature could have an
	-- associated class derived from `FUNCTOR_CLIENT'.
inherit
	FUNCTOR[T_ARG]
	
feature {ANY}
	execute(a_arg: T_ARG) is
			-- Execute the command.
		deferred
		end

feature {FUNCTOR_CLIENT}
	client: T_CLIENT -- The client object

feature {ANY}
	set_client(a_client: T_CLIENT) is
		do
			client := a_client
		end
end -- class FUNCTOR_CLIENT
