:- protocol(monitorp).


	:- info([
		version is 1.0,
		author is 'Paulo Moura',
		date is 2000/7/24,
		comment is 'Monitor protocol.']).


	:- public(monitor_activated/0).

	:- mode(monitor_activated, zero_or_one).

	:- info(monitor_activated/0, [
		comment is 'True if monitor is currently active.']).


	:- public(activate_monitor/0).

	:- mode(activate_monitor, one).

	:- info(activate_monitor/0, [
		comment is 'Activates all spy points and start monitoring.']).


	:- public(suspend_monitor/0).

	:- mode(suspend_monitor, one).

	:- info(suspend_monitor/0, [
		comment is 'Suspends monitoring, deactivating all spy points.']).


	:- public(reset_monitor/0).

	:- mode(reset_monitor, one).

	:- info(reset_monitor/0, [
		comment is 'Resets monitor, deactivating and deleting all spy points.']).


	:- public(spy_point/4).

	:- mode(spy_point(?event, ?object, ?callable, ?object), zero_or_more).

	:- info(spy_point/4, [
		comment is 'Current spy point.',
		argnames is ['Event', 'Object', 'Message', 'Sender']]).


	:- public(set_spy_point/4).

	:- mode(set_spy_point(?event, ?object, ?callable, ?object), one).

	:- info(set_spy_point/4, [
		comment is 'Sets a spy point.',
		argnames is ['Event', 'Object', 'Message', 'Sender']]).


	:- public(del_spy_points/4).

	:- mode(del_spy_points(@event, @object, @callable, @object), one).

	:- info(del_spy_points/4, [
		comment is 'Deletes all matching spy points.',
		argnames is ['Event', 'Object', 'Message', 'Sender']]).


:- end_protocol.