generic

    type Potential_Operator_Count is range <>;
    type Potential_Operand_Count is range <>;

package Halstead_Potential_Program_Volume is

    --========================================================================
    -- Halstead V* = (n1* + n2*) * (log(n1* + n2*) / log 2)
    --========================================================================

    type Result is digits 6;
    procedure Of_Task (V_Entry_Total : in Result;
                       Number_Of_Entries : in Natural;
                       V_Star : out Result);
    -- to be used only for tasks which have at least ONE entry.

    procedure Of_Other_Program_Unit (N1_Star : in Potential_Operator_Count;
                                     N2_Star : in Potential_Operand_Count;
                                     V_Star : out Result);
    -- to be used for program units other than tasks with more
    -- than one entry.

end Halstead_Potential_Program_Volume;