From f447e5e6b43326645a4990f2039ba728581c6f06 Mon Sep 17 00:00:00 2001 From: rexim Date: Sun, 17 Mar 2024 00:07:38 +0700 Subject: Implement custom ring buffer style queue --- queue.ads | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 queue.ads (limited to 'queue.ads') 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; -- cgit v1.2.3