summaryrefslogtreecommitdiff
path: root/queue.ads
diff options
context:
space:
mode:
Diffstat (limited to 'queue.ads')
-rw-r--r--queue.ads18
1 files changed, 18 insertions, 0 deletions
diff --git a/queue.ads b/queue.ads
new file mode 100644
index 0000000..fdfa484
--- /dev/null
+++ b/queue.ads
@@ -0,0 +1,18 @@
+generic
+ type Item is private;
+package Queue is
+ INIT_CAPACITY: constant Integer := 256;
+
+ type Items_Array is array (Natural range <>) of Item;
+ type Items_Array_Access is access Items_Array;
+
+ type Queue is record
+ Items: Items_Array_Access := null;
+ Start: Integer := 0;
+ Count: Integer := 0;
+ end record;
+
+ procedure Grow(Q: in out Queue);
+ procedure Enqueue(Q: in out Queue; X: Item);
+ function Dequeue(Q: in out Queue; X: out Item) return Boolean;
+end Queue;