diff options
author | rexim <reximkut@gmail.com> | 2024-03-17 00:07:38 +0700 |
---|---|---|
committer | rexim <reximkut@gmail.com> | 2024-03-17 00:07:38 +0700 |
commit | f447e5e6b43326645a4990f2039ba728581c6f06 (patch) | |
tree | b26d9d131270b0022ce45d689bb2ec870364053a /queue.ads | |
parent | 6658d0649e83f3dd4ec863abadc7c187a4f66276 (diff) |
Implement custom ring buffer style queue
Diffstat (limited to 'queue.ads')
-rw-r--r-- | queue.ads | 18 |
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; |