generic type Slim_Character is (<>); type Wide_Character is (<>); type Slim_String is array(System_Index range<>) of Slim_Character; type Wide_String is array(System_Index range<>) of Wide_Character; package H3.Utf8 is --pragma Preelaborate (Utf8); --Invalid_Unicode_Character: exception renames Invalid_Wide_Character; --Invalid_Utf8_Sequence: exception renames Invalid_Slim_Sequence; --Insufficient_Utf8_Sequence: exception renames Insifficient_Slim_Sequence; Invalid_Unicode_Character: exception; Invalid_Utf8_Sequence: exception; Insufficient_Utf8_Sequence: exception; subtype Utf8_Character is Slim_Character; subtype Unicode_Character is Wide_Character; subtype Utf8_String is Slim_String; subtype Unicode_String is Wide_String; subtype Utf8_Sequence is Utf8_String; --type Unicode_Character_Kit is record -- Seq: System_Size; -- sequence length -- Chr: Unicode_Character; --end record; --type Unicode_String_Kit(Length: System_Size) is record -- Seq: System_Size; -- Str: Unicode_String(System_Index'First .. Length); --end record; function From_Unicode_Character (Chr: in Unicode_Character) return Utf8_String; function From_Unicode_String (Str: in Unicode_String) return Utf8_String; --| The Sequence_Length function returns the length of a full UTF8 --| sequence representing a single Unicode character given the first --| sequence byte. It returns 0 if the first byte is invalid. function Sequence_Length (Seq: in Utf8_Character) return System_Size; procedure To_Unicode_Character (Seq: in Utf8_String; Seq_Len: out System_Size; Chr: out Unicode_Character); procedure To_Unicode_String (Seq: in Utf8_String; Seq_Len: out System_Size; Str: out Unicode_String; Str_Len: out System_Size); function To_Unicode_Character (Seq: in Utf8_String) return Unicode_Character; function To_Unicode_String (Seq: in Utf8_String) return Unicode_String; end H3.Utf8;