ADA :: 3. Beadandó

Alakítsátok át a második feladatot az alábbiak szerint: ( Sablonok részben maradnak! :] )

A String_Type típusod továbbra is átlátszatlan típus. Származtasd a Limited_Controlled típusból és implementáld a Finalize és az Initialize metódusokat.
A String_Type belső ábrázolása láncolt lista legyen mutató típusok felhasználásával.
A lista egy láncszeme legyen egy rekord mely tartalmaz egy mutatót a következő elemre illetve egy érték mezőt, mely Char típusú.
Használd az Unchecked_Deallocation sabloneljárást a láncszemek által lefoglalt memóriaterület felszabadításához.

Sablonparaméterek legyenek a következők:

Char
Egy felsorolásos típus, mely a karakterek reprezentálására alkalmas.
"="
Egy operátor (függvény), mely összehasonlít két Char típust. Alkalmazd ezt minden olyan helyen, ahol tagonkénti összehasonlítást kell végezned.
Legyen a csomagunk belsejében egy sablonalprogram (Get_Substring), melynek sablonparamétere egy "<" operátor (függvény), mely eldönti, hogy két Char típusú változó közül melyik a nagyobb, alprogramparamétere egy String_Type és egy Char változó, visszatérési értéke egy String_Type.
Visszatérési értéke a paraméterül kapott String_Type változó azon Char típusú elemeinek a konkatenációja, melyek nagyobbak a paraméterben kapott Char típusú értéknél.

Példányosítsd a főprogramodban (main.adb) a sabloncsomagot és mutasd meg a benne lévő metódusok működését (Compare_To függvényt is!).
A csomagod neve továbbra is String_Types.