indexing
	description: "Constants used for signal handling. This class may be used as ancestor by classes needing its facilities."

class interface
	UNIX_SIGNALS

feature -- Access

	is_defined (sig: INTEGER): BOOLEAN
			-- Is sig a signal defined for this platform?

	is_ignored (sig: INTEGER): BOOLEAN
			-- Is sig currently set to be ignored?

	meaning (sig: INTEGER): STRING
			-- A message in English describing what sig is

	sigabrt: INTEGER
			-- Code for `Abort' signal

	sigalrm: INTEGER
			-- Code for `Alarm clock' signal

	sigbus: INTEGER
			-- Code for `Bus error' signal

	sigchld: INTEGER
			-- Code for `Death of a child' signal.
			-- Signal ignored by default

	sigcld: INTEGER
			-- Code for `Death of a child' signal.
			-- Signal ignored by default

	sigcont: INTEGER
			-- Code for `Continue after stop' signal.
			-- Signal ignored by default

	sigemt: INTEGER
			-- Code for `EMT instruction' signal

	sigfpe: INTEGER
			-- Code for `Floating point exception' signal

	sighup: INTEGER
			-- Code for `Hangup' signal

	sigill: INTEGER
			-- Code for `Illegal instruction' signal

	sigint: INTEGER
			-- Code for `Interrupt' signal

	sigio: INTEGER
			-- Code for `Pending I/O on a descriptor' signal.
			-- Signal ignored by default

	sigiot: INTEGER
			-- Code for `IOT instruction' signal

	sigkill: INTEGER
			-- Code for `Terminator' signal

	siglost: INTEGER
			-- Code for `Resource lost' signal

	sigphone: INTEGER
			-- Code for `Line status change' signal

	sigpipe: INTEGER
			-- Code for `Broken pipe' signal

	sigpoll: INTEGER
			-- Code for `Selectable event pending' signal

	sigprof: INTEGER
			-- Code for `Profiling timer alarm' signal

	sigpwr: INTEGER
			-- Code for `Power-fail' signal

	sigquit: INTEGER
			-- Code for `Quit' signal

	sigsegv: INTEGER
			-- Code for `Segmentation violation' signal

	sigstop: INTEGER
			-- Code for `Stop' signal

	sigsys: INTEGER
			-- Code for `Bad argument to system call' signal

	sigterm: INTEGER
			-- Code for `Software termination' signal

	sigtrap: INTEGER
			-- Code for `Trace trap' signal

	sigtstp: INTEGER
			-- Code for `Stop from tty' signal

	sigttin: INTEGER
			-- Code for `Tty input from background' signal.
			-- Signal ignored by default

	sigttou: INTEGER
			-- Code for `Tty output from background' signal.
			-- Signal ignored by default

	sigurg: INTEGER
			-- Code for `Urgent condition on socket' signal.
			-- Signal ignored by default

	sigusr1: INTEGER
			-- Code for `User-defined signal #1'

	sigusr2: INTEGER
			-- Code for `User-defined signal #2'

	sigvtalarm: INTEGER
			-- Code for `Virtual time alarm' signal

	sigwinch: INTEGER
			-- Code for `Window size changed' signal.
			-- Signal ignored by default

	sigwind: INTEGER
			-- Code for `Window change' signal

	sigxcpu: INTEGER
			-- Code for `Cpu time limit exceeded' signal

	sigxfsz: INTEGER
			-- Code for `File size limit exceeded' signal
	
feature -- Status report

	signal: INTEGER
			-- Code of last signal
	
feature -- Status setting

	catch (sig: INTEGER)
			-- Make sure that future occurrences of sig
			-- will be treated as exceptions.
			-- (This is the default for all signals.)
			-- No effect if signal not defined.

	ignore (sig: INTEGER)
			-- Make sure that future occurrences of sig
			-- will be ignored. (This is not the default.)
			-- No effect if signal not defined.

	reset_all_default
			-- Make sure that all exceptions will lead to their
			-- default handling.

	reset_default (sig: INTEGER)
			-- Make sure that exception of code code will lead
			-- to its default action.
		require
			is_defined (sig)
	
invariant

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

end -- class UNIX_SIGNALS