2001-06-06 20:40:57 +01:00
|
|
|
|
|
|
|
:- protocol(queuep).
|
|
|
|
|
|
|
|
|
|
|
|
:- info([
|
|
|
|
version is 1.0,
|
2003-02-05 00:15:28 +00:00
|
|
|
author is 'Paulo Moura',
|
2001-06-06 20:40:57 +01:00
|
|
|
date is 2000/7/24,
|
|
|
|
comment is 'Queue protocol.']).
|
|
|
|
|
|
|
|
|
|
|
|
:- public(empty/1).
|
|
|
|
|
|
|
|
:- mode(empty(@queue), zero_or_one).
|
|
|
|
|
|
|
|
:- info(empty/1, [
|
|
|
|
comment is 'True if the queue is empty.',
|
|
|
|
argnames is ['Queue']]).
|
|
|
|
|
|
|
|
|
|
|
|
:- public(head/2).
|
|
|
|
|
|
|
|
:- mode(head(+queue, ?term), zero_or_one).
|
|
|
|
|
|
|
|
:- info(head/2, [
|
|
|
|
comment is 'Unifies Head with the first element of the queue.',
|
|
|
|
argnames is ['Queue', 'Head']]).
|
|
|
|
|
|
|
|
|
|
|
|
:- public(join/3).
|
|
|
|
|
|
|
|
:- mode(join(@term, +queue, -queue), zero_or_one).
|
|
|
|
|
|
|
|
:- info(join/3, [
|
|
|
|
comment is 'Adds the new element at the end of the queue.',
|
|
|
|
argnames is ['Element', 'Queue_in', 'Queue_out']]).
|
|
|
|
|
|
|
|
|
|
|
|
:- public(join_all/3).
|
|
|
|
|
|
|
|
:- mode(join_all(+list, +queue, -queue), zero_or_one).
|
|
|
|
|
|
|
|
:- info(join_all/3, [
|
|
|
|
comment is 'Adds the new elements at the end of the queue. The elements are added in the same order that they appear in the list.',
|
|
|
|
argnames is ['List', 'Queue_in', 'Queue_out']]).
|
|
|
|
|
|
|
|
|
|
|
|
:- public(jump/3).
|
|
|
|
|
|
|
|
:- mode(jump(@term, +queue, -queue), zero_or_one).
|
|
|
|
|
|
|
|
:- info(jump/3, [
|
|
|
|
comment is 'Adds the new element at the front of the queue.',
|
|
|
|
argnames is ['Element', 'Queue_in', 'Queue_out']]).
|
|
|
|
|
|
|
|
|
|
|
|
:- public(jump_all/3).
|
|
|
|
|
|
|
|
:- mode(jump_all(+list, +queue, -queue), zero_or_one).
|
|
|
|
|
|
|
|
:- info(jump_all/3, [
|
|
|
|
comment is 'Adds the new elements at the front of the queue. The elements are added in the same order that they appear in the list.',
|
|
|
|
argnames is ['Element', 'Queue_in', 'Queue_out']]).
|
|
|
|
|
|
|
|
|
|
|
|
:- public(length/2).
|
|
|
|
|
|
|
|
:- mode(length(+queue, ?integer), zero_or_one).
|
|
|
|
|
|
|
|
:- info(length/2,
|
|
|
|
[comment is 'Queue length.',
|
|
|
|
argnames is ['Queue', 'Length']]).
|
|
|
|
|
|
|
|
|
|
|
|
:- public(serve/3).
|
|
|
|
|
|
|
|
:- mode(serve(+queue, ?term, -queue), zero_or_one).
|
|
|
|
|
|
|
|
:- info(serve/3, [
|
|
|
|
comment is 'Removes the first element of the queue for service.',
|
|
|
|
argnames is ['Queue_in', 'Head', 'Queue_out']]).
|
|
|
|
|
|
|
|
|
|
|
|
:- public(as_list/2).
|
|
|
|
|
|
|
|
:- mode(as_list(+queue, -list), one).
|
|
|
|
|
|
|
|
:- info(as_list/2,
|
|
|
|
[comment is 'Converts a queue to a list.',
|
|
|
|
argnames is ['Queue', 'List']]).
|
|
|
|
|
|
|
|
|
|
|
|
:- end_protocol.
|