indexing
	description: "Error handlers"
	library: "Gobo Eiffel Utility Library"
	author: "Eric Bezault <ericb@gobo.demon.co.uk>"
	copyright: "Copyright (c) 1998, Eric Bezault"

class interface
	UT_ERROR_HANDLER

create 

	make_standard
		ensure
			error_file_set: error_file = std.error;
			warning_file_set: warning_file = std.error;
			message_file_set: message_file = std.output

	make_null
		ensure
			error_file_set: error_file = void;
			warning_file_set: warning_file = void;
			message_file_set: message_file = void

feature -- Access

	error_file: like output_stream_type
			-- File where errors are logged

	message_file: like output_stream_type
			-- File where messages are logged

	output_stream_: KL_OUTPUT_STREAM_ROUTINES
			-- Routines that ought to be in class OUTPUT_STREAM
			-- (from KL_IMPORTED_OUTPUT_STREAM_ROUTINES)
		ensure -- from KL_IMPORTED_OUTPUT_STREAM_ROUTINES
			output_stream_routines_not_void: Result /= void

	std: KL_STANDARD_FILES
			-- Standard files
			-- (from KL_SHARED_STANDARD_FILES)
		ensure -- from KL_SHARED_STANDARD_FILES
			std_not_void: Result /= void

	warning_file: like output_stream_type
			-- File where warnings are logged
	
feature -- Reporting

	report_error (an_error: UT_ERROR)
			-- Report an_error.
		require
			an_error_not_void: an_error /= void

	report_message (a_message: UT_ERROR)
			-- Report a_message.
		require
			a_message_not_void: a_message /= void

	report_warning (a_warning: UT_ERROR)
			-- Report a_warning.
		require
			a_warning_not_void: a_warning /= void
	
feature -- Setting

	set_error_file (a_file: like error_file)
			-- Set error_file to a_file.
		ensure
			error_file_set: error_file = a_file

	set_message_file (a_file: like message_file)
			-- Set message_file to a_file.
		ensure
			message_file_set: message_file = a_file

	set_warning_file (a_file: like error_file)
			-- Set warning_file to a_file.
		ensure
			warning_file_set: warning_file = a_file
	
feature -- Type anchors

	output_stream_type: IO_MEDIUM
			-- (from KL_IMPORTED_OUTPUT_STREAM_ROUTINES)
	
invariant

		-- from GENERAL
	reflexive_equality: standard_is_equal (Current);
	reflexive_conformance: conforms_to (Current);

end -- class UT_ERROR_HANDLER