summaryrefslogtreecommitdiff
path: root/queue.ads
blob: fdfa4841909431ec01f8f302a967d1b4b82d435a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;