with Varying_String_G;

package Generator_Of_V_Strings_And_Dyn_Values is
    package Var_String is new Varying_String_G (10);
    use Var_String;
    type Value_Type is limited private;
    type Item_Type is
        record
            Key : V_String;
            Val : Value_Type;
        end record;
    type Vector_Type is array (Positive range <>) of Item_Type;
    procedure Generate (Vector : in out Vector_Type);
    procedure Generate2 (Vector : in out Vector_Type);
    procedure Generate_Ascending (Vector : in out Vector_Type);
    procedure Generate_Descending (Vector : in out Vector_Type);

    procedure Assign (Dest : in out V_String; Source : in V_String);
    procedure Assign (Dest : in out String; Source : in String);
    procedure Assign (Dest : in out Value_Type; Source : in Value_Type);
    procedure Destroy (Val : in out Value_Type);
    function Equals (Left, Right : Value_Type) return Boolean;
    function Equals (Left, Right : String) return Boolean;
    function Less (Left, Right : String) return Boolean;

private
    type Value_Type is access Integer;
end Generator_Of_V_Strings_And_Dyn_Values;