[Ada] AI12-0144 Make Discrete_Random more flexible
authorArnaud Charlet <charlet@adacore.com>
Fri, 31 Jan 2020 10:47:01 +0000 (05:47 -0500)
committerPierre-Marie de Rodat <derodat@adacore.com>
Fri, 5 Jun 2020 12:17:38 +0000 (08:17 -0400)
2020-06-05  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* libgnat/a-nudira.ads, libgnat/a-nudira.adb (Random): New
function.

gcc/ada/libgnat/a-nudira.adb
gcc/ada/libgnat/a-nudira.ads

index 77f81b448568ee0d7e2f04953bf81e577308aa4e..e18403cf1406932ea8da89f9a3b87a47f39dca47 100644 (file)
@@ -56,6 +56,17 @@ is
       return Random (SRN.Generator (Gen));
    end Random;
 
+   function Random
+     (Gen   : Generator;
+      First : Result_Subtype;
+      Last  : Result_Subtype) return Result_Subtype
+   is
+      subtype Local_Subtype is Result_Subtype range First .. Last;
+      function Random is new SRN.Random_Discrete (Local_Subtype, First);
+   begin
+      return Random (SRN.Generator (Gen));
+   end Random;
+
    -----------
    -- Reset --
    -----------
index 64342dd3b14d8f52e44d54b6e937ffefaff7c762..35b7dc62b50d1d53f1948e3ab39b0f4b624f695f 100644 (file)
@@ -51,6 +51,12 @@ is
 
    function Random (Gen : Generator) return Result_Subtype;
 
+   function Random
+     (Gen   : Generator;
+      First : Result_Subtype;
+      Last  : Result_Subtype) return Result_Subtype
+     with Post => Random'Result in First .. Last;
+
    procedure Reset (Gen : Generator; Initiator : Integer);
    procedure Reset (Gen : Generator);