-- This is the specification for an integer stack abstract data type.
package IntStackPkg is
type StackType is limited private;
Stack_Is_Empty, Stack_Is_Full : Exception;
function IsEmpty (S : StackType) return Boolean;
function IsFull (S : StackType) return Boolean;
procedure Push (I : Integer; S : in out StackType);
procedure Pop (S : in out StackType);
function Top (S : StackType) return Integer;
private
MaxSize : Constant Integer := 1_000;
type ElementArray is array(1 .. MaxSize) of Integer;
type StackType is record
Elements : ElementArray;
TheTop : Integer range 0 .. MaxSize := 0;
end record;
end IntStackPkg;