-- This is the implementation for an integer stack abstract data type.
package body IntStackPkg is
function IsEmpty (S : StackType) return Boolean is
begin
return S.TheTop = 0;
end IsEmpty;
function IsFull (S : StackType) return Boolean is
begin
return S.TheTop = MaxSize;
end IsFull;
function Top (S : StackType) return Integer is
begin
return S.Elements(S.TheTop);
end Top;
procedure Push (I : Integer; S : in out StackType) is
begin
if IsFull(S) then
raise Stack_Is_Full;
else
S.TheTop := S.TheTop + 1;
S.Elements(S.TheTop) := I;
end if;
end Push;
procedure Pop (S : in out StackType) is
begin
if IsEmpty(S) then
raise Stack_Is_Empty;
else
S.TheTop := S.TheTop - 1;
end if;
end Pop;
end IntStackPkg;