aboutsummaryrefslogtreecommitdiff
path: root/queue.ads
diff options
context:
space:
mode:
Diffstat (limited to 'queue.ads')
-rw-r--r--queue.ads28
1 files changed, 16 insertions, 12 deletions
diff --git a/queue.ads b/queue.ads
index e0da54c..d573490 100644
--- a/queue.ads
+++ b/queue.ads
@@ -1,21 +1,25 @@
generic
- type T_Data is limited private;
+ type T_Data is private;
package Queue is
- type T_Queue is record
- front: T_List;
- back: T_List;
- end record;
-
- type T_List_Cell;
- type T_List is access T_List_Cell;
- type T_List_Cell is record
+ type T_List_Node;
+ type T_List is access all T_List_Node;
+ type T_List_Node is record
data: T_Data;
next: T_List;
end record;
- procedure Enqueue(queue: T_Queue;
- data: T_Data);
- procedure Dequeue(queue: T_Queue);
+ type T_Queue is record
+ front: T_List := null;
+ back: T_List := null;
+ end record;
+
+ procedure Enqueue(queue: in out T_Queue; data: T_Data);
+ procedure Dequeue(queue: in out T_Queue);
+ function Length(queue: T_Queue) return Natural;
+
+private
+
+ function Empty(queue: T_Queue) return Boolean;
end Queue;