ADA :: 1. Beadandó

Valósítsd meg a String_Type típust és a hozzá tartozó műveleteket a következő módon:

A String_Type típusodat helyezd el egy String_Types nevu csomagban a muveleteivel együtt.
A típus legyen átlátszatlan diszkriminánsos rekord. Keress megoldást a String_Type típus rekordon belüli ábrázolására.
Definiálj egy String_Type-okat tartalmazó tömböt (String_Type_Array), mely a Split függvény visszatérési értékének a típusa.

Segítség: Ha elakadnál egy metódus értelmezésében, a nézzél szét a Java API doc-ban: http://download.oracle.com/javase/6/docs/api/java/lang/String.html

A következő műveleteket kell implementálnod.

				function Init(S : String) return String_Type; -- inicializál, olyan, mint egy konstruktor.
				function Char_At(S : String_Type; i : Positive) return Character;
				function Compare_To(S1 : String_Type; S2 : String_Type) return Boolean;
				function "+"(S1 : String_Type; S2 : String_Type) return String_Type;  -- konkatenáció!
				function Contains(S : String_Type; Sub : String_Type) return Boolean;
				function Contains(S : String_Type; Str : String) return Boolean;
				function Ends_With(S : String_Type; Ending : String_Type) return Boolean;
				function Ends_With(S : String_Type; Ending : String) return Boolean;
				function Index_Of(S : String_Type; C : Character) return Positive;
				function Index_Of(S : String_Type; C : Character; I : Positive) return Positive;  -- I-dik karaktertől nézze!
				function Index_Of(S : String_Type; Str : String) return Positive; -- substringet keres!
				function Last_Index_Of(S : String_Type; C : Character) return Positive;
				function Last_Index_Of(S : String_Type; Str : String) return Positive;
				function Length(S : String_Type) return Positive;
				procedure Replace(S : in out String_Type; Cold : Character; Cnew : Character);
				function Split(S : String_Type; Delim : Character) return String_Type_Array;
				function Starts_With(S : String_Type; Ending : String_Type) return Boolean;
				function Starts_With(S : String_Type; Ending : String) return Boolean;
				function Substring(S : String_Type; Starts : Positive) return String_Type;
				function SubString(S : String_Type; Starts : Positive; Ends : Positive) return String_Type;
				function To_Sting(S : String_Type) return String;