with Ada.Text_IO; use Ada.Text_IO; with Ada.Strings.Fixed; with Ada.Strings.Unbounded; with Ada.Characters.Latin_1; with Stack; procedure Main is package String_U renames Ada.Strings.Unbounded; package String_F renames Ada.Strings.Fixed; procedure Print_Element (S : in String_U.Unbounded_String) is begin Ada.Text_IO.Put (String_U.To_String (S)); end Print_Element; package String_Stack is new Stack (Size => 100, Elem => String_U.Unbounded_String, Print => Print_Element); Stack : String_Stack.Stack; begin Ada.Text_IO.Put_Line ("Fill Stack"); Stack.Push (String_U.To_Unbounded_String ("string 1")); Stack.Push (String_U.To_Unbounded_String ("string 2")); Ada.Text_IO.Put_Line ("Print_All"); Stack.Print_All; Ada.Text_IO.Put_Line ("Pop First"); Ada.Text_IO.Put_Line (String_U.To_String (Stack.Pop)); Ada.Text_IO.Put_Line ("Pop Second"); Ada.Text_IO.Put_Line (String_U.To_String (Stack.Pop)); Ada.Text_IO.Put_Line ("Pop Third that will generate ASSERT_FAILURE"); Ada.Text_IO.Put_Line (String_U.To_String (Stack.Pop)); end Main;