Ada Generic Stack
-- -- This is a generalized stack implemented using a generic package. The -- type and size of the stack are parameters of the generic. -- generic -- These are parameters to the package, including a type. Max_Size: Positive; -- The maximum size of the stack. type Item_Type is private; -- The type of items in the stack. This must -- be definite, and the private means that this -- package may not examine its internals. package G_Stack is -- Here is the stack type itself. type Gen_Stack is private; -- Here are the exceptions. Stack_Underflow, Stack_Overflow: exception; -- All the public stack operations. procedure Push(S: in out Gen_Stack; I: Item_Type); procedure Pop(S: in out Gen_Stack; I: out Item_Type); function Top(S: Gen_Stack) return Item_Type; function Empty(S: Gen_Stack) return Boolean; function Full(S: Gen_Stack) return Boolean; procedure Clean(S: in out Gen_Stack); private -- The items here cannot be accessed by clients of the package. type Stack_Data_Type is array(1..Max_Size) of Item_Type; type Gen_Stack is record Size: Integer := 0; Data: Stack_Data_Type; end record; end G_Stack;